机器学习——linear model for classification

到目前为止,已经学习了3个线性模型了,他们都使用到了score=WTXscore = W^TX(后文中简写为ss),使用特征间线性组合来打分,通过分数来做后续的处理。

linear regression用于分类前面有一篇博客已经说明,现在我们想要知道,logistic regression 是否也可以用于分类?毕竟线性回归的错误对于二元分类来说是一个很大的上界,这意味着它的效果虽然不差,但可能错失更好的。而PLA找到一个最小的EinE_ {in}是NP-hard问题,只能使用改进的POCKET算法。我们希望看到logistic regression用于二元分类可以有更好的表现。

与之前的步骤一样,逻辑回归中,Ein=n=1Nln1+eynWTXnE_ {in} = \sum_ {n = 1}^{N} \ln{1 + e^{-y_nW^TX_n} },我们对比的是单个样本的错误,就写作errnameerr_ {name}好了。

为了让这3种模型都有较为清晰的对比,我们对PLA以及线性回归的错误衡量也做处理,如下:

method linear classification linear regression logistic regression
err [sign(ys1)][sign(ys \neq 1)] (sy1)2(sy-1)^2 ln1+eys\ln{1+e^{-ys} }

将它们的曲线绘制到一张图上,可以得到下面的结果: 其中蓝色是linear classification的错误,红色是linear regression的错误,绿色是logistic regression。坏了,绿色的线并不总是大于蓝色的线,这意味着我们无法像之前一样,简单地将Ein(linearclassification)E_ {in}(linear classification)换成Ein(logisticregression)E_ {in}(logistic regression)

实际上,之前我们选择用lnln函数是因为这是最常见的,只是将乘法换成加法,理论上我们可以取任何对数,如,将对数函数换为log2xlog_2^x,就可以得到另外一副曲线图:

这样就可以满足我们的需要,也方便下面的证明。 我们称使用ln(x)ln(x)函数的错误为errceerr_ {ce},使用log2(x)log_2(x)的为errsceerr_ {sce},则由上图可以知道:

err0/1(s,y)errsce(s,y)=1ln2errce(s,y)err_ {0/1}(s,y) \leq err_ {sce}(s,y) = \frac 1 {\ln2} err_ {ce}(s,y), (由换底公式:$ = log_2x ) 也就可以知道: Ein0/1Einsce=1ln2Eince E_ {in}^{0/1} \leq E_ {in}^{sce} = \frac 1 {\ln2} E_ {in}^{ce}

同样的道理: Eout0/1Eoutsce=1ln2Eoutce E_ {out}^{0/1} \leq E_ {out}^{sce} = \frac 1 {\ln2} E_ {out}^{ce}

因此,我们可以像之前一样推导:

Eout0/1Ein0/1+Ω0/11ln2Eince+Ω0/1 E_ {out}^{0/1} \leq E_ {in}^{0/1}+ \Omega ^{0/1} \leq \frac 1 {\ln2} E_ {in}^{ce}+\Omega ^{0/1}

同样,从另一个方向也可以推导:

Eout0/11ln2Eoutce1ln2Eince+Ωce E_ {out}^{0/1} \leq \frac 1 {\ln{2} } E_ {out}^{ce} \leq \frac 1 {\ln2} E_ {in}^{ce}+\Omega ^{ce}

无论哪个,都可以证明,logistic regression是可以用于二元分类的。而上面的图像也说明了,他的效果比线性回归更好,bound更紧一点。

在实际应用中,我们使用linear regression来初始化WW,然后通过POCKET或者logistic regression来进行后面的步骤,而且logistic regression更为常用。

注:上面推导中,判断都是以s=0为界定,对应到logistic regression也就是概率为0.5为界定。