http://www.cnblogs.com/guyj/p/3800519.html
这个讲解的比较清晰
先看下面,导数推导过程可以参考http://blog.csdn.net/zzzblog/article/details/37598941
1. 两类Logistic回归
Logistic回归是一种非常高效的分类器。它不仅可以预测样本的类别,还可以计算出分类的概率信息。
不妨设有 n 个训练样本 {x1,...,xn} , xi 是 d 维向量,其类别标签是 {y1,...,yn} 。对于一个 c 类问题, yi∈{1,2,...,c} 。Logistic回归学习这样一个函数
其中,
被称为Logistic函数或者Sigmoid函数。
设
x=[x(1),...,x(d)]T
。实际上,
θTx
这儿应该写成
θ0+θTx
(
θ
是
d
维向量),要有个常数项。但是为了方便,我们设
x(0)=1
,所以
θ0+θTx
可以直接写作
θTx
,而此处的
θ
是
d+1
维向量,即
θTx=∑dj=0θjx(j)
。
可以看出来,当 z 无穷大时, g(z) 趋于1;当 z 无穷小时, g(z) 趋于0;当 z=0 时, g(z)=0.5 。 g(z) 的值域是 [0,1] ,所以 f(x) 的值域也是 [0,1] 。
首先我们考虑
2
类问题,设
即对于给定的样本 x ,其属于类别 1 的概率是 f(x) 。则属于类别 0 的概率是
上述概率也可以写作
Logistic回归具有如下的特点。一个事件发生的机率(odds)定义为事件发生的概率与不发生的概率的比值。设
p=P(y=1|x,θ)
,那么事件的机率是
p1−p
。其对数函数是
可以看出,输出类别 1 的对数机率是输入 x 的线性函数。
此外,后验概率也可以写作如下形式:
(这与下文将到的多类形式一致)
学习or训练的过程就是通过训练数据,来求解出最优的参数 θ 。而预测的方法是计算后验概率 P(y|x,θ) ,如果大于 0.5 ,则预测为类别 1 ;否则为类别 0 。
以下使用极大似然估计方法来求解参数。参数
θ
的似然函数是:
最大化似然函数往往比较困难,可以通过最大化对数似然函数来求解。
θ
的对数似然函数是:
实际上,代价函数的形式是:
所以最小化代价函数就等价于最大化似然估计。
可以通过梯度下降法来求解
l(θ)
的极大值。即
x(j)i 是第 i 个样本的第 j 个特征。
所以,对于参数
θ
向量中的任一元素
θj
,迭代方式如下:
如此,便可将全部参数求解出来。
此外,Logistic回归的求解也可以采用Newton迭代法等。
2. 正则化
在机器学习中,正则化是非常常用的方法。它用来约束模型的参数,使得求解出来的参数不会太大(模型不能过于复杂),以防止过拟合。
Logistic回归经常加入
ℓ1
正则或者
ℓ2
正则。参数求解的问题转变为:
3. 多类情况
%可以换一种角度来理解Logistic回归。一个事件发生与不发生的比值被称为机率(odds)。假设发生的概率是 p ,那么发生的几率是 p/(1−p) 。几率越大,发生的可能性越大。
面向多类分类问题的Logistic回归,也叫softmax regression。假设是一个
c
类问题,则类别标签
yi∈{1,...,c}
。 使用one-vs-all策略可以将两类分类器扩展为多类分类器,即将选取任意一类,再将其它所有类看成是一类,构建一个两类分类器,这样一共需要
c
个分类器。
定义
该模型有这样一个性质,对于所有参数
θi
,加上一个向量
v
,后验概率的值不变。即
我们设
v=θc
, 则新的参数为
则多类Logistic回归模型可写作
加入正则项后的代价函数可以表述为
其中, 1{yi=k} 是指示函数,若 yi=k 为真,则等于 1 ,否则等于 0 。
对于参数的求解,与两类问题的求解方法一样。