大家的人工智能——Logistic回归

在《大家的人工智能——线性回归》中,什么是拟合,代价函数,梯度下降,相信大家已经对这些基本概念有所了解。线性回归的应用场景是输出为连续的数值,比如下个月的房价多少,明天的气温多少。而在机器学习中还有一类任务,它的输出是离散的,比如明天他会不会去游泳(会或不会),这是狗还是猫,这就是分类任务,而Logistic回归就是处理这种分类任务的,不要看他的名字里面有“回归”两个字,但是它其实是个分类算法。它取名Logistic回归主要是因为是从线性回归转变而来的。

二分类

假设我们有一些数据点,我们使用一条直线对这些点进行拟合,这条线称为最佳拟合直线,这个拟合过程称为回归。利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。如下图:

在这里插入图片描述

我们想要得到一个函数,能够接收所有的输入然后预测出类别。例如在两个类的情况下,函数输出0或1。该函数称为海维塞德阶跃函数(Heaviside step function),或者直接称为单位阶跃函数。但是海维塞德阶跃函数的问题在于:该函数在跳跃点上从0瞬间跳跃到1,这个瞬间跳跃过程有时很难处理。不过另外一个函数也有类似的性质,而且数学上更容易处理,它就是Sigmoid函数,具体公式如下:

σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1
Sigmoid函数输入记为z,公式为:
z = w 0 x 0 + w 1 x 1 + w 2 x 2 + ⋅ ⋅ ⋅ + w n x n z = w_0x_0 + w_1x_1 + w_2x_2 + ··· + w_nx_n z=w0x0+w1x1+w2x2++wnxn
也可以写成向量的形式:
Z = W T X Z = W^TX Z=WTX

Sigmoid函数的形状如下:

在这里插入图片描述

Sigmoid函数处处可导,其导数为:
σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma^{'}(x) = \sigma(x)(1 - \sigma(x)) σ(x)=σ(x)(1σ(x))
如下图:
在这里插入图片描述

回归函数

我们使用之前线性回归中的参数命名来改写一下上面的方程来得到Logistic回归函数:
h Θ ( X ) = 1 1 + e − Θ T X h_{\Theta}(X) = \frac{1}{1 + e^{-\Theta^TX}} hΘ(X)=1+eΘTX1

我们可以看到上面分母中的 Θ T X \Theta^TX ΘTX 与线性回归中的那条“直线”形式一模一样,在Logistic回归中就是要找到一条这样的“直线”进行分类。而上面的h(x)表示属于类别1(二分类)的概率:

h Θ ( X ) = P ( y = 1 ∣ X ; Θ ) h_{\Theta}(X) = P(y = 1 |X;\Theta) hΘ(X)=P(y=1X;Θ)

代价函数

我们现在知道在线性回归中的代价函数是什么样的,但是如果将它作为Logistic回归中的代价函数的话,那么它将会是一个非凸函数,会有很多局部最优值,这是因为使用了非线性的sigmoid:

在这里插入图片描述

因此在Logistic回归中,我们将使用下面的代价函数:
C o s t ( h Θ ( X ) , y ) = { − l o g ( h Θ ( X ) ) ,   i f   y = 1 − l o g ( 1 − h Θ ( X ) ) ,   i f   y = 0 Cost(h_{\Theta}(X), y) = \left\{ \begin{aligned} -log(h_{\Theta}(X)), \space if \space y = 1 \\ -log(1 - h_{\Theta}(X)) , \space if \space y = 0 \end{aligned}\right. Cost(hΘ(X),y)={log(hΘ(X)), if y=1log(1hΘ(X)), if y=0
那么上面的代价函数为什么是凸函数呢,我们先来看看y=1的情况。

当y=1时,代价函数为-log(h(x)):

在这里插入图片描述

那么为什么是这样的形状呢,我们可以看看log(z)的样子:

在这里插入图片描述

红色曲线[0,1]的区间就是y=1时的代价函数。

当y=0时,代价函数为-log(1-h(x)):

在这里插入图片描述

把上面的代价函数合起来:
C o s t ( h Θ ( X ) , y ) = − [ y l o g ( h Θ ( X ) ) + ( 1 − y ) l o g ( 1 − h Θ ( X ) ) ] Cost(h_{\Theta}(X), y) = -[ylog(h_{\Theta}(X)) + (1-y)log(1-h_{\Theta}(X))] Cost(hΘ(X),y)=[ylog(hΘ(X))+(1y)log(1hΘ(X))]
那么在所有数据上,代价函数为:
J ( Θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h Θ ( X ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h Θ ( X ( i ) ) ) ] J(\Theta) = - \frac{1}{m} \sum_{i = 1}^m [y^{(i)}log(h_{\Theta}(X^{(i)})) + (1-y^{(i)})log(1-h_{\Theta}(X^{(i)}))] J(Θ)=m1i=1m[y(i)log(hΘ(X(i)))+(1y(i))log(1hΘ(X(i)))]

接下来按照线性回归中提到的方式最小化代价函数即可。

多分类

上面讲述了二分类的情况,现在推广到多分类。但是对于多分类的情况,需要对上面的Logistic进行改进。

  1. 针对每个类别都建立一个二分类器。
  2. 修改logistic回归的损失函数,让其考虑每个样本标记的损失,这种方法叫做softmax回归。

回顾一下上面回归函数中,一个样本属于某个类的概率:
h Θ ( X ) = P ( y = k ∣ X ; Θ ) h_{\Theta}(X) = P(y = k |X;\Theta) hΘ(X)=P(y=kX;Θ)

将它展开:
h θ ( x ( i ) ) = [ p ( y ( i ) = 1 ∣ x ( i ) ; θ ) p ( y ( i ) = 2 ∣ x ( i ) ; θ ) ⋮ p ( y ( i ) = k ∣ x ( i ) ; θ ) ] = 1 ∑ c = 1 k e θ c T x ( i ) [ e θ 1 T x ( i ) e θ 2 T x ( i ) ⋮ e θ k T x ( i ) ] h_{\theta}(x^{(i)}) = \left[ \begin{matrix} p(y^{(i)} = 1 |x^{(i)};\theta) \\ p(y^{(i)} = 2 |x^{(i)};\theta) \\ ⋮ \\ p(y^{(i)} = k |x^{(i)};\theta) \end{matrix} \right] = \frac{1}{\sum_{c=1}^ke^{\theta_c^Tx^{(i)}}} \left[ \begin{matrix} e^{\theta_1^Tx^{(i)}} \\ e^{\theta_2^Tx^{(i)}} \\ ⋮ \\ e^{\theta_k^Tx^{(i)}} \end{matrix} \right] hθ(x(i))=p(y(i)=1x(i);θ)p(y(i)=2x(i);θ)p(y(i)=kx(i);θ)=c=1keθcTx(i)1eθ1Tx(i)eθ2Tx(i)eθkTx(i)

softmax回归代价函数

知道了h(x)的形式之后,我们可以写出它的代价函数:
J ( θ ) = − ∑ i = 1 m ∑ c = 1 k s i g n ( y ( i ) = c ) l o g p ( y ( i ) = c ∣ x ( i ) , θ ) = − ∑ i = 1 m ∑ c = 1 k s i g n ( y ( i ) = c ) l o g e θ c T x ( i ) ∑ l = 1 k e θ l T x ( i ) J(\theta) = -\sum_{i=1}^m\sum_{c=1}^ksign(y^{(i)}=c)logp(y^{(i)} = c|x^{(i)}, \theta) = -\sum_{i=1}^m\sum_{c=1}^ksign(y^{(i)} = c)log\frac{e^{\theta_c^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}} J(θ)=i=1mc=1ksign(y(i)=c)logp(y(i)=cx(i),θ)=i=1mc=1ksign(y(i)=c)logl=1keθlTx(i)eθcTx(i)
其中,如果y=c为真,则sign(y=c)=1,否则为0。

欢迎爱好人工智能的小伙伴关注公众号:机器工匠,不定时发布一些关于人工智能的技术、资讯文章,更有面向初学者的系列文章。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值