逻辑回归分类器

逻辑回归

  1. 逻辑回归简单、可以并行化并且解释性强,受到工业界的青睐。
  2. 逻辑回归常用于二分类,假设要有一条直线可以在一定误差下将两种类型的数据一分为2,首先寻找这一条直线,然后确定边界、某一数据之间的关系 与 分类概率的联系。从而实现二分类。
  3. 推导过程如下:考虑线性感知机,在直线某一侧的点 w 1 x 1 + w 2 x 2 + b > 0 w1x1+w2x2+b>0 w1x1+w2x2+b>0,把这些点都分类成1类,可以使用的是阶跃函数表示: y = { 0 , z < 0 0.5 , z = 0 1 , z > 0 , z = w T x + b y=\begin{cases}0,z<0\\0.5,z=0\\1,z>0\end{cases},z=w^Tx+b y=0,z<00.5,z=01,z>0,z=wTx+b这里的y表示分类结果,这个函数不可导,在求 w w w的优化过程中没办法得到梯度。所以要想另外一种办法,首先不考虑像上述公式那样将计算出来 w T x + b w^Tx+b wTx+b的数值直接对应成分类结果,而是将计算出来的值对应成条件概率P(y=1|x)。假设计算出来 w T x + b w^Tx+b wTx+b的值大于0,那么将这个样本分类成1的概率要大于将这个样本分类成0的概率,也就是P(y=1|x)要大于0.5,计算出来 w T x + b w^Tx+b wTx+b的值小于0和这个类似,计算出来 w T x + b w^Tx+b wTx+b的值等于0,那么分类成0类和1类的概率应该相等,那么P(y=1|x)应该是0.5。实际上,这个概率也可以用上面阶跃函数来表示, y = P ( y = 1 ∣ x ) = { 0 , z < 0 0.5 , z = 0 1 , z > 0 , z = w T x + b y=P(y=1|x)=\begin{cases}0,z<0\\0.5,z=0\\1,z>0\end{cases},z=w^Tx+b y=P(y=1x)=0,z<00.5,z=01,z>0,z=wTx+b只不过一个y表示分类结果,另一个y表示的是分类成1的概率。这样还是不可导,换另外一个函数来代替它: y = P ( y = 1 ∣ x ) = 1 1 + e x p − ( w T x + b ) y=P(y=1|x)=\frac{1}{1+exp^{-(w^Tx+b)}} y=P(y=1x)=1+exp(wTx+b)1这样就可导了,而且也满足前面说到的要求。接下来就需要求出来 w w w的最优解了,从迭代的角度去求最优解需要有一个优化的目标,即损失函数。逻辑回归的损失函数如下所示: J ( w ) = − 1 n ( ∑ i = 0 n y i l n ρ ( x i ) + ( 1 − y i ) l n ( 1 − ρ ( x i ) ) ) J(w)=-\frac{1}{n}(\sum^n_{i=0}y_iln\rho(x_i)+(1-y_i)ln(1-\rho(x_i))) J(w)=n1(i=0nyilnρ(xi)+(1yi)ln(1ρ(xi)))其中 ρ ( x i ) = P ( Y = 1 ∣ x i ) \rho(x_i)=P(Y=1|x_i) ρ(xi)=P(Y=1xi)。这个损失函数实际上是可以根据最大似然估计得到的,但是最大似然估计只能给出一个需要最大化的似然值式子,无法给出最终的结果,最大似然值的式子和损失函数是一致的。那么 J ( w ) J(w) J(w) w i w_i wi求导,可以得到的是: ∂ J ( w ) ∂ w i = 1 n ( ρ ( x i ) − y i ) x i \frac{\partial{J(w)}}{\partial{w_i}}=\frac{1}{n}(\rho(x_i)-y_i)x_i wiJ(w)=n1(ρ(xi)yi)xi这是可以经过严格的推导得到的,推导过程就是将 ρ ( x i ) = P ( Y = 1 ∣ x i ) \rho(x_i)=P(Y=1|x_i) ρ(xi)=P(Y=1xi)代入得到的。所以权重的更新过程就是 w i ( k + 1 ) = w i ( k ) − ∂ J ( w ) ∂ w i ∗ α w_{i(k+1)}=w_{i(k)}-\frac{\partial{J(w)}}{\partial{w_i}}*\alpha wi(k+1)=wi(k)wiJ(w)α其中 α \alpha α是更新的权重,这里可以和 1 n \frac{1}{n} n1写在一起,都看成是 α \alpha α。把式子带进去,就能得到: w i ( k + 1 ) = w i ( k ) + ( y i − ρ ( x i ) ) ∗ α w_{i(k+1)}=w_{i(k)}+(y_i-\rho(x_i))*\alpha wi(k+1)=wi(k)+(yiρ(xi))α在算法中可以自己设置 α \alpha α的值。
  4. 至此,逻辑回归的算法就完成了,需要注意的是,在实际的梯度上升算法更新过程中,是所有的 w i w_i wi一起更新的,使用矩阵可以一次性计算所有更新的值,用到的数据也是全部的数据。梯度上升算法需要计算矩阵的乘法,在数据量特别大的时候,比如几千几万个数据,计算这么大型的矩阵可能硬件不支持,另外一种迭代方法是每次只随机选择一个样本,更新所有的权重系数 w i w_i wi,或者随机选择一串样本用来更新权重,而不是使用全部的样本用来更新权重,然后随机选择完整个数据集的样本之后,重复循环几次整个数据集,到达最大的迭代次数结束程序就行。可以预见,这种方法如果面对的是非完全线性可分的数据集,在经过某些样本的时候会导致参数较大的波动,这种情况下可以每次减少梯度的步长 α \alpha α的值,使得越往后权重变化的幅度越小,这样越往后,非线性可分的数据对权重的影响就会越来越小。另外一点是,随机选择样本可以避免周期性的震荡。每次更新参数后,可以通过比较 ∣ ∣ J ( w k + 1 ) − J ( W k ) ∣ ∣ ||J(w^{k+1})-J(W^k)|| J(wk+1)J(Wk)小于阈值或者到达最大迭代次数来停止迭代。
  5. w w w的求解过程其实就是在从数据中寻求经验风险最小化,也就是我从数据中学到的经验,然后我想要学到的经验有尽可能小的风险,那么这个经验就应该符合数据本身;另外一方面是结构风险,如果我获得的参数都很大,那么样本的某一项参数带噪大一点就会造成判断错误的风险,参数数值太大就会带来模型结构上的风险,为了降低这一份风险,参数的值应该小一点。比如,我认为模型的所有参数应该符合0均值的正态分布,那么在将这一先验信息代入最大似然估计的方程之后,可以得到L2正则化的损失函数式子,我认为模型所有参数应该符合0均值的拉普拉斯分布,可以得到L1正则化的损失函数式子。总的来说,依据数据本身训练模型是为了降低经验风险,加入L1、L2正则化项是为了降低模型的结构风险。
  6. https://zhuanlan.zhihu.com/p/74874291这篇文章很不错,可以多阅读,很多问题就会茅塞顿开。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值