机器学习之逻辑回归

逻辑回归公式推导

sigmoid函数形式:

g ( z ) = 1 1 + e − z g\left( z \right) = \frac{1}{{1 + {e^{ - z}}}} g(z)=1+ez1当z趋近于负无穷时,g(z)趋近于0,令z=wx,就得到了逻辑回归模型:
h w ( x ) = 1 1 + e − w x {h_w}\left( x \right) = \frac{1}{{1 + {e^{ - wx}}}} hw(x)=1+ewx1h(x)表示模型输出,可以理解为输出是正样本的概率,w是模型的参数。
参数估计:
设: P ( y = 1 ∣ x , w ) = h w ( x ) P\left( {y = 1|x,w} \right) = {h_w}\left( x \right) P(y=1x,w)=hw(x) P ( y = 0 ∣ x , w ) = 1 − h w ( x ) P\left( {y = 0|x,w} \right) = 1 - {h_w}\left( x \right) P(y=0x,w)=1hw(x)
合成一个式子就是:
P ( y ∣ x , w ) = h w ( x ) y ( 1 − h w ( x ) 1 − y ) P\left( {y|x,w} \right) = {h_w}{\left( x \right)^y}\left( {1 - {h_w}{{\left( x \right)}^{1 - y}}} \right) P(yx,w)=hw(x)y(1hw(x)1y)通过最大似然函数来估计参数w。
似然函数为:
∏ i = 1 n [ h w ( x i ) ] y i [ 1 − h w ( x i ) ] 1 − y i {\prod\limits_{i = 1}^n {\left[ {{h_w}\left( {{x_i}} \right)} \right]} ^{{y_i}}}{\left[ {1 - {h_w}\left( {{x_i}} \right)} \right]^{1 - {y_i}}} i=1n[hw(xi)]yi[1hw(xi)]1yi其中n为样本的个数。
对数似然函数为:
L ( w ) = ∑ i = 1 n [ y i l o g h w ( x i ) + ( 1 − y i ) l o g ( 1 − h w ( x i ) ) ] L\left( w \right) = \sum\limits_{i = 1}^n {\left[ {{y_i}log{h_w}\left( {{x_i}} \right) + \left( {1 - {y_i}} \right)log\left( {1 - {h_w}\left( {{x_i}} \right)} \right)} \right]} L(w)=i=1n[yiloghw(xi)+(1yi)log(1hw(xi))]带入 h w ( x ) = 1 1 + e − w x {h_w}\left( x \right) = \frac{1}{{1 + {e^{ - wx}}}} hw(x)=1+ewx1,经过推导可得
L ( w ) = ∑ i = 1 n [ y i x i w − log ⁡ ( 1 + e w x i ) ] L\left( w \right) = \sum\limits_{i = 1}^n {\left[ {{y_i}{x_i}w - \log \left( {1 + {e^{w{x_i}}}} \right)} \right]} L(w)=i=1n[yixiwlog(1+ewxi)]极大化对数似然函数就可以得到w的估计值。
梯度上升法更新参数w:
∂ L ∂ w = ∑ i = 1 n y i x i − e w x i 1 + e w x i x i = ∑ i = 1 n ( y i − h w ( x i ) ) x i \frac{{\partial L}}{{\partial w}} = \sum\limits_{i = 1}^n {{y_i}{x_i} - \frac{{{e^{w{x_i}}}}}{{1 + {e^{w{x_i}}}}}{x_i} = \sum\limits_{i = 1}^n {\left( {{y_i} - {h_w}\left( {{x_i}} \right)} \right){x_i}} } wL=i=1nyixi1+ewxiewxixi=i=1n(yihw(xi))xi
w j + 1 = w j + η ∑ i = 1 n ( y i − h w ( x i ) ) x i {w_{j + 1}} = {w_j} + \eta \sum\limits_{i = 1}^n {\left( {{y_i} - {h_w}\left( {{x_i}} \right)} \right){x_i}} wj+1=wj+ηi=1n(yihw(xi))xi
注:这里采用极大化对数似然函数,故使用梯度上升法更新参数。

三种梯度下降法

  1. 批量梯度下降法(Batch Gradient Descent)
    批量下降法指的是每一次迭代使用所有样本来进行参数的更新,优点是当目标函数为凸函数时,能得到全局最优,缺点是每迭代一次计算量大。
  2. 随机梯度下降法(Stochastic Gradient Descent)
    随机梯度下降法每次只使用一个样本来更新参数。
    w j + 1 = w j + η ( y i − h w ( x i ) ) x i {w_{j + 1}} = {w_j} + \eta \left( {{y_i} - {h_w}\left( {{x_i}} \right)} \right){x_i} wj+1=wj+η(yihw(xi))xi优点是迭代一次的计算量小,参数更新快,缺点是可能会收敛到局部最优、不容易并行。SGD迭代次数比较多,在解空间的搜索过程中比较盲目。
  3. 小批量梯度下降(Mini-Batch Gradient Descent)
    每次迭代使用部分样本来更新参数,综合了上述两种梯度下降的优缺点。是深度学习中最常见的参数更新方法。

逻辑回归工具包

#sklearn中逻辑回归
from sklearn.linear_model import LogisticRegression
#C表示正则化参数,C是正数,值越小表示正则化越强
#penalty选择l1还是l2取决于数据集大小,大样本(大于10万)用l2,过拟合情况严重用l1,做特征选择用l1
clf= LogisticRegression(C=1.0, penalty='l2',random_state=0)
clf.fit(data, labels)

逻辑回归优缺点

优点:

  1. 实现简单,在工业界广泛应用
  2. 计算量小,适合大规模训练,比如十亿级别的广告特征
  3. 从权重可以看出特征重要性

缺点:

  1. 准确率不高
  2. 不太适合处理非线性特征

逻辑回归面试问题

  1. 逻辑回归的损失函数为什么是对数损失?为什么不用平方损失?
    答:对数损失更新梯度快,平方损失求导和sigmoid有关,sigmoid的导函数值不大于0.25,训练慢。
  2. 参数更新时可以使用梯度下降也可以用牛顿法,这两种方法有什么区别?
    答:梯度下降只用到一阶导数,牛顿法用了二阶导数信息。牛顿法收敛速度快但是计算复杂。
  3. 多类别如何使用逻辑回归?
    答:One-Vs-All,把多分类问题转化成多个二分类问题,选择一个类别作为正类,其余类则为负类,这样就可以训练出n个二元分类器,n表示类别数量。对每个样本找出输出值最大的作为它的类别。第二种方法是One-Vs-One,它是两两训练一个分类器,最后得到n个分类器,通过投票决定测试样本类别。最常用的方法是用softmax函数作为激活函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值