您的位置:首页 > 其它

机器学习基石---Logistic Regression

2018-02-05 22:33 399 查看
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如下:

h(x)=11+exp(−wTx)h(x)=11+exp⁡(−wTx)

其中s=wTxs=wTx相当于对特征进行加权求和,θ(s)=es1+esθ(s)=es1+es称为sigmoid函数,作用是将加权求和值ss的值域映射到[0,1][0,1]。这样我们就可以得到{y=+1}{y=+1}的概率。

  可以比较线性分类、线性回归、逻辑回归:



三种算法都用到了wTxwTx,但是输出和误差衡量方式都不同。那么逻辑回归的误差衡量应该怎么选取呢?

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={(x1,+1),(x2,−1),...,(xN,−1)},那么训练集产生的概率为:

Likehood(f)=P(x1,y1)∗P(x2,y2)∗⋯∗P(xN,yN)=P(x1)P(y1|x1)∗P(x2)P(y2|x2)∗⋯∗P(xN)P(yN|xN)=P(x1)f(x1)∗P(x2)(1−f(x2))∗⋯∗P(xN)(1−f(xN))Likehood(f)=P(x1,y1)∗P(x2,y2)∗⋯∗P(xN,yN)=P(x1)P(y1|x1)∗P(x2)P(y2|x2)∗⋯∗P(xN)P(yN|xN)=P(x1)f(x1)∗P(x2)(1−f(x2))∗⋯∗P(xN)(1−f(xN))

如果h≈fh≈f,LikehoodLikehood应该很接近,并且LikehoodLikehood应当尽可能大。



注意到logistic函数有1−h(x)=h(−x)1−h(x)=h(−x),所以似然函数可以写成:

Likehood(h)=P(x1)h(x1)∗P(x2)(1−h(x2))∗⋯∗P(xN)(1−h(xN))=P(x1)h(y1x1)∗P(x2)h(y2x2)∗⋯∗P(xN)h(yNxN)∝∏n=1Nh(ynxn)∝∏n=1Nθ(ynwTxn)∝ln(∏n=1Nθ(ynwTxn))∝1N∑n=1Nlnθ(ynwTxn)Likehood(h)=P(x1)h(x1)∗P(x2)(1−h(x2))∗⋯∗P(xN)(1−h(xN))=P(x1)h(y1x1)∗P(x2)h(y2x2)∗⋯∗P(xN)h(yNxN)∝∏n=1Nh(ynxn)∝∏n=1Nθ(ynwTxn)∝ln⁡(∏n=1Nθ(ynwTxn))∝1N∑n=1Nln⁡θ(ynwTxn)

现在的目标就是最大化似然函数,也等价于求:

min−1N∑n=1Nlnθ(ynwTxn)⇒min1N∑n=1N−lnθ(ynwTxn)=min1N∑n=1Nln1θ(ynwTxn)=min1N∑n=1Nln(1+exp(−ynwTxn))min−1N∑n=1Nln⁡θ(ynwTxn)⇒min1N∑n=1N−ln⁡θ(ynwTxn)=min1N∑n=1Nln⁡1θ(ynwTxn)=min1N∑n=1Nln⁡(1+exp⁡(−ynwTxn))

求和符号后面部分就是误差函数,这种形式的误差函数称为cross entropy error:

err(w,x,y)=ln(1+exp(−ywx))err(w,x,y)=ln⁡(1+exp⁡(−ywx))

NG的课和李航的书表示误差用的是指数形式的统一表达式:

ln(h(xn)yn(1−h(xn))1−yn)ln⁡(h(xn)yn(1−h(xn))1−yn)

总之,如上的表达式可以看做每个点的损失or成本。

Algorithm

  可以证明损失函数是凸函数,即HessianMatrix正定。求解凸函数的最小值,和线性回归类似,我们希望找到一阶导为0。先求一阶导:

∂Ein∂w=1N∑n=1Nlnθ(−ynwTxn)∗(−ynxn)∂Ein∂w=1N∑n=1Nln⁡θ(−ynwTxn)∗(−ynxn)

非线性函数,直接求方程比较困难,需要采用迭代的方法。常用的有梯度下降、随机梯度下降、牛顿法等等。之前有写过12,不多说了。

Summary

  大概流程都是先确定hypothesis set,再确定合适的error measure,求损失函数。最后使用算法求出损失函数最小时候的参数值。

                         2018-02-05 于杭州
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: