机器学习--2
今日阅读了《机器学习》的第二章模型评估与选择,实际上内容与Ng的机器学习第六周的课程有很多相似之处。大致是讲了对模型的准确率与性能做一个评估。
模型评估:我们希望得到一个在新样本上表现比较好的学习器,即泛化误差比较小,因此我们就需要利用数据来测试学习器的泛化误差,看学习器是否从训练样本中学到了潜在的普遍规律。然而我们并不知道新样本是什么样,只能通过测试集上的测试误差来作为泛化误差的近似。取不同的测试集,测试误差便会不同,那要如何取测试集呢。
留出法:将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个集合作为测试集T。在S上训练出模型后,用T来评估测试误差作为泛化误差。只评估一次的结果往往不可靠,一般采用若干次随机划分 、重复进行实验后取平均值作为留出法的评估结果。
交叉验证法:与留出法类似,区别是将数据集D划分为k个不相交子集,每次用k-1个作为训练集,1个作为测试集,这样就可以进行k次训练和测试,这种方法又称为‘k折交叉验证’。
自助法:对数据集D进行有放回的取样,取出与数据集大小相等的数据作为验证集。优点是测试集与验证集大小相等,缺点是改变了初始数据集的分布,可能会有估计误差。
以上三个方法解决了用什么数据做评估,那么怎么衡量模型的好坏呢?
性能度量:对学习器的泛化性能做评估,主要凭借以下几个指标:
错误率:分类错误的样本占样本总数的比例。
精度:分类正确的样本占样本总数的比例。
查准率:预测为正例的样本中,真正的正例所占的比例。
查全率:所有正例中被预测为正例的比例。
利用不同的指标做评估,得到的结果也不同,模型的好坏,完全取决于所选用的指标。例如我们若想好瓜尽可能地都被挑出来,就要提高查全率,若将所有瓜都选上,那么所有好瓜就都被选上了,而此时查准率就比较低。若希望选中的瓜中好瓜的比例尽可能高,则只挑选最有把握的瓜,这样难免就会漏掉不少好瓜。
一般查全率高了,查准率就会低,查准率高时,查全率就会低。利用P-R图,可以直观地看到二者的变化。利用F1度量,可以选出较为‘双高’的模型,或是利用Fβ度量,根据查全率和查准率的加权调和平均选出更希望得到的模型。
比较检验:用测试误差来近似泛化误差,终究是不准确的,我们有多大把握说两者相等呢?
基于统计与概率学的知识(概率论忘光了,没太看懂),可以求出对于泛化性能的置信度α。
泛化误差实际分为偏差和方差两种,二者其中之一的提高都会导致最终误差的提高(Error = Bias + Variance)。偏差高实际上说明了模型欠拟合,方差高则说明了模型过拟合。在一个实际问题中,两者往往是不可兼得的,降低一方,另一方就会提高,我们要做的就是对二者进行tradeoff,这也是机器的学习一个基本主题。知道了这点,我们来看如何对模型进行调整:
1. 获得更多的训练样本——解决高方差
2. 尝试减少特征的数量——解决高方差
3. 尝试获得更多的特征——解决高偏差
4. 尝试增加多项式特征——解决高偏差
5. 尝试减少正则化程度λ——解决高偏差
6. 尝试增加正则化程度λ——解决高方差
掌握了这些方法,就能明确自己下一步的目标,解决自己模型中存在的问题。