逻辑回归, Logistic Regression
逻辑回归(Logistic Regression)
回归解决的是y连续时的预测问题,我们还想解决y离散时的预测问题,即分类。
考虑最简单的,分成两类,即y∈{0,1}
设hθ(x)=1+e−θTx1,称为sigmoid函数。这样既保留了“线性”的部分,又得到了一个被压缩到一个概率的输出。至于为什么选这个函数是恰当的,而不是其他类似arctan之类的函数之后会论证。这里x0=1。
一个小技巧是g′(z)=g(z)(1−g(z))
然后还是类似前面的,做一个极大似然估计。
现在我们已知了输入,让匹配为训练集正确结果的概率最大,也就是要求θ,满足∏P(y=y(i)∣x=x(i))最大。注意,这里和前面类似,要融入已知的信息x(i),所以是一个条件概率。
然后还要定义
P(y=y(i)∣x=x(i))={hθ(x)1−hθ(x)if y(i)=1if y(i)=0
我们可以巧妙地写成
P(y=y(i)∣x=x(i))=hθ(x(i))y(i)(1−hθ(x(i)))1−y(i)
为什么不写成加法之类的形式呢?其实仔细观察会发现,这是伯努利分布的特例。可以理解为,线性回归的先验分布是高斯分布,而逻辑回归的先验分布是伯努利分布。当然,在之后的GLM中,可以看到他们都是一种更广义的分布的特例。
L(θ)=i=1∏nP(y(i)∣x(i))
l(θ)=lnL(θ)=i=1∑ny(i)lnhθ(x(i))+(1−y(i))ln(1−hθ(x(i)))
右边这个也被叫做交叉熵函数
∂θj∂l(θ)=i=1∑n[y(i)hθ(x(i))1hθ(x(i))(1−hθ(x(i)))+(1−y(i))1−hθ(x(i))1(−1)hθ(x(i))(1−hθ(x(i)))]∂θj∂θTx(i)
∂θj∂l(θ)=i=1∑n(y(i)−hθ(x(i)))xj(i)
确实也可以看到这样设置概率求导比较方便。
然后就可以直接做梯度下降了。
如果沿用之前的SGD,更新规则就是
θj:=θj+α(hθ(x(i))−y(i))xj(i)(1≤j≤d)
多分类、softmax函数什么的,留到GLM再一起讲。
牛顿迭代法
如果要求函数的零点,我们知道大名鼎鼎的牛顿迭代法,即选定一个初始值θ0,然后不断更新
θ:=θ−f′(θ)f(θ)
也就是在一点附近用切线来近似改函数,然后不断修正直到收敛。
而梯度下降也是类似的,我们是在求梯度的零点,所以可以更新
θ:=θ−f′′(θ)f′(θ)
直观理解,多元函数中导数就是梯度,而二阶导就是海森矩阵,除以二阶导就是乘上海森矩阵的逆矩阵。
θ:=θ−H−1∇θl(θ)
感知机算法
如果不考虑sigmoid,单纯
g(z)={10if z≥0if z<0,hθ(x)=g(θTx)
损失函数类似后面的svm,调用一样的θ更新方法,就得到了古老的感知机算法。
实际上和后面的svm相似,都是试图用一个超平面来分隔点。
但是区别在于,svm可以魔改后可以分类出错误的点,但是一定要最大化最小的geometric margin,但是感知机算法是一定要最小化分类错误的点的个数,就可能会导致过拟合。
没有核方法的情况下都无法处理非线性可分的问题,比如非常经典的异或。