模型评估
模型评估
zhou模型评估
机器学习入门到精通!不愧是公认的讲的最好的【机器学习全套教程】同济大佬12小时带你从入门到进阶(机器学习/线性代数/人工智能/Python)听课笔记
前言
Sklenrn工具包简介
链接:scikit-learn: machine learning in Python — scikit-learn 1.3.2 documentation
Sklearn能做分类,回归,聚类、降维、模型选择、预测
还能查询API,API里面还有示例
Examples里面有各种示例,还展示怎么可视化,可以进行学习
数据集划分
Sklearn里面有很多内置数据集
划分测试集和训练集
洗牌
因为我们不希望模型学习到因为排列而形成的关系,洗牌可以只洗训练集
交叉验证
测试集是宝贵的资源,是模型性能的最终测试。而在训练集里面做交叉验证,一方面是不使用测试集的资源,另一方面是为了提高模型性能
交叉验证:把训练集切成多个部分。每次训练时,用大部分用作训练模型,拿剩下的部分当作此次训练的验证集。但是测试成绩受拿被当作测试集的训练集的数据影响很大,所以这里引入交叉,每次用不一样的部分来当作验证集。最后求一次平均值,就可以得到一个比较准确的验证集结果。
所以交叉验证共有三种数据集:训练集、验证集、测试集
混淆矩阵
TP:是在做的对的前提下,找出了目标
TN:在做对的前提下,找出了反例
FN:是在做错的前提下,把正例当成了反例
FP:是在做错的前提下,把反例当成了正例
精度和召回率
准确率:
精度:(实际上精度和真正率是一回事)
召回率:
F1分数
假如以恶性肿瘤检测的示例来进行理解,FP就是误诊,FN就是漏诊。对应到精度和召回率就是,精度对应的就是误诊,召回率对应的就是漏诊。如果我们想要减小误诊,那就会提高PRE,就是强调所预测患者患有恶性肿瘤的正确性,这样就会增大漏诊。相反我们想要优化召回率,就会专注于最大限度地减少漏测恶性肿瘤的机会,这样就会增大误诊的概率。
所以实际中通常采用PRE和REC的组合,即所谓的F1分数
F1分数被称为调和平均值,在分母的中,谁更小,谁对F1分数的值影响大。调和平均值会给低值更多的权重
阈值
分类器,在模型训练之后,得到的是数值,更有可能是什么。而不是一个直接的0或者1,True或者False。所以我们可以设置一个阈值,来影响最后的类别判断。
而且,阈值对于召回率和精度影响也是呈反比的
第一处,是把2和6认成了5,
第二处,左边两个5被认为不是5,是正例被当作反例,FN=2,TP=4,右边还有一个6被认成了5,FP=1
第三处以此类推
ROC曲线
ROC(受试者工作特征)曲线是选择分类模型的有用工具,他以FPR(FP rate)和TPR(TP rate)的性能比较结果为移除,通过移动分类器的阈值完成计算。ROC曲线和精度召回曲线类似
中间虚线对角线表示纯随机分类器的ROC曲线,一个好的分类器尽量远离该线
比较分类器的一种方法是测量曲线下面积 (AUC) 。完美分类器的 ROC AUC 等于 1 ,而纯随机分类器的 ROC AUC 等于 0 . 5 。