机器学习(8)- 逻辑回归

3.逻辑回归

3.1 逻辑回归介绍【****】

  1. 使用场景:
    • 一般用于解决二分类问题
    • 是否患病, 是不是金融诈骗, 是不是垃圾邮件, 要不要贷款, …
  2. 原理:
    1. 逻辑回归的输入是什么: 线性回归的输出
    2. 逻辑回归的使用的是什么激活函数, 它的作用是什么?
      • 激活函数: sigmoid
        • 作用:
          • 把线性回归输出压缩到(0,1)之间, 作为这个事件是否发生概率值; 如果概率值大于阈值, 就阈值预测该事件会发生, 如果概率值小于阈值, 预测事件不会发生; 阈值默认是0.5, 也可以根据具体情况进行调整.
        • 注意: 阈值默认是0.5, 也可以根据具体情况进行调整.
  3. 损失函数:
    • 为了得到一个更好预测结果:
      • 提高真实类别为1的概率值, 降低真实类别为0的概率值
    • 损失函数: 对数似然损失
      • 特点:
        • 真实类别为1, 概率值越越大损失越小.
        • 真实类别为0, 概率值越越小损失越小
  4. 优化:
    • 通过求解损失函数的最小值, 就可以最近的逻辑回归模型
    • 步骤:
      • 对损失求导
      • 使用梯度下降, 不断优化模型系数
      • 得到一个最佳的逻辑回归模型.

3.2 api介绍

  • sklearn.linear_model.LogisticRegression(solver=‘liblinear’, penalty=‘l2’, C = 1.0)
    • solver可选参数: ‘liblinear’, ‘sag’, ‘saga’,‘newton-cg’, ‘lbfgs’
      • 默认: ‘liblinear’;内部使用了坐标轴下降法迭代优化损失, 用于优化问题的算法。
      • 对于小数据集来说,“liblinear”是个不错的选择,而“sag”和’saga’对于大型数据集会更快。
      • 对于多类问题,只有’newton-cg’, ‘sag’, 'saga’和’lbfgs’可以处理多项损失;“liblinear”仅限于“one-versus-rest”分类。
    • penalty:正则化的种类
    • C:正则化力度

3.3 案例

  • 步骤:
    1. 加载数据
    2. 数据基本处理
      1. 处理缺失值
      2. 确定特征值和目标值
      3. 分割数据集
    3. 特征工程-特征预处理-标准化
    4. 机器学习(训练逻辑回归模型)
    5. 模型评估
  • 注意: 只有准确率进行评估, 还不够.

3.4 分类评估方式[*****]

  1. 混淆矩阵

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3X6jid4k-1571483307706)(混淆矩阵.png)]

  2. 准确率: 所有样本中预测正确的比例

  3. 精确率: 所有预测为正例的样本中, 真实为正例的比例(查的准不准)

  4. 召回率: 所有真实为正例的样本中, 预测为正例的比例(查的全不全)

  5. F1-Score: 精确率与召回率的结合, 用于衡量模型的稳健性.

  • API:
    • sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )
  • 参数:
    • y_true: 真实的目标值
    • y_pred: 预测的目标值
    • labels: 目标值列表
    • target_names: 目标值的名称列表
    • 结果:
      • 精确率,召回率, F1-Score
  1. ROC曲线和AUC指标
    • ROC曲线和AUC指标作用:
      • 用于解决样本不均衡下的分类模型评估问题的.
    • ROC曲线:
      • 纵坐标: TPR , 所有真实类别为1(正例)的样本中, 预测为1(正例)的比例
      • 横坐标: FPR, 所有真实类别为0(反例)的样本中, 预测为1(正例)比例
    • AUC指标:
      • AUC在[0.5, 1] 越接近与1说明这个模型评估效果越好, 越接近与0.5 越是是乱猜(效果越差)
  2. API:
    • from sklearn.metrics import roc_auc_score
    • sklearn.metrics.roc_auc_score(y_true, y_score)
      • 参数
        • y_true:真实目标值, 反例必须是0, 正例必须是1
        • y_score:预测值
      • 返回值:
        • AUC的指标的值.

3.5 ROC曲线的绘制【###】

  1. 绘制过程:

    1. 训练一个二分类模型
    2. 使用这个模型, 对数据进行预测
    3. 按照预测概率值从大到小排列
    4. 按照从前往后计算每一个点的TPR(真实为正例的样本中, 预测为正例比例)和FPR(真实为假例的样本中, 预测为正例比例), 在坐标系上描点
    5. 使用线把所有依次链接起来; 这个连接起来的线就是ROC曲线
    6. ROC曲线下面积就是AUC指标的值.
  2. AUC指标:

    • 概率意义; 随机选择一个正样本和一个负样本, 正样本得分大于负样本得分概率.
    • 几何意义: ROC曲线下面的面积 等价于对ROC求积分.
    • AUC指标作用: AUC指标越接近与1说明模型越好, AUC指标越接近与0.5说明模型越接近于乱猜, AUC<0.5乱猜都不如.

4.决策树

4.1 决策树算法简介

  • 决策树: 由多个判断节点组成树, 叶子节点就是判断结果.

4.2 决策树分类原理

  1. 信息熵

    • 用于描述信息的纯度, 信息熵越小, 纯度越高, 信息熵越大纯度越低
    • 公式: E n t ( D ) = k = 1 n p k l o g 2 p k Ent(D) = -\sum_{k=1}^n p_klog_2p_k
  2. 信息增益(ID.3)

    • 信息增益 = 划分前信息熵 - 按照某个属性划分后信息熵
    • 意义:
      • 信息增益越大, 说明这个属性越重要.
      • 在进行决策树属性划分的时候, 就选择信息增益大属性进行划分.
  3. 信息增益率(C4.5决策树算法):

    1. 信息增益率概念

      • 为了解决: 解决信息增益倾向于选择多分支属性的缺点.
      • 计算公式: 属性的信息增益/属性的信息分裂度量
    2. 信息增益率算法流程:

      1. 计算整体信息熵
      2. 计算按照每一个属性划分的条件熵
      3. 计算每一个属性的信息增益
      4. 计算每一个属性的信息分裂度量
      5. 计算每一个属性的信息增益率
      6. 选择信息增益率大的属性进行划分.
    3. C4.5算法的优点:

      1. 使用信息增益率来选择划分属性, 避免使用信息增益倾向于选择多分支属性的缺点
        • 属性信息增益率 =属性 信息增益 / 属性信息分裂度量
      2. 采用后剪枝的技术, 避免决策树的过拟合
      3. 可以处理缺失值.
  4. ID3算法: 使用信息增益作为划分属性的. 缺点: 倾向于选择多分支属性

    1. 基尼指数
    • 基尼值: 随机选择两个样本类别标记不一致概率; 基尼值越小信息纯度越高
      • 计算公式: G i n i ( D ) = 1 k = 1 y p k 2 Gini(D) = 1 - \sum_{k=1}^{|y|} p_k^2
    • 基尼指数: 按照某种分割方式划分的后的基尼值
      • 我们在进行决策树划分的时候, 就选择划分后基尼指数最小的划分方式进行划分.
    • CART决策树算法流程:
      1. 计算每一个属性的每一个划分方式的基尼指数
      2. 选择基尼指数最小的划分方式进行划分 N1, N2
      3. 如果划分的节点不纯, 重复1,2 继续划分
      4. 直到所有节点都纯为止.
知道逻辑回归的损失函数
- 对数似然损失
	- 特点: 
		- 真实类别为1, 概率值越大, 损失越小
		- 真实类别为0, 概率值越小, 损失越小
	- 优化:
		- 思想: 提高真实类别为1概率, 降低真实类别为0的概率
		- 做法:
			- 通过梯度下降求解损失函数最小值. 

知道逻辑回归的优化方法
-  提高真实类别为1概率, 降低真实类别为0的概率

知道sigmoid函数
- 作用: 把线性回归输出, 映射到(0,1)之间, 作为分类概率值, 如果大于阈值就是正例(1), 如果小于等于阈值就是反例(0)

知道逻辑回归的应用场景
- 用于二分类的预测
- 常见:
	- 是否患病
	- 是否是垃圾邮件
	- 是否放贷
	- 是不是电子诈骗
	- ...

应用LogisticRegression实现逻辑回归预测
- 创建逻辑回归评估器
- 调用fit方法训练模型
- 调用predict方法, 进行预测. 

# 4. 机器学习(训练逻辑回归模型)
estimator = LogisticRegression()
estimator.fit(x_train, y_train)

# 5. 模型评估
y_predict = estimator.predict(x_test)
print('预测值', y_predict)
print('真实值', y_test)

# 计算准确率
score = estimator.score(x_test, y_test)
print('准确率', score)


知道精确率、召回率指标的区别
精确率: 所有预测为正例的样本中, 真实为正例的比例(查的准不准)
召回率: 所有真实为正例的样本中, 预测为正例的比例(查的全不全)

知道如何解决样本不均衡情况下的评估
- 使用AUC指标, 进行评估

了解ROC曲线的意义说明AUC指标大小
- AUC的值就是ROC曲线下面的面积
- AUC越接近1, 模型越好, 越接近与0.5越接近与乱猜. 

应用roc_auc_score实现指标计算
# AUC指标
from sklearn.metrics import roc_auc_score
# 把真实的目标值, 转换为0,1
y_true = np.where(y_test==4, 1, 0)
# y_true
# 计算AUC指标
rs = roc_auc_score(y_true, y_predict)
print('AUC指标',rs)

应用classification_report实现精确率,召回率计算
# 精确率, 召回率, F1-Score
from sklearn.metrics import classification_report
ret = classification_report(y_test, y_predict, labels=[2, 4], target_names=['良性', '恶性'])
print(ret)

掌握决策树实现过程
- 选择对分类来说最重要属性进行划分
- 如果划分节点不纯, 继续 选择对分类来说最重要属性进行划分
- 直到所有的节点都纯了为止. 

知道信息熵的公式以及作用
- 类别的信息熵 = 这个属性每一个分支的概率*这个概率值的对数求和, 整体加负号. 

知道信息增益的作用
1. 用于衡量某个属性对分类重要程度的指标. 
2. 在决策树中, 选择信息增益大属性进行划分. 

知道信息增益率的作用
1. 用于衡量某个属性对分类重要程度的指标. 
2. 在决策树中, 选择信息增益率大属性进行划分. 
3. 避免了信息增益倾向于选择多值的属性的缺点


知道基尼指数则作用
基尼指数: 按照某个属性的某个分割方式分割后的基尼值. 
基尼指数越小, 就说明按照这种分割方式分割后纯度越高
在决策树中, 就选择基尼指数最小的划分方式进行划分. 

知道id3,c4.5,cart算法的区别
id3决策树算法:
	1. 使用信息增益作为划分依据, 倾向于选择多值属性
	2. 只能处理的离散属性, 不能处理的连续属性

C4.5决策树
	1. 使用信息增益率作为划分依据, 避免使用信息增益倾向于选择多值属性的缺点
	2. 可以处理离散属性和连续属性
	3. 使用后剪枝技术, 避免了决策树过拟合
	4. 能够处理缺失值. 
CART决策树
	1. 使用基尼指数作为划分依据
	2. 可以处理离散属性和连续属性
	3. 计算量比较小, 速度比较快. 
	4. CART决策树一定是一个二叉树. 


发布了112 篇原创文章 · 获赞 289 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/WeiLanooo/article/details/102641859
今日推荐