吴恩达 【机器学习】第七章 逻辑回归Logistic Regression

7.1 分类Classification

  • 预测离散的变量
  • 举例证明线性回归不能很好地处理分类问题
  • 逻辑回归(Logistic Regression)是解决分类(Classification)问题的一种算法

7.2 假设函数

  • 逻辑回归,该模型的输出变量范围始终在0和1之间。
  • 逻辑回归模型的假设是:
    hθ(x)=g(θTx)h_\theta \left( x \right)=g\left(\theta^{T}x \right)
    g(z)=11+ezg\left( z \right)=\frac{1}{1+{{e}^{-z}}}
  • 其中:
    1. XX 代表特征向量
    2. gg 代表逻辑函数(logistic function)是一个常用的逻辑函数,这里用Sigmoid函数(Sigmoid function),公式为: g(z)=11+ezg\left( z \right)=\frac{1}{1+{{e}^{-z}}}

python代码实现:

import numpy as np
    
def sigmoid(z):
   return 1 / (1 + np.exp(-z))

该函数的图像为:
吴恩达 【机器学习】第七章 Logistic回归

  • 对模型的理解:
    hθ(x)=g(θTx)h_\theta \left( x \right)=g\left(\theta^{T}x \right)
    g(z)=11+ezg\left( z \right)=\frac{1}{1+{{e}^{-z}}}

  • hθ(x)h_\theta \left( x \right)的作用是:对于给定的输入变量,根据选择的参数计算输出变量=1的可能性(estimated probablity)即hθ(x)=P(y=1x;θ)h_\theta \left( x \right)=P\left( y=1|x;\theta \right)
    例如,如果对于给定的xx,通过已经确定的参数计算得出hθ(x)=0.7h_\theta \left( x \right)=0.7,则表示有70%的几率yy为正向类,相应地yy为负向类的几率为1-0.7=0.3。

7.3 决策界限Decision Boundary

  • 决策边界是由参数θ\theta决定的,而不是由训练集决定的
  • 训练集是用来拟合(fit)参数θ\theta
  • 举例:
    吴恩达 【机器学习】第七章 Logistic回归
    吴恩达 【机器学习】第七章 Logistic回归
  • 我们可以用非常复杂的模型来适应非常复杂形状的判定边界。

7.4 代价函数

  • 如果用线性回归里用的差平方作为cost函数,再加上非线性的sigmiod函数,会使得最终函数非凸(non-convex),有很多局部最小值,梯度下降很难找到全局最优解吴恩达 【机器学习】第七章 Logistic回归
  • 线性回归的代价函数为:
    J(θ)=1mi=1m12(hθ(x(i))y(i))2J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{1}{2}{{\left( {h_\theta}\left({x}^{\left( i \right)} \right)-{y}^{\left( i \right)} \right)}^{2}}}
  • 我们重新定义逻辑回归的代价函数为:
    J(θ)=1mi=1mCost(hθ(x(i)),y(i))J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{{Cost}\left( {h_\theta}\left( {x}^{\left( i \right)} \right),{y}^{\left( i \right)} \right)}
  • 其中hθ(x){h_\theta}\left( x \right)Cost(hθ(x),y)Cost\left( {h_\theta}\left( x \right),y \right)之间的关系如下图所示:
    吴恩达 【机器学习】第七章 Logistic回归
  • 这样构建的Cost(hθ(x),y)Cost\left( {h_\theta}\left( x \right),y \right)函数的特点是:
    1. 当实际的 y=1y=1hθ(x){h_\theta}\left( x \right)也为 1 时误差为 0,
      y=1y=1hθ(x){h_\theta}\left( x \right)不为1时误差随着hθ(x){h_\theta}\left( x \right)变小而变大;
    2. 当实际的 y=0y=0hθ(x){h_\theta}\left( x \right)也为 0 时代价为 0,
      y=0y=0hθ(x){h_\theta}\left( x \right)不为 0时误差随着 hθ(x){h_\theta}\left( x \right)的变大而变大。
  • 将构建的 Cost(hθ(x),y)Cost\left( {h_\theta}\left( x \right),y \right)简化如下:
    Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))Cost\left( {h_\theta}\left( x \right),y \right)=-y\times log\left( {h_\theta}\left( x \right) \right)-(1-y)\times log\left( 1-{h_\theta}\left( x \right) \right)
    吴恩达 【机器学习】第七章 Logistic回归
  • 代入代价函数得到:
    J(θ)=1mi=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))]J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}
    即:J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}

Python代码实现:

import numpy as np
    
def cost(theta, X, y):    
	theta = np.matrix(theta)
	X = np.matrix(X)
	y = np.matrix(y)
	first = np.multiply(-y, np.log(sigmoid(X* theta.T)))
	second = np.multiply((1 - y), np.log(1 - sigmoid(X* theta.T)))
	return np.sum(first - second) / (len(X))

7.5 简化代价函数和梯度下降

  • 简化代价函数
    吴恩达 【机器学习】第七章 Logistic回归
    吴恩达 【机器学习】第七章 Logistic回归
  • 梯度下降
    吴恩达 【机器学习】第七章 Logistic回归

7.6 高级优化

用来使代价函数最小化的高级算法

  • 梯度下降
  • 共轭梯度法 (Conjugate Gradient)
  • BFGS (变尺度法)
  • L-BFGS (限制变尺度法)
    吴恩达 【机器学习】第七章 Logistic回归

7.7 多类别分类问题:一对多

  • 举例
    吴恩达 【机器学习】第七章 Logistic回归
  • 对比
    吴恩达 【机器学习】第七章 Logistic回归
  • 做法:"一对余"方法
  1. 我们将多个类中的一个类标记为正向类(y=1y=1),然后将其他所有类都标记为负向类,这个模型记作hθ(1)(x)h_\theta^{\left( 1 \right)}\left( x \right)
  2. 接着,类似地第我们选择另一个类标记为正向类(y=2y=2),再将其它类都标记为负向类,将这个模型记作 hθ(2)(x)h_\theta^{\left( 2 \right)}\left( x \right),依此类推。
  3. 然后,我们得到一系列的模型简记为: hθ(i)(x)=p(y=ix;θ)h_\theta^{\left( i \right)}\left( x \right)=p\left( y=i|x;\theta \right)其中:i=(1,2,3....k)i=\left( 1,2,3....k \right)
  4. 最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。即:maxihθ(i)(x)\mathop{\max}\limits_i h_\theta^{\left( i \right)}\left( x \right)
    吴恩达 【机器学习】第七章 Logistic回归

相关文章:

  • 2021-07-08
  • 2021-06-13
  • 2021-05-30
  • 2021-04-19
  • 2021-11-01
  • 2022-12-23
猜你喜欢
  • 2022-01-02
  • 2021-06-03
  • 2021-07-31
  • 2021-05-08
  • 2021-09-21
  • 2021-09-13
  • 2021-12-12
相关资源
相似解决方案