逻辑回归

现在,我们从回归问题转换到了分类问题。不要被“逻辑回归”这个名字所迷惑,取这个名字是由于一些历史的原因,实则并不是一个回归问题,而是一个分类问题。

以往我们的输出y的值常常是一个连续的范围,
而在二元分类中,取而代之的是0和1,即y∈{0,1}。
其中,0通常表示“否定类”,1表示“肯定类”,但你可以自由地给它分配任何表示。

由于我们现在只做两个类,所以也被称为“二元分类问题”。
解决这个问题,一种方法是使用线性回归,并将所有大于0.5的预测值映射为1,将小于0.5的所有预测值映射为0。显然此方法效果不佳,因为分类实际上不是线性函数。

假设函数

我们的假设函数需要满足:$0≤h_θ(x)≤1$

新的假设函数使用“Sigmoid函数”,也称为“Logistic逻辑函数”:

$h_θ(x)=g(θ^Tx)$
$z=θ^Tx$
$g(z)=\frac{1}{1+e-z}$


这里显示的函数g(z)将任何实数映射到(0,1)区间,
使得它可用于将任意值函数转换为更适合分类的函数。
你可以线上感受一下:sigmoid函数在线交互式绘图

可以这样理解:
你想将范围限制在0和1之间,可以从旧的假设函数$\theta^Tx$(线性回归)开始, 然后将其代入Logistic函数。
$h_\theta$将会给出输出是1的概率。比如$h_\theta=0.7$,那么我们的输出为1的概率为70%。
$h_θ(x)=P(y=1|x;θ)=1-P(y=0|x;θ)$
$P(y=0|x;θ)+P(y=1|x;θ)=1$

显然,输出为0的概率则等于1-输出为1的概率(比如,如果1的概率为0.7,那么输出为0的概率则为0.3)。

决策边界

为了得到离散的0或1分类,我们可以如下转换假设函数的输出:
$h_θ(x)≥0.5→y=1$
$h_θ(x)<0.5→y=0$

当你的输入≥0时,logistic函数输出将会≥0.5。
即$g(z)≥0.5$当$z≥0$

总结一下:
$z=0,e0=1⇒g(z)=1/2$
$z→∞,e^{-∞}→0⇒g(z)=1$
$z→-∞,e^∞→∞⇒g(z)=0$

所以说,当我们的输入为$\theta ^TX$,那么意味着:
$h_θ(x)=g(θ^Tx)≥0.5$当$θ^Tx≥0$

换言之:
$θ^Tx≥0⇒y=1$
$θ^Tx<0⇒y=0$

而决策边界指的时一条线,这条线可以将y=0和y=1划分为两个区域。
这条线由我们的假设函数产生。(与线性回归不同,线性回归中假设函数试图构造一条线将数据连接起来)

举个例子:

$θ=\begin{bmatrix}5\\-1\\0\end{bmatrix}$
$y=1$若$ 5+(-1)x_1+0x_2≥0$
$5-x_1≥0$
$-x_1≥-5$
$x_1≤5$

在这个例子中,我们的决策边界是$x_1=5$这条线,线的左边y=1,线的右边y=0。

需要重申的是,sigmoid函数的输入并不一定要是线性的(比如:$\theta ^T X$),也可以是一个圆(比如:$z=θ_0+θ_1x^2_1+θ_2x^2_2$),或者是任意的形状。

成本函数

我们不能再使用之前线性回归的成本函数,因为Logistic函数会使得输出呈波浪形,导致许多局部最优。换句话说,它不是一个凸函数。

新的成本函数如下:

$J(θ)=\frac{1}{m}\sum_{i=1}^mCost(h_θ(x^(i)),y^(i))$
$Cost(h_θ(x),y)=-log(h_θ(x)) $若$ y = 1$
$Cost(h_θ(x),y)=-log(1-h_θ(x))$若$ y = 0$



可以看出,y与假设函数的预测值越远,成本函数输出就越大。如果y等于预测值,那么成本函数输出则为0:
$Cost(h_θ(x),y)=0 $若$ h_θ(x)=y$
$Cost(h_θ(x),y)→∞ $若$ y=0 $且$ h_θ(x)→1$
$Cost(h_θ(x),y)→∞ $若$ y=1 $且$ h_θ(x)→0$

可以这样通俗的理解:

  • 如果我们的正确答案’y’为0,那么如果我们的假设函数也输出0,则成本函数输出将为0.如果我们的假设接近1,则成本函数将接近无穷大。
  • 如果我们的正确答案’y’是1,那么如果我们的假设函数输出1,则成本函数输出将为0.如果我们的假设接近0,则成本函数将接近无穷大。

用这种方式编写成本函数可以保证J(θ)对于逻辑回归是凸函数(只有一个最优值)。

简化成本函数和梯度下降

我们可以把成本函数的两种情况简化成一种:
$Cost(h_θ(x),y)=-ylog(h_θ(x))-(1-y)log(1-h_θ(x))$
把整个成本函数写全:
$J(θ)=-\frac{1}{m}\sum_{i=1}^m[y
^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))]$

向量形式:
$h = g(X\theta)$
$J(\theta) = \frac{1}{m}⋅(-y^Tlog(h)-(1-y)^Tlog(1-h))$

梯度下降

梯度下降的总体形式可以这样概括:
重复{
$θ_j := θ_j - α\frac{∂}{∂θ_j} J(θ)$
}
通过计算,我们可以得到其梯度下降形式和线性回归中梯度下降的形式时一样的(同样的,我们也必须同时地更新所有的参数):
重复直到收敛: {
$θ_j := θ_j $ -$ α\frac{1}{m}\sum_{i=1}^m((h_θ(x^{(i)}) - y^{i})x^{(i)}_j)$
}
类似于线性回归
$∇J(θ)$的向量化版本如下:
$∇J(θ)= \frac{1}{m}⋅X^T⋅(g(X⋅θ)−\vec y)$

高级优化

“共轭梯度下降”,“BFGS”和“L-BFGS”这些方法都比较复杂,可以用来代替梯度下降来更快速地优化参数$\theta$。这些方法都有现成的库可以用,无需自己实现。

多元分类:one-vs-all

多元分类指的是将数据分为两类以上。我们将扩展输出类别的定义,使得y = {0,1 … n},而不是y = {0,1}。

在这种情况下,我们将问题划分为n+1个(+1,因为索引从0开始)二元分类问题;在每一个二元分类问题中,我们都预测’y’是我们其中一个类的概率。
$y∈{0,1…n}$
$h^{(0)}_θ(x)=P(y=0|x;θ)$

$h^{(1)}_θ=P(y=1|x;θ)$

$⋯$
$h^{(n)}_θ=P(y=n|x;θ)$
$prediction=max_i(h^{(i)}_θ(x))$

主要方法:
首先选择一个类别,然后把所有其他类都集中到另一个类别中。反复这样做,对每个二元分类问题​​应用二元逻辑回归,然后使用返回最高值作为我们的预测。

分享到