数据分离与混淆矩阵
建立模型的意义,不在于对训练数据做出准确预测,更在于对新数据的准确预测。在分类中,如何评判模型的好坏呢,之前的学习中主要是通过计算测试数据集预测准确率(accuracy)以评估模型表现,但是现在有了更好的评估方案,那就是混淆矩阵。另外在仅有训练数据的情况下如何评估模型表现呢?这个时候就需要做一些数据分离的工作。最后会讨论模型的选择与优化相关的问题。
数据分离
前面学习过的示例基本流程都是这样的,通常来说分为5步:
按照这个流程的前提是我们要有新数据来作为测试数据供我们使用,那么如果我们没有新数据用于模型评估表现怎么办呢?这时就需要用到数据分离了。简单来说数据分离就是对全数据进行数据分离,部分数据用来训练,部分数据用于新数据的结果预测。
分离训练数据与测试数据,把数据分成两部分:训练集、测试集
1.使用训练集数据进行模型训练
2.使用测试集数据进行预测,更有效地评估模型对于新数据的预测表现
混淆矩阵
分类任务中,计算测试数据集预测准确率(accuracy)以评估模型表现
accuracy的局限性: 无法真实反映模型针对每个分类的预测准确度:
来看看 0-1 二分类的的例子:
其实很好理解,虽然accuracy计算的准确率都是90%,但是建立模型的意义来看明显模型1的效果是远远超出模型2的。模型2这种情况就是空准确率!
准确率可以方便的用于衡量模型的整体预测效果,但无法反应细节信息,具体表现在:
1、没有体现数据预测的实际分布情况 (0、1本身的分布比例)
2、没有体现模型错误预测的类型
混淆矩阵,又称为误差矩阵用于衡量分类算法的准确程度。
True Positives(TP): 预测准确、实际为正样本的数量(实际为1,预测为1)
True Negatives(TN): 预测准确、实际为负样本的数量 (实际为0,预测为0)
False Positives(FP): 预测错误、实际为负样本的数量(实际为0,预测为1)
False Negatives(FN): 预测错误、实际为正样本的数量(实际为1,预测为0)
(预测结果正确或错误,预测结果为正样本或负样本)
通过混淆矩阵,可以计算更丰富的模型评估指标:
0-1二分类的采用混淆矩阵评估示例
用混淆矩阵来看看 0-1 二分类的的例子:
实际:900个1,100个0
预测:1000个,0个0;
假设负样本为0,正样本为1
则 TP = 900,FP = 100,TN = 0,FN = 0
混淆矩阵指标特点
1、分类任务中,相比单一的预测准确率,混淆矩阵提供了更全面的模型评估信息(TP\TN\FP\FN)
2、通过混淆矩阵,我们可以计算出多样的模型表现衡量指标,从而更好地选择模型。
那么哪个衡量指标更关键呢?其实衡量指标的选择取决于应用场景!
垃圾邮件检测(正样本为“垃圾邮件”) 希望普通邮(负样本)不要被判断为垃圾邮(正样本),即:判断为垃圾邮件的样本都是判断正确的,需要关注精确率,还希望所有的垃圾邮件尽可能被判断出来,需要关注召回率。
异常交易检测(正样本为“异常交易”) 希望判断为正常的交易 (负样本)中尽可能不存在异常交易,还需要关注特异度。
模型选择与优化
那么如何提高模型表现呢?
:::tip{title=“数据质量决定模型表现质量的上限!"} :::
Always check:
1、数据属性的意义,是否为无关数据
2、不同属性数据的数量级差异性如何
3、是否有异常数据,可以用异常检测看看异常的数据点
4、采集数据的方法是否合理,采集到的数据是否有代表性
5、对于标签结果,要确保标签判定规则的一致性 (统一标准)
Always try:
1、删除不必要的属性
2、数据预处理: 归一化、标准化
3、确定是否保留或过滤掉异常数据
4、尝试不同的模型,对比模型表现
Benefits:
1、减少过拟合、节约运算时间
2、平衡数据影响,加快训练收敛
3、提高鲁棒性
4、帮助确定更合适的模型
查找异常数据,通过可视化的方式看看异常点:
对比各个特征的数据范围,看看属性之间是否接近:
PCA分析,看看数据维度是否能减少:
尝试不同的模型,看看准确率:
目标: 在确定模型类别后,如何让模型表现更好
三方面:数据、模型核心参数、正则化,可以尝试以下方法:
1、遍历核心参数组合,评估对应模型表现(逻辑回归边界函数考虑多项式、KNN尝试不同的n_neighbors值)
2、扩大数据样本
3、增加或减少数据属性
4、对数据进行降维处理
5、对模型进行正则化处理,调整正则项入的数值
n_neighbors值越小,KNN模型复杂度越高,可能效果也会变好(注意是可能,并不是越复杂越好)。
问题: 以下说法,哪些是错误的,为什么?
- A、为了达到更好的预测效果,用于训练的数据越多越好
- B、样本数据噪音大,只要模型选的好,就能弥补数据的不足
- C、选择模型时,选择准确率最高的即可
- D、通过可视化数据,有助于分析模型表现与选择合适的模型
下面我说说我的观点:A错误,并不是越大越好,而是覆盖越全、类别均匀、特征明显、维度合适、异常数据少才是比较好的样本数据。B错误,噪音大应该想办法去除噪声,而且不是在选择模型上死磕。C错误,根据混淆矩阵,根据业务选择合适的评估指标才对。D正确。