斯坦福机器学习笔记-逻辑回归

逻辑回归

上一节我们知道,使用线性回归来处理 0/1 分类问题总是困难重重的,因此,人们定义了逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1)非(0)

Sigmoid预测函数

在逻辑回归中,定义预测函数为:
hθ(x)=g(z)h_θ(x)=g(z)

其中, z=θTxz=θ^Tx 是分类边界,且 g(z)=11+ezg(z)=\frac 1{1+e^{−z}}

g(z)g(z) 称之为 Sigmoid FunctionSigmoid\ Function,亦称 Logic FunctionLogic\ Function,其函数图像如下:
斯坦福机器学习笔记-逻辑回归
可以看到,预测函数 hθ(x)h_θ(x) 被很好地限制在了 0、1 之间,并且,sigmoidsigmoid 是一个非常好的阈值函数:阈值为 0.5 ,大于 0.5 为 1 类,反之为 0 类。函数曲线过渡光滑自然,关于 0.5 中心对称也极具美感。

决策边界

决策边界,顾名思义,就是用来划清界限的边界,边界的形态可以不定,可以是点,可以是线,也可以是平面。Andrew Ng 在公开课中强调:“决策边界是预测函数 hθ(x)hθ(x) 的属性,而不是训练集属性”,这是因为能作出“划清”类间界限的只有 hθ(x)hθ(x) ,而训练集只是用来训练和调节参数的。

  • 线性决策边界:
    hθ(x)=g(θ0x0+θ1x1+θ2x2)h_θ(x)=g(θ_0x_0+θ_1x_1+θ_2x_2)

斯坦福机器学习笔记-逻辑回归

  • 非线性决策边界:
    hθ(x)=g(θ0x0+θ1x1+θ2x2+θ3x12+θ4x22)h_θ(x)=g(θ_0x_0+θ_1x_1+θ_2x_2+θ_3x^2_1+θ_4x^2_2)

斯坦福机器学习笔记-逻辑回归

预测代价函数

对于分类任务来说,我们就是要反复调节参数 θθ ,亦即反复转动决策边界来作出更精确的预测。假定我们有代价函数 J(θ)J(θ) ,其用来评估某个 θθ 值时的预测精度,当找到代价函数的最小值时,就能作出最准确的预测。通常,代价函数具备越少的极小值,就越容易找到其最小值,也就越容易达到最准确的预测。

下面两幅图中,左图这样犬牙差互的代价曲线(非凸函数)显然会使我们在做梯度下降的时候陷入迷茫,任何一个极小值都有可能被错认为最小值,但无法获得最优预测精度。但在右图的代价曲线中,就像滑梯一样,我们就很容易达到最小值:
斯坦福机器学习笔记-逻辑回归
逻辑回归定义的代价函数为:
J(θ)=1mi=1mCost(hθ(x(i)),y(i))J(θ)=\frac1m∑_{i=1}^mCost(h_θ(x^{(i)}),y^{(i)})

为保证代价函数呈凸形曲线,则定义Cost(hθ(x(i)),y(i))Cost(h_θ(x^{(i)}),y^{(i)})
Cost(hθ(x),y)={log(hθ(x)), if y=1log(1hθ(x)), if y=0Cost(hθ(x),y)=\begin{cases} −log(hθ(x)), & \ if\ y=1\\−log(1−hθ(x)), &\ if\ y=0\end{cases}

该函数等价于:
Cost(hθ(x),y)=y log(hθ(x))(1y) log(1hθ(x))Cost(h_θ(x),y)=−y\ log(h_θ(x))−(1−y)\ log(1−h_θ(x))=(log(g(Xθ))Ty+(log(1g(Xθ))T(1y)=(log(g(Xθ))^Ty+(log(1−g(Xθ))^T(1−y)

代价函数随预测值 hθ(x)h_θ(x) 的变化如下:
斯坦福机器学习笔记-逻辑回归
斯坦福机器学习笔记-逻辑回归
可以看到,当 hθ(x)yhθ(x)≈y 时, cost0cost≈0 ,预测正确。

最小化代价函数

与线性回归一样,也使用梯度下降法来最小化代价函数:

  • 批量梯度下降法

Repeatuntilconvergence重复直到收敛(Repeat until convergence):

for i=1 to m:for\ i=1\ to\ m:

for j=1 to n:for\ j=1\ to\ n:

θj:=θj+1mi=1m(yihθ(x(i)))xj(i)θ_j:=θ_j+\frac 1m∑_{i=1}^m(y_i−h_θ(x^{(i)}))x^{(i)}_j

通过矩阵型表示
Repeatuntilconvergence:重复直到收敛(Repeat until convergence):

θ:=θ+α1mXT(yg(Xθ))θ:=θ+α∗\frac1mX^T(y−g(Xθ))

  • 随机梯度下降法
    Repeatuntilconvergence:重复直到收敛(Repeat until convergence):

for i=1 to m:for\ i=1\ to\ m:

θ:=θ+α(yihθ(x(i)))xj(i)θ:=θ+α∗(y_i−h_θ(x^{(i)}))x^{(i)}_j