逻辑斯特回归之基础

从线性回归到逻辑斯特回归

让我们思考一个实际的分类问题:
通过学生的学习时间,估计他期末考试是否能够及格。
那么,我们是否可以通过在[机器学习-1.1]线性回归之基础中描述的方法来实现这个分类问题呢?
让我们先看这样一张图:
[机器学习-2.1]逻辑斯特回归之基础
横坐标表示学习时间,纵坐标表示及格与否。1代表及格,0代表不及格。
0.5为界限,也就是说,输入一个学生的学习时间给分类器,分类器就是一个函数,函数输出一个数,大于阈值0.5,判定为及格,小于0.5判定为不及格。
蓝点代表不及格学生数据,水红点代表及格学生数据。安装线性回归的算法,得到分类函数为黄色线,我们可以明显看见,分类器很好的分出了,及格学生和不及格学生。
但是,当我们加入右上角的新数据时候,再次利用线性回归算法得到分类函数,为红色线,这个时候就会出现分类出错的情况。
之所以会出现分类出错的情况,是因为,线性回归对异常值敏感,算法为了照顾这些异常点,会使得分类不符合实际情况。
为此,我们需要引入一种模型,更加符合这种给定xxθ\theta得到输出变量yy服从贝努利分布(0-1分布,二项分布)的分类问题。
以上是直觉理解分析,以下通过理论分析得到我们需要的逻辑斯特回归模型。
这种已知x预测y的问题,可以通过构建广义线性模型(GLM)来解决,GLM由三大假设,也就是说,让上述的二分类问题遵循GLM,就可以达成预测模型的构建。

  1. yx;θy|x;\theta 服从一个参数为η\eta的指数族分布
  2. 给定x,预测y的期望值,即得到h(x)=E(yx)h(x) =\Epsilon (y|x)
  3. 假设参数η\eta和输入变量xx是线性关系,也就有η=θTx\eta ={ \theta }^{ T }x

首先第一步,让p(yθ)p(y|\theta )服从指数族分布。
指数族分布满足如下概率密度函数:
p(y;η)=b(y)e(ηT(y)a(η)) p(y;\eta )=b(y){ e }^{ (\eta T(y)-a(\eta )) }
其中,η\eta是自然参数,T(y)T(y)是充分统计量,a(η)a(\eta)为正则化项。
通常T(y)=1T(y)=1
在上述的二分类问题中,输出变量服从二项分布:
p(y;θ)=ϕy(1ϕ)(1y) p(y;\theta )={ \phi }^{ y }{ (1-\phi ) }^{ (1-y) }
将其转化为指数族分布的形式:
p(y;θ)=e((log(ϕ1ϕ))y+log(1ϕ)) p(y;\theta )={ e }^{ ((log(\frac { \phi }{ 1-\phi } ))y+log(1-\phi )) }
对照指数族公式的通式,可以得到:
ϕ=11+eη\phi =\frac { 1 }{ 1+{ e }^{ -\eta } }
b(y)=1b(y)=1
a(η)=log(1+eη)a(\eta )=log(1+{ e }^{ \eta })
又有η=θTx\eta ={ \theta }^{ T }x,则,我们可以得到
p(yx;θ)=(11+eθx)y(111+eθx)1y p(y|x;\theta )={ (\frac { 1 }{ 1+{ e }^{ -\theta x } } ) }^{ y }{ (1-\frac { 1 }{ 1+{ e }^{ -\theta x } } ) }^{ 1-y }
至此,我们知道我们需要的函数是sigmoid函数,即为ϕ=11+eη\phi =\frac { 1 }{ 1+{ e }^{ -\eta } }

从最大似然得到目标函数

假设hθ(x)=g(θTx)=11+eθx{ h }_{ \theta }(x)=g({ \theta }^{ T }x)=\frac { 1 }{ 1+{ e }^{ -\theta x } }
那么似然函数有:
L(θ)=p(yX;θ)=i=1mhθ(x(i))y(i)(1hθ(x(i)))1y(i) L(\theta )=p(\overrightarrow { y } |X;\theta )=\prod _{ i=1 }^{ m }{ { { h }_{ \theta }({ x }^{ (i) }) }^{ { y }^{ (i) } }{ (1-{ h }_{ \theta }({ x }^{ (i) })) }^{ 1-{ y }^{ (i) } } }
对数似然函数:
l(θ)=lnL(θ)=i=1m(y(i)lnhθ(x(i))+(1y(i))ln(1hθ(x(i)))) l(\theta )=\ln { L(\theta )=\sum _{ i=1 }^{ m }{ ({ y }^{ (i) }\ln { { h }_{ \theta }({ x }^{ (i) }) } + } } { (1-y }^{ (i) })\ln { (1-{ h }_{ \theta }({ x }^{ (i) }) } ))
以上对数似然函数,就是我们常说的交叉熵,可以把其看做目标函数。

利用梯度上升法求解

对参数θ\theta求目标函数的偏导,也就是求对数似然,得到:
l(θ)θj=i=1m(y(i)g(θTx(i)))xj(i) \frac { \partial l(\theta ) }{ \partial { \theta }_{ j } } =\sum _{ i=1 }^{ m }{ ({ y }^{ (i) }-g({ \theta }^{ T }{ x }^{ (i) })){ x }_{ j }^{ (i) } }

参数θ\theta梯度更新法则:

Repeatuntilconvergence{θi=θiαj=1m(hθ(x(j))y(j))xi(j)} Repeat\quad until\quad convergence\{ \\ { \theta }_{ i }={ \theta }_{ i }-\alpha \sum _{ j=1 }^{ m }{ ({ h }_{ \theta }({ x }^{ (j) })-{ y }^{ (j) }){ x }_{ i }^{ (j) } } \}
或者:
Loop{forj=1tom{θi=θiα(hθ(x(j))y(j))xi(j)}} Loop\{ \\ for\quad j\quad =\quad 1\quad to\quad m\{ \\ { \theta }_{ i }={ \theta }_{ i }-\alpha ({ h }_{ \theta }({ x }^{ (j) })-{ y }^{ (j) }){ x }_{ i }^{ (j) }\} \}
注意,梯度下降或者上升,只是正负好的差别。

相关文章: