目录
0 温馨提示
本博客适用于了解了一些最基础的数据分析,对机器学习有一个最初的概念的学习,即此博客不会过多的去从科普的角度去讲解,反而是从较为学术的方面去学习。
1 绪论
1-1 机器学习的基本术语
样本:每一条记录或者说我们研究具体的对象
数据集:所有样本的集合
特征:样本所表现出来的特点或者抽象出来的一些属性
特征向量:由特征所组成的集合形成的向量
维数:特征向量所包含元素的个数,即有多少个特征就有多少维
训练集:训练用的集合
测试集:测试集用的集合
分类问题:对样本进行分类,如根据年龄将人分为小孩,青年和老人
回归问题:对样本进行预测,如根据年龄判断这个人下一个阶段是什么
监督学习:将样本打上标签在进行机器学习任务
无监督学习:没有标签,即让机器学习自己分类,常见有聚类和关联
2 模型的评估与选择
2-1 误差与过拟合
误差即为:让机器学习之后的值和真实的值之间的差异。不言而喻,在训练集上的误差为训练误差,在测试集上的误差为测试误差。
然而,当学习器把训练集学得“太好”的时候,即把一些训练样本的自身特点当做了普遍特征,此时即为:过拟合。同时也有学习能力不足的情况,即训练集的基本特征都没有学习出来,此时即为:欠拟合。
2-2 评估方法
我们常常在训练集上进行机器学习的训练,在测试集上进行评估这个方法的能力。即在训练集上的学习就相当于平时的练习,测试集上的评估就相当于是期末的测试。如果只会平时的练习题而不会期末考试,就相当于不会举一反三,此时就是过拟合,即只会训练集上的东西。如果平时的练习题都不会,期末考试也不会,此时就是欠拟合,即并没有学习成功。
2-3 训练集和测试集的划分
2-3-1 留出法
将数据集D划分为两个互斥的集合,一个作为训练集S,一个作为测试集T,满足D=S∪T且S∩T=∅,常见的划分为:大约2/3-4/5的样本用作训练,剩下的用作测试。需要注意的是:训练/测试集的划分要尽可能保持数据分布的一致性,以避免由于分布的差异引入额外的偏差,常见的做法是采取分层抽样。同时,由于划分的随机性,单次的留出法结果往往不够稳定,一般要采用若干次随机划分,重复实验取平均值的做法。
2-3-2 交叉验证法
将数据集D划分为k个大小相同的互斥子集,满足D=D1∪D2∪...∪Dk,Di∩Dj=∅(i≠j),同样地尽可能保持数据分布的一致性,即采用分层抽样的方法获得这些子集。交叉验证法的思想是:每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就有K种训练集/测试集划分的情况,从而可进行k次训练和测试,最终返回k次测试结果的均值。交叉验证法也称“k折交叉验证”,k最常用的取值是10,下图给出了10折交叉验证的示意图。
2-4 调参
大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别,这就是通常所说的"参数调节"或简称"调参"。
2-5 性能度量
2-5-1 最常见的性能度量
在回归任务中,最常见的是利用均方误差。
在分类任务中,则是看预测正确的个数占总数的多少,分类错误的则是由错误率反应,分类正确的则是由精度表示。
2-5-2 差准率/查全率/F1
当在二分类时只关心正例的时候,可以利用查准率和查全率。例如:在推荐系统中,我们只关心推送给用户的内容用户是否感兴趣(即查准率),或者说所有用户感兴趣的内容我们推送出来了多少(即查全率)。在二分类问题中,有:
real=1 | real=0 | |
predict=1 | TP | FP |
predict=0 | FN | TN |
TP: 预测为1(Positive),实际也为1(Truth-预测对了)
TN: 预测为0(Negative),实际也为0(Truth-预测对了)
FP: 预测为1(Positive),实际为0(False-预测错了)
FN: 预测为0(Negative),实际为1(False-预测错了)
精度定义为:Accuracy = (预测正确的样本数)/(总样本数)=(TP+TN)/(TP+TN+FP+FN)
查准率定义为:Precision = (预测为1且正确预测的样本数)/(所有预测为1的样本数) = TP/(TP+FP)
查全率定义为:Recall = (预测为1且正确预测的样本数)/(所有真实情况为1的样本数) = TP/(TP+FN)
将p-r结合起来使用便是p-r曲线。这个博客讲的比较清楚,参考文章:
PR曲线 可算是明白了 precision recall曲线_precision recall curve-CSDN博客
若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。
P和R指标有时会出现矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure,又称F-Score。F-Measure是P和R的加权调和平均,即:
特别地,当β=1时,也就是常见的F1度量,是P和R的调和平均,当F1较高时,模型的性能越好。
2-5-3 ROC和AUC
学习器对测试样本的评估结果一般为一个实值或概率,设定一个阈值,大于阈值为正例,小于阈值为负例,因此这个实值的好坏直接决定了学习器的泛化性能,若将这些实值排序,则排序的好坏决定了学习器的性能高低。ROC曲线正是从这个角度出发来研究学习器的泛化性能,ROC曲线与P-R曲线十分类似,都是按照排序的顺序逐一按照正例预测,不同的是ROC曲线以“真正例率”(True Positive Rate,简称TPR)为横轴,纵轴为“假正例率”(False Positive Rate,简称FPR),ROC偏重研究基于测试样本评估值的排序好坏。
具体可参考博客:
机器学习常用评价指标:ACC、AUC、ROC曲线_acc auc-CSDN博客
可以得知:当FN=0时,TN也必须0,反之也成立,我们可以画一个队列,试着使用不同的截断点(即阈值)去分割队列,来分析曲线的形状,(0,0)表示将所有的样本预测为负例,(1,1)则表示将所有的样本预测为正例,(0,1)表示正例全部出现在负例之前的理想情况,(1,0)则表示负例全部出现在正例之前的最差情况。
同样地,进行模型的性能比较时,若一个学习器A的ROC曲线被另一个学习器B的ROC曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。ROC曲线下的面积定义为AUC(Area Uder ROC Curve),不同于P-R的是,这里的AUC是可估算的,即AOC曲线下每一个小矩形的面积之和。易知:AUC越大,证明排序的质量越好,AUC为1时,证明所有正例排在了负例的前面,AUC为0时,所有的负例排在了正例的前面。
2-5-4 代价敏感错误率和代价曲线
上面的方法中,将学习器的犯错同等对待,但在现实生活中,将正例预测成假例与将假例预测成正例的代价常常是不一样的,例如:将无疾病-->有疾病只是增多了检查,但有疾病-->无疾病却是增加了生命危险。以二分类为例,由此引入了“代价矩阵”(cost matrix)。
具体可以参考博客:
代价敏感错误率与代价曲线_代价敏感错误率中两个竖线-CSDN博客