数据分离与混淆矩阵

数据分离

模型训练与评估流程

sequenceDiagram
participant 数据载入
participant 数据可视化预处理
participant 模型创建
participant 全数据用于模型训练
participant 模型评估

数据载入->>数据可视化预处理: 
数据可视化预处理->>模型创建: 
模型创建->>全数据用于模型训练: 
全数据用于模型训练->>模型评估: 

没有新数据用于评估模型表现怎么办?

对全数据进行数据分离,部分用于训练,部分用于新数据的结果预测。

流程

  1. 把数据分成两部分:训练集、测试集
  2. 使用训练集数据进行模型训练
  3. 使用测试集数据进行预测,更有效的评估模型对于新数据的预测表现。

代码实战

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=4,test_size=0.4)

混淆矩阵(Confusion Matrix)

概念: 混淆矩阵,又称为误差矩阵,用于衡量分类算法的准确程度。

预测结果 预测结果
0 1
实际结果 0 True Negative(TN) False Positive(FP)
实际结果 1 False Negative(FN) True Positive(TP)
  • True Negative(TN):预测准确,实际为负样本的数量(实际0,预测0)
  • True Positive(TP):预测准确,实际为正样本的数量(实际1,预测1)
  • False Positive(FP):预测错误,实际为负样本的数量(实际0,预测1)
  • False Negative(FN):预测错误,实际为正样本的数量(实际1,预测0)

准确率评估问题

分类任务中,计算测试数据集预测准确率(accuracy)以评估模型表现
局限性:无法真实反映模型针对各个分类的预测准确度

举例

假如有如下一千个数据:数据中有900个1,和100个0,预测是0或1
模型1:预测出850个1预测正确,50个0预测正确,正确率90%
模型2:预测所有的样本结果都是1,准确率90%(空准确率)

准确率可以方便的用于衡量模型的整体预测效果,但无法反映细节信息,具体表现在:

  • 没有体现数据预测的实际分布情况(0、1本身的分布比例)
  • 没有体现模型错误预测的类型

更多模型评估指标

通过混淆矩阵,计算更丰富的模型评估指标 WX20230313-215845

混淆矩阵指标特点

  • 分类任务中,相比单一的预测准确率,混淆矩阵提供了更全面的模型评估信息
  • 通过混淆矩阵,我们可以计算出多样的模型表现衡量指标,从而更好地选择模型

哪个衡量指标更关键?

  • 衡量指标的选择取决于应用场景
  • 垃圾邮件检测(正样本为“垃圾邮件”):希望普通邮件(负样本)不要被判断为垃圾邮件(正样本),即:判断为垃圾邮件的样本都是判断正确的,需要管局精确率,还希望所有的垃圾邮件尽可能被判断出来,需要关注召回率
  • 异常交易检测(正样本为“异常交易”):希望判断为正常的交易(负样本)中尽可能不存在异常交易,还需要关注特异度