算法学习笔记(二):逻辑回归算法

逻辑回归定义:

逻辑回归是一种解决二分类(0 or 1)问题的机器学习方法,用于估算某种事物的可能性。

逻辑回归和线性回归的关系

联系
  1. 都是广义线性回归模型(generalized linear model)
  2. 逻辑回归去掉Sigmoid映射函数的话,就算是一个线性回归。
区别

线性回归得到的是一个连续的结果,而逻辑回归得到的是一个离散的结果。

优缺点

优点
  1. 高效,不需要太大的计算量,又通俗易懂,不需要缩放输入特征,不需要任何调整,且又很容易调整,并且输出校准好的预测概率。
  2. 非常容易实现,且训练很高效
  3. 可以用它作为一个很好的基准,用来衡量其他更复杂的算法。
缺点
  1. 不能解决非线性问题(或者说解决起来很困难,至少我现在不会,太菜),因为它的决策边界是线性的。
  2. 高度依赖正确的数据表示,所以在确定所有的重要变量之前不会成为一个有用的工具。
  3. 只能预测分类结果
  4. 容易过拟合

原理

逻辑回归模型是广义线性回归模型的拓展。
广义线性模型如下:
y = g − 1 ( w T x + b ) y =g^{-1}(w^Tx+b) y=g1(wTx+b)
其中的函数 g ( . ) g(.) g(.)称为 “ 联系函数 ” ,且是连续和充分光滑的。
逻辑回归的功能是实现二分类,但是一般的线性回归输出的是一个连续的值,所以要想输出离散的结果,就必须引入一个联系函数能够将实值转化为{0,1},最理想的是 “单位阶跃函数”,但是阶跃函数不是连续的,所以就需要找一个替代函数,而Sigmoid函数非常适合:
y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+ez1

结合广义线性模型,我们可以得到:
h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+eθTx1
但Sigmoid函数只能将实值转化到0到1之间,并不能直接得到0和1两个离散的值,所以这里引入了条件概率,来实现分类的目的。假如我们设
P ( Y = 1 ∣ x ) = 1 1 + e − θ T x P(Y=1|x)=\frac{1}{1+e^{-\theta^Tx}} P(Y=1x)=1+eθTx1
来表示输入一组特征样本返回的是正例的概率,那么就有
P ( Y = 0 ∣ x ) = 1 − P ( Y = 1 ∣ x ) = 1 1 + e θ T x P(Y=0|x)=1-P(Y=1|x)=\frac{1}{1+e^{\theta^Tx}} P(Y=0x)=1P(Y=1x)=1+eθTx1
现在假设有N个样本 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } \{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} {(x1,y1),(x2,y2),...,(xn,yn)},那么每个样本出现的概率就为
P ( x i , y i ) = P ( y i = 1 ∣ x i ) y i P ( y i = 0 ∣ x i ) ( 1 − y i ) P(x_i,y_i)=P(y_i=1|x_i)^{y_i}P(y_i=0|x_i)^{(1-y_i)} P(xi,yi)=P(yi=1xi)yiP(yi=0xi)(1yi)
则所有样本出现的概率的对数形式为
L ( x ) = ∑ i = 1 n [ y i l n P ( y i = 1 ∣ x i ) + ( 1 − y i ) l n P ( y i = 0 ∣ x i ) ] L(x)=\sum_{i=1}^{n}[y_ilnP(y_i=1|x_i)+(1-y_i)lnP(y_i=0|x_i)] L(x)=i=1n[yilnP(yi=1xi)+(1yi)lnP(yi=0xi)]
由最大似然估计可知,逻辑回归的损失函数
a r g m i n ( θ ) − L ( x ) argmin_{(\theta)} -L(x) argmin(θ)L(x)
我们可以用梯度下降法、牛顿法来求解损失函数,得到参数。

正则化

当模型参数过多时,容易遇到过拟合问题,因此可以在优化目标中加入正则项来控制模型的复杂度,通过惩罚过大的参数来防止过拟合。
引入正则项的LR目标函数
J ( θ ) = − 1 n ∑ i = 1 n [ y l n h θ ( x ) + ( 1 − y ) l n ( 1 − h θ ( x ) ) + λ ∣ ∣ w ∣ ∣ p ] J(\theta)=-\frac{1}{n}\sum_{i=1}^{n}[ylnh_{\theta}(x)+(1-y)ln(1-h_{\theta}(x))+\lambda||w||_p] J(θ)=n1i=1n[ylnhθ(x)+(1y)ln(1hθ(x))+λwp]
p一般取1或2,分别对应L1,L2正则化。
L1正则化倾向于使参数变为0,因此能产生稀疏解,可以用来特征选择。

模型评估指标

常见的分类指标有准确率召回率ROC曲线等,通常用准确率作为一般评估标准,但这个标准的默认假设前提是数据是平衡的,正例、反例的重要性一样,二分类器的阈值是0.5

样本不均衡问题及其解决方法

  1. 不平衡的类分布(imbalanced class distribution)的定义:
      属于某一类别的观测样本的数量显著少于其他类别。
  2. 发生原因
    机器学习算法通常被设计成通过减少误差来提高准确率。
  3. 处理不平衡数据集的方法
    数据层面:随机重采样、随机过采样、基于聚类的过采样、信息性过采样、改进的合成少数类过采样技术
    算法集成技术:基于Bagging方法、基于Boosting方法、自适应boosting-Ada Boost、梯度树、XGBoost

Sklearn库参数略谈

from sklearn.linear_model import LogisticRegression
modelLR=LogisticRegression()
modelLR.fit(X_train,Y_train)  #拟合
modelLR.score(X_test,Y_test)  #模型得分(准确率)
modelLR.predict_proba(data) #预测分类为0和1的概率
modelLR.predict(data)  #预测是为正例还是反例。
b=modelLR.coef_    #逻辑回归模型的系数
a=modelLR.intercept_    #逻辑回归模型的截距
from sklearn.metrics import confusion_matrix
confusion_matrix(test_y.astype(str),pred_y.astype(str))   #得到混淆矩阵
from sklearn.metrics import roc_curve,auc
fpr,tpr,threshold = roc_curve(test_y,pred_y)    #计算真正率,假正率
roc_auc=auc(fpr,tpr) #计算AUC值

参考资料

  1. 机器学习之利用Python进行逻辑回归分析

  2. 逻辑回归(LR)个人学习总结篇

  3. 机器学习算法之逻辑回归

  4. 西瓜书 ——周志华

  5. 逻辑回归(Logistic Regression)(一)

  6. 从原理到应用:简述Logistics回归算法

  7. 【机器学习算法系列之二】浅析Logistic Regression

  8. 如何处理数据中的「类别不平衡」?

  9. 从重采样到数据合成:如何处理机器学习中的不平衡分类问题?

  10. 样本不平衡总结

  11. 李航统计学习方法

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值