前言
每次上吴恩达老师的机器学习课,总是能带给我一些不同的东西(恩,换句话说,也就是我之前都学的啥??)。这次终于开始写逻辑回归了,逻辑回归真的是一个非常了不起的算法,恩,学到后来你会发现,诶,怎么哪里都有它?
这里首先向强调的一点是,逻辑回归是一个线性分类器,用做分类的,而且是线性的,千万不要以为sigmoid函数是非线性的,它就是非线性的了。
看一个算法,照李航老师所说,你应该看三部分:模型、策略、算法。
其实看的挺累的,我每次都记不住,所以导致我学的真的有点凌乱。
最近在不断的完善不断的完善,我觉得在看一个算法之前,可以先想以下三个问题:
- 这个算法是干嘛的?分类的?回归的?聚类的?首先搞清楚这个算法的目的是什么。由此可得其原始数据的大致形式。
- 这个算法的求解方式是什么?如果是分类,那他的分类超平面如何定义?回归,它的学习策略是如何计算残差的?如果是聚类,样本点之间的距离如何计算?
- 这个算法如何学习?可能是解析解,可能是梯度下降等方法?
经过这三个部分你就能很好的了解,至少是清楚一个算法的结构了。
逻辑回归
- 目的是什么
恩,首先还是先要明确这个算法是干嘛的,再三强调,逻辑回归是用来做二分类的,是一个线性分类器。
首先来看一下效果:
逻辑回归效果
这里不同颜色指的是不同类别,中间的线定义的是一个分离超平面,该线两边设置为不同的类别。当然,这里正确率很明显不是100%,但是没关系,我们这里主要是强调有一个分离超平面是用来分类的。
也就是说,我们的目的是为了得到这样的一个分离超平面,去对数据进行分类。
求解方式
求解方式是什么呢?也就是我们想要得到这个分离超平面,那要怎么做?
一般说来,我们有一个sigmoid函数,我们认为将 x x 和参数输入到该函数中,能得到一个该样本分类为1的概率。(实际上并不是随意认为的,有严格的数学推导,详情请见sigmoid函数推导。)
hw(x)=P(y=1|x;w)=11+e−wTx h w ( x ) = P ( y = 1 | x ; w ) = 1 1 + e − w T x
当 P(y=1|x;w)>0.5 P ( y = 1 | x ; w ) > 0.5 时,我们就将它预测为类别1,否则预测为类别0。
实际上,
P(y=1|x;w)>0.5⇒11+e−wTx>0.5⇒wTx>0 P ( y = 1 | x ; w ) > 0.5 ⇒ 1 1 + e − w T x > 0.5 ⇒ w T x > 0
所以最终我们可以得到,分离超平面的方程式其实就是
wTx=0 w T x = 0
所以我们的分离超平面就这么定义出来了,那么怎样求这个 w w 便是我们的算法部分了,也就这个算法是怎么学习的?算法如何学习?
根据我们对参数进行估计的方法:极大似然估计法对参数进行估计。
首先定义极大似然函数:
L(w)=P(y=1|x;w)yiP(y=0|x;w)1−yi L ( w ) = P ( y = 1 | x ; w ) y i P ( y = 0 | x ; w ) 1 − y i
令: π(x)=P(y=1|x;w) π ( x ) = P ( y = 1 | x ; w ) ,则 1−π(x)=P(y=0|x;w) 1 − π ( x ) = P ( y = 0 | x ; w ) ,则有:
L(w)=π(x)yi(1−π(x))1−yi L ( w ) = π ( x ) y i ( 1 − π ( x ) ) 1 − y i
对极大似然函数取对数(极大似然法的一般步骤),同时将 π(x)=P(y=1|x;w)=11+e−wTx π ( x ) = P ( y = 1 | x ; w ) = 1 1 + e − w T x 代入,可得:
logL(w)=∑niyi(wxi)−log(1+ewxi) log L ( w ) = ∑ i n y i ( w x i ) − log ( 1 + e w x i )
最后对上述式子进行极大化,可以采用梯度上升或者牛顿方法,最终我们可以估计出 w w ,从而得到分离超平面。当然如下损失函数所示,便是直接加了负号求最小。感知器的区别
这里我还是想写这一点,因为我本人在学习的时候也是非常的困惑,既然逻辑回归也是使得的时候预测为1,否则预测为另一个类,这个和支持向量机又有什么区别呢?支持向量机不也是使得 wTx>0 w T x > 0 的时候预测为1,否则预测为-1。两者仿佛只是差在一个输入时标签的区别?
其实两者的差别挺小的,主要在于损失函数不同,即对应错分样本惩罚力度不同,而且逻辑回归多了一个概率解释。可以参见博客,里面讲的挺详细的。
感知器的损失函数为:
L=−y(wTx)w,x∈Rn+1 L = − y ( w T x ) w , x ∈ R n + 1
从公式中,我们可以看到,如果样本被正确分类,则 y(wTx)>0 y ( w T x ) > 0 ,是能够有效的减小损失的。若分类错误则增加损失。这里强调一点,感知器对任意一个分类错误样本,其惩罚力度都是一样的,因为其权值都是 w w 。
而逻辑回归的损失函数是(我们前面推导的时候,w是以最大似然函数推导的,跟这里实质是一样的,可以自行推导):
至于为什么是这个损失函数,请参见博客。
在这里我们需要强调的是,对于任意分类错误样本,它对损失函数的贡献是不一样的。举个例子,如果有一个正样本,被错分,则其对损失函数的贡献为 −log(π(x)) − log ( π ( x ) ) (将y=1代入上式可得),可知,对于不同的样本其贡献的大小是不一样的,取决于 π(x) π ( x ) 的值。感知器、逻辑回归和支持向量机的区别
三者都是线性分类器,而logistic和svm是由感知器发展改善而来的。区别在于三者的损失函数不同,后两者的损失函数的目的都是增加对分类影响较大的数据点的权重,SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
上述摘自博客,写的挺好的。
啰嗦一点,因为离分离平面较远的点,其预测的准确度是越高的,也就是 π(x) π ( x ) 越接近于1,则其对应的损失其实是越小的。
sigmoid函数导出
涉及指数分布簇、广义线性模型。
指数分布簇:
广义线性模型假设:
- 在给定 x x 与 参数 θ θ 时,服从以 η η 为变量的指数族的分布;
- 给定时,我们的目标是来预测 T(y) T ( y ) 的值,即求 E(T(y)|x) E ( T ( y ) | x ) ,不过在很多时候, T(y)=y; T ( y ) = y ;
- 参数 η=θTx η = θ T x ; (为什么呢? 它就是这么设计的,广义线性模型哦)
而逻辑回归是一个二分类问题,其
y
y
的分布服从一个伯努利分布,其中用来表示
P(y=1|x)
P
(
y
=
1
|
x
)
。即
从而服从指数分簇。其 η=logϕ1−ϕ,T(y)=y η = log ϕ 1 − ϕ , T ( y ) = y ,所以有 ϕ=11+e−η ϕ = 1 1 + e − η 。
而在广义线性模型中, η=θTx η = θ T x ,所以有 ϕ=11+e−θTx ϕ = 1 1 + e − θ T x 。
预测时:
最后一步是因为在伯努利分布中,期望为 ϕ ϕ 。
由此,我们证明了sigmoid函数可以用来估计 P(y=1|x) P ( y = 1 | x ) 。
softmax分类器
sigmoid函数导出是一个softmax函数导出的简化版,softmax回归是逻辑回归的多分类的推广,详情请见softmax 和 logistic 分类器关系。
但是在这个博客中,有一个点需要大家注意,在最后得到
可得:
代入
可得
ϕi=eηi1+∑k−1j=1eηi ϕ i = e η i 1 + ∑ j = 1 k − 1 e η i
原来的形式为:
ϕk=1∑kj=1eηi ϕ k = 1 ∑ j = 1 k e η i
ϕi=eηi∑kj=1eηi ϕ i = e η i ∑ j = 1 k e η i
注意求和角标。