1. 简介
逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归。
2. 应用场景
数据不均衡问题
- 广告点击率
- 是否为垃圾邮件
- 是否患病
- 金融诈骗
- 虚假账号
3. 原理
线性回归:
通过sigmoid函数对线性回归输出结果进行转化,转化到 (0,1) 之间。此时这个结果可以认为是取某个类别的概率值。
sigmoid: h(t) = 1/(1+e^(-t))
def sigmoid(t):
return 1/(1+np.e**(-t))
逻辑回归
4. 损失以及优化
逻辑回归的损失,称之为对数似然损失
- 分开类别:
-log(t)的函数曲线:
- 综合完整损失函数
不同算法解决不同的问题,但是首先需要确定的是问题本身(分类还是回归)
5. api
sklearn.linear_model.LogisticRegression(solver=‘liblinear’, penalty=‘l2’, C = 1.0)
6. 应用
案例:癌症分类预测
- 通过肿瘤预测案例,学会如何使用逻辑回归对模型进行训练
6.1 案例分析
1.获取数据
2.基本数据处理
2.1 缺失值处理
2.2 确定特征值,目标值
2.3 分割数据
3.特征工程(标准化)
4.机器学习(逻辑回归)
5.模型评估
在很多分类场景当中我们不一定只关注预测的准确率
7. 分类评估方法
7.1 混淆矩阵
TP True positive
FN False nagative
FP False positive
TN True negative
7.2 精确率(Precision)与召回率(Recall)
精确率:预测结果为正例样本中真实为正例的比例,查准率
TP/(TP+FP)
召回率:真实为正例的样本中预测结果为正例的比例,查全率
TP/(TP+FN)
不同的场景关注的指标不一样
F1-score
分类评估报告api
sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )
y_true:真实目标值
y_pred:估计器预测目标值
labels:指定类别对应的数字
target_names:目标类别名称
return:每个类别精确率与召回率
7.3 ROC曲线与AUC指标
- 所有真实类别为1的样本中,预测类别为1的比例, 就是召回率
- 所有真实类别为0的样本中,预测类别为1的比例
ROC曲线
多次调整阈值得到若干组TPR FPR的值,把这些值在同一个坐标系中表示出来,就得到了ROC曲线
最极端,FPR=0,TPR=1,
FPR=0时,即FP=0;TPR=1时,即FN=0,就是所有预测错了的样本都为0,也就是所有的样本预测结果都是正确的
此时对应的曲线下面积是1,如果roc曲线和对角线重合,则面积是0.5,此时模型的预测结果和瞎猜是一样的
AUC指标,area under curve
AUC=1,完美分类器
0.5<AUC<1,优于随机猜测
from sklearn.metrics import roc_auc_score
7.4 应用
分类算法概述
常用的分类算法包括朴素贝叶斯、逻辑回归、决策树、随机森林、支持向量机等。
分类的主要用途和场景是“预测”,基于已有的样本预测新样本的所属类别,例如信用评级、风险等级、欺诈预测等。
案例 电信客户流失预测
- 案例简介
- AT&T数据,用户个人,通话,上网等信息数据
处理流程
- 分析流程:数据概况分析->单变量分析->相关性分析与可视化->回归模型
- 正负样本占比
步骤
1 加载数据,查看churn.info()
2 对churn列和gender列进行onehot编码
3 churn的onehot编码中churn_yes作为标签列,churn_no丢弃
gender_yes gender_no都保留
4 churn.flag.value_counts() churn.flag.value_counts(1)查看正负样本分布 正负样本是人为定义的,关注哪个类别则定义该类别为正样本
5 按照flag分组,计算平均值,查看相关特征
6 围绕flag变量,分析其他变量与flag的相关关系
7 选择相关性比较高的作为特征
8 构建模型,训练评估
9 如果评估结果不理想,则重新选择特征重新训练
方差vs偏差