逻辑回归定义:
逻辑回归是一种解决二分类(0 or 1)问题的机器学习方法,用于估算某种事物的可能性。
逻辑回归和线性回归的关系
联系
- 都是广义线性回归模型(generalized linear model)
- 逻辑回归去掉Sigmoid映射函数的话,就算是一个线性回归。
区别
线性回归得到的是一个连续的结果,而逻辑回归得到的是一个离散的结果。
优缺点
优点
- 高效,不需要太大的计算量,又通俗易懂,不需要缩放输入特征,不需要任何调整,且又很容易调整,并且输出校准好的预测概率。
- 非常容易实现,且训练很高效
- 可以用它作为一个很好的基准,用来衡量其他更复杂的算法。
缺点
- 不能解决非线性问题(或者说解决起来很困难,至少我现在不会,太菜),因为它的决策边界是线性的。
- 高度依赖正确的数据表示,所以在确定所有的重要变量之前不会成为一个有用的工具。
- 只能预测分类结果
- 容易过拟合
原理
逻辑回归模型是广义线性回归模型的拓展。
广义线性模型如下:
其中的函数称为 “ 联系函数 ” ,且是连续和充分光滑的。
逻辑回归的功能是实现二分类,但是一般的线性回归输出的是一个连续的值,所以要想输出离散的结果,就必须引入一个联系函数能够将实值转化为{0,1},最理想的是 “单位阶跃函数”,但是阶跃函数不是连续的,所以就需要找一个替代函数,而Sigmoid函数非常适合:
结合广义线性模型,我们可以得到:
但Sigmoid函数只能将实值转化到0到1之间,并不能直接得到0和1两个离散的值,所以这里引入了条件概率,来实现分类的目的。假如我们设
来表示输入一组特征样本返回的是正例的概率,那么就有
现在假设有N个样本,那么每个样本出现的概率就为
则所有样本出现的概率的对数形式为
由最大似然估计可知,逻辑回归的损失函数为
我们可以用梯度下降法、牛顿法来求解损失函数,得到参数。
正则化
当模型参数过多时,容易遇到过拟合问题,因此可以在优化目标中加入正则项来控制模型的复杂度,通过惩罚过大的参数来防止过拟合。
引入正则项的LR目标函数
p一般取1或2,分别对应L1,L2正则化。
L1正则化倾向于使参数变为0,因此能产生稀疏解,可以用来特征选择。
模型评估指标
常见的分类指标有准确率,召回率,ROC曲线等,通常用准确率作为一般评估标准,但这个标准的默认假设前提是数据是平衡的,正例、反例的重要性一样,二分类器的阈值是0.5
样本不均衡问题及其解决方法
- 不平衡的类分布(imbalanced class distribution)的定义:
属于某一类别的观测样本的数量显著少于其他类别。 - 发生原因
机器学习算法通常被设计成通过减少误差来提高准确率。 - 处理不平衡数据集的方法
数据层面:随机重采样、随机过采样、基于聚类的过采样、信息性过采样、改进的合成少数类过采样技术
算法集成技术:基于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值
参考资料
- 机器学习之利用Python进行逻辑回归分析
- 逻辑回归(LR)个人学习总结篇
- 机器学习算法之逻辑回归
- 西瓜书 ——周志华
- 逻辑回归(Logistic Regression)(一)
- 从原理到应用:简述Logistics回归算法
- 【机器学习算法系列之二】浅析Logistic Regression
- 如何处理数据中的「类别不平衡」?
- 从重采样到数据合成:如何处理机器学习中的不平衡分类问题?
- 样本不平衡总结
- 李航统计学习方法