knitr::opts_chunk$set(echo = TRUE)
PLA返回结果是 {0,1} { 0 , 1 } ,而逻辑回归是一个Soft Binary Classification,它输出的 {y=+1} { y = + 1 } 的概率。所以 Logistic Regression的目标函数是: f(x)=P(+1|x)∈[0,1] f ( x ) = P ( + 1 | x ) ∈ [ 0 , 1 ] 。那么具体算法是什么呢?
Hypothesis Set
Hypothesis如下:
其中
s=wTx
s
=
w
T
x
相当于对特征进行加权求和,
θ(s)=es1+es
θ
(
s
)
=
e
s
1
+
e
s
称为sigmoid函数,作用是将加权求和值
s
s
的值域映射到。这样我们就可以得到
{y=+1}
{
y
=
+
1
}
的概率。
可以比较线性分类、线性回归、逻辑回归:
三种算法都用到了 wTx w T x ,但是输出和误差衡量方式都不同。那么逻辑回归的误差衡量应该怎么选取呢?
Error Measure
error的衡量方式是人为规定的,选择不同的error,主要考虑的是损失函数最小化这一步操作是否方便。前面讲的Linear Regression使用平方误差,如果logistic regression采用平方误差,那么损失函数非凸,最小化cost function时候十分困难。因此,在logistic regression中使用极大似然估计求解参数。
traget function
f(x)=P(+1|x)
f
(
x
)
=
P
(
+
1
|
x
)
考虑训练数据集
D={(x1,+1),(x2,−1),...,(xN,−1)}
D
=
{
(
x
1
,
+
1
)
,
(
x
2
,
−
1
)
,
.
.
.
,
(
x
N
,
−
1
)
}
,那么训练集产生的概率为:
如果 h≈f h ≈ f , Likehood L i k e h o o d 应该很接近,并且 Likehood L i k e h o o d 应当尽可能大。
注意到logistic函数有
1−h(x)=h(−x)
1
−
h
(
x
)
=
h
(
−
x
)
,所以似然函数可以写成:
现在的目标就是最大化似然函数,也等价于求:
求和符号后面部分就是误差函数,这种形式的误差函数称为cross entropy error:
NG的课和李航的书表示误差用的是指数形式的统一表达式:
总之,如上的表达式可以看做每个点的损失or成本。
Algorithm
可以证明损失函数是凸函数,即HessianMatrix正定。求解凸函数的最小值,和线性回归类似,我们希望找到一阶导为0。先求一阶导:
非线性函数,直接求方程比较困难,需要采用迭代的方法。常用的有梯度下降、随机梯度下降、牛顿法等等。之前有写过 1, 2,不多说了。
Summary
大概流程都是先确定hypothesis set,再确定合适的error measure,求损失函数。最后使用算法求出损失函数最小时候的参数值。
2018-02-05 于杭州