机器学习笔记(二)—— 判断模型的好坏
作者:互联网
一、 划分训练集和测试集
- 训练集:用于训练模型的集合
- 测试集:用于测试训练模型的集合。
常见的数据集拆分方法:
1. 留出法
留出法(hold-out)直接将数据集D拆分成两个互斥的集合,其中一个作为训练集S,另一个作为测试集T。即D=S∪T,S∩T=∅。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
注意:(1)训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。
(2)不同的划分将导致不同的训练/测试集,模型评估的结果也有差别。
(3)常见的作法是将约2/3~4/5的样本用于训练,剩余样本用于测试。
2. 交叉验证法
交叉验证法(cross validation)先将数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保证数据分布的一致性,即从D中通过分层采样得到。然后每次用k-1个子集的并集作为训练集,余下那个作为测试集,这样就可以获得k组训练/测试集,从而可进行k次训练和测试,最终返回这k个测试结果的均值。k常用取值为10,此时称为10折交叉验证。其他常用的k值有5,20等。
3. 自助法
自助法以自助采样法为基础。可以较好的减少训练样本规模不同造成的影响,同时还能比较高效地进行实验估计。给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,就得到了包含m个样本的数据集D’,这就是自助采样的结果。D中有一部分样本会在D’中多次出现,而另一部分样本不出现。样本在m次采样中不被采到的概率大约为0.368。
自助法在数据集小、难以有效划分训练/测试集时很有用;自助法能从初始数据集中产生多个不同的训练集,对继承学习方法有很大的好处。
二、 评价分类结果:精准度、混淆矩阵、精准率、召回率、F1 Score、ROC曲线等
1.精准率(查准率):
预测值为1,且预测对了的比例,即:我们关注的那个事件,预测的有多准。
2.召回率(查全率):
所有真实值为1的数据中,预测对了的个数,即:我们关注的那个事件真实的发生情况下,我们成功预测的比例是多少。
一般而言,查准率和查全率是一对矛盾的度量。查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
在选择度量取舍时,往往需要根据场景而定。在股票未来走势这样的二分类问题,看涨一般是人们所关注的,在上涨的股票中,真正上涨的比例越大越好,这就是希望查准率高。即使遗漏了一些上涨周期,对于我们也没有太大损失。而对于医疗领域疾病诊断,如果召回率低,就意味着本来病人得病了,单未有预测出来,所以我们希望尽可能的将所有患者都预测出来,因此就是需要提高查全率。
3.混淆矩阵:
对于二分问题,可将其真实类别与学习器预测类别组合划分为真正例(TP)、假正例(FP)、真反例(TN)、假反例(FN)四种情况。TP+FP+TN+FN=样例总数,形成的矩阵,如下:
预测结果 | 预测结果 | |
---|---|---|
真实情况 | 正例 | 反例 |
正例 | TP | FN |
反例 | FP | TN |
其中:
(1)查准率Precision =TP/(TP+FP)
(2)查全率, 灵敏度,召回率,真阳性率 Recall =TPR=TP/(TP+FN)
(3)真阴性率TNR ,特异度 TNR= TN/(FP+TN)
(4)假阴性率FNR ,漏诊率(1-灵敏度) FNR = FN/(TP+FN)
(5)假阳性率FPR ,误诊率(1-特异度) FPR=FP/(FP+TN)
4.F1 Score:
如果我们要同时兼顾精准率(P)和召回率(R)这两个指标,F1 Score是精准率和召回率的调和平均数。
F1=2PR/(P+R)
即 1/F1=(1/P +1/R)/2
5.分类阈值:
即设置判断样本为正例的阈值threshold。
如果某个逻辑回归模型对某封电子邮件进行预测时返回的概率为 0.9995,则表示该模型预测这封邮件非常可能是垃圾邮件。相反,在同一个逻辑回归模型中预测分数为 0.0003 的另一封电子邮件很可能不是垃圾邮件。可如果某封电子邮件的预测分数为 0.6 呢?为了将逻辑回归值映射到二元类别,您必须指定分类阈值(也称为判定阈值)。如果值高于该阈值,则表示“垃圾邮件”;如果值低于该阈值,则表示“非垃圾邮件”。人们往往会认为分类阈值应始终为 0.5,但阈值取决于具体问题,因此您必须对其进行调整。
precision随着threshold的增加而降低,recall随着threshold的增大而减小。如果某些场景需要precision,recall都保持在80%,可以通过这种方式求出threshold。
6.ROC曲线:
ROC曲线(Receiver Operation Characteristic Cureve),描述TPR和FPR之间的关系。x轴是FPR,y轴是TPR。
TPR就是所有正例中,有多少被正确地判定为正;FPR是所有负例中,有多少被错误地判定为正。 分类阈值取不同值,TPR和FPR的计算结果也不同,最理想情况下,我们希望所有正例 & 负例 都被成功预测 TPR=1,FPR=0,即 所有的正例预测值 > 所有的负例预测值,此时阈值取最小正例预测值与最大负例预测值之间的值即可。
TPR越大越好,FPR越小越好,但这两个指标通常是矛盾的。为了增大TPR,可以预测更多的样本为正例,与此同时也增加了更多负例被误判为正例的情况。
ROC曲线距离左上角越近,证明分类器效果越好。左上角的点为完美分类,(TPR=1,FPR=0),表示为医生医术高明,诊断全对。
7.AUC:
一般在ROC曲线中,我们关注是曲线下面的面积, 称为AUC(Area Under Curve)。这个AUC是横轴范围(0,1 ),纵轴是(0,1)所以总面积是小于1的。
ROC曲线下方由梯形组成,矩形可以看成特征的梯形。因此,AUC的面积可以这样算:(上底+下底)* 高 / 2,曲线下面的面积可以由多个梯形面积叠加得到。AUC越大,分类器分类效果越好。
• AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
• 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
• AUC = 0.5,跟随机猜测一样,模型没有预测价值。
• AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
三、评价回归结果:MSE、RMSE、MAE、R Squared
1.均方误差MSE
测试集中的数据量m不同,因为有累加操作,所以随着数据的增加 ,误差会逐渐积累;因此衡量标准和 m 相关。为了抵消掉数据量的形象,可以除去数据量,抵消误差。通过这种处理方式得到的结果叫做 均方误差。该统计参数是预测数据和原始数据对应点误差的平方和的均值
MSE(Mean Squared Error):
2.均方根误差RMSE
但是使用均方误差MSE收到量纲的影响。例如在衡量房产时,y的单位是(万元),那么衡量标准得到的结果是(万元平方)。为了解决量纲的问题,可以将其开方(为了解决方差的量纲问题,将其开方得到平方差)得到均方根误差RMSE(Root Mean Squarde Error):
3.平均绝对误差MAE
对于线性回归算法还有另外一种非常朴素评测标准。要求真实值与 预测结果之间的距离最小,可以直接相减做绝对值,加m次再除以m,即可求出平均距离,被称作平均绝对误差MAE(Mean Absolute Error):
在之前确定损失函数时,我们提过,绝对值函数不是处处可导的,因此没有使用绝对值。但是在评价模型时不影响。因此模型的评价方法可以和损失函数不同。
4.R-Square(确定系数)
确定系数主要由SSR、SST这两个参数决定。
(1)SSR:Sum of squares of the regression,即预测数据与原始数据均值之差的平方和,公式如下
(2)SST:Total sum of squares,即原始数据和均值之差的平方和,公式如下
可知:SST=SSE+SSR
而我们的“确定系数”是定义为SSR和SST的比值,故
“确定系数”是通过数据的变化来表征一个拟合的好坏。由上面的表达式可以知道“确定系数”的正常取值范围为[0 1],越接近1,表明方程的变量对y的解释能力越强,这个模型对数据拟合的也较好.
R方这个指标为什么好呢?
对于分子来说,预测值和真实值之差的平方和,即使用我们的模型预测产生的错误。
对于分母来说,是均值和真实值之差的平方和,即认为“预测值=样本均值”这个模型(Baseline Model)所产生的错误。
我们使用Baseline模型产生的错误较多,我们使用自己的模型错误较少。因此用1减去较少的错误除以较多的错误,实际上是衡量了我们的模型拟合住数据的地方,即没有产生错误的相应指标。
我们根据上述分析,可以得到如下结论:
R^2 <= 1
R2越大也好,越大说明减数的分子小,错误率低;当我们预测模型不犯任何错误时,R2最大值1
当我们的模型等于基准模型时,R^2 = 0
如果R^2 < 0,说明我们学习到的模型还不如基准模型。此时,很有可能数据不存在任何线性关系。
标签:正例,AUC,预测,阈值,模型,笔记,TPR,好坏 来源: https://blog.csdn.net/weixin_43312354/article/details/104739970