模型评估与选择

来源:互联网 发布:美工钢笔怎么写字 编辑:程序博客网 时间:2024/05/01 22:21

评估方法

  1. 留出法:直接将数据集D划分为两个互斥的集合,其中一个是训练集S,另一个是测试机(准确说是验证集)T。训练集和验证集的划分要尽可能保持数据分布一致。常用作法将数据集的2/3 ~ 4/5用作训练集,其余的用作验证集。由于存在很多种把数据集进行划分的方法,所以,通常进行多次数据集的划分。最后返回多次划分集合结果的平均值。例如进行了100次集合数据的划分,则求100次结果的平均值。
  2. 交叉验证法(cross validation):将数据集D分成k个子集,互相独立,保证每个子集的数据分布一致。之后,每次使用K-1个子集合并作为训练集,剩下的一个子集作为验证集,这样可以得到k个训练集/验证集。从而进行k次训练和测试。最终返回k个测试结果的平均值。通常k为10,成为10折交叉验证。k也可以取5,20等。同样,对数据集进行k次划分有很多种方法,通常进行p次k折交叉验证,最后求均值。最常见的为10次10折交叉验证。当k=m(数据条数)时,叫做留一法。这样结果效果好,但计算量太大。
  3. 自助法(bootstrapping):无论是留出法还是交叉验证法,都要留出一部分作为验证数据,不能把所有数据用作训练,从而降低了训练集数据规模。自助法可以避免此种情况发生。给定m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝到D’中,然后将样本放回到D中,从复m次。通过自助法,D中36.8%的样本未出现在D’中。我们将D’当做训练集,D\D’当做验证集。自助法在数据集较小,难以有效划分时很有用。自助法产生的数据集改变了初始数据集的分布,会引入偏差。因此,在初始数据集足够时,留出法和交叉验证法更常用一些。
  4. 调参及最终模型:在模型选择完成后,学习算法和参数配置已选定,此时应用数据集D重新训练模型,将结果作为最终结果。

性能度量

  1. 衡量模型泛化能力的标准,包括错误率与精度查准率查全率和F1ROC和AUC代价敏感错误率与代价曲线
  2. 错误率:分错样本占全体样本的比例。精度:1-错误率。
  3. 查准率:在所有你预测为正例的集合中,真正是正例的概率,TP/(TP + FP);查全率:在所有真正是正例的集合中,你预测对了的概率,TP/(TP + FN);查准率和查全率是一对矛盾量。查全率越高,查准率越低。一般情况下,可以根据P-R曲线来观察哪个学习器更优秀。从图中可以看到,A曲线包含了C曲线,说明学习器A的性能比C的好。至于A和B哪个好,不好说,因为他们不包含彼此。但还是有几种方法进行比较。1)可以比较A曲线和B曲线围成的面积。谁的大,说明谁得性能好。但是这种方法不好测量面积大小,所以需要综合考虑R和P。2)可以查看A和B曲线和y=x虚线的交点。可以看到和A的交点在和B的交点的外面,所以从交点位置来看,A曲线比B曲线好。那个交点叫做“平衡点”(Break-Even Point)。但是根据BEP显得有点简单。有一个更常用的度量指标是F1。3)F1 = (2*TP)/(样例总数 + TP - TN) 一般式为,其中表示查全率对查准率的相对重要性。=1为F1。如果>1,说明查全率更有影响;如果<1,则查准率更有影响。
  4. 对于一些测试样例,我们对它们进行预测后,根据预测结果进行排序。例如如果预测结果为连续值,当大于某一个阈值,则结果为正例,否则为反例。把最可能为正例的样例排在第一位,最可能是反例的样例排在最后一位,按照这个顺序对测试结果进行排序。对结果排序质量的好坏体现了学习器泛化性能的好坏ROC(Receiver Operating Characteristic:受试者工作特性)就是从这个角度研究学习器的性能。ROC曲线的横轴为“假正率”(FPR),纵坐标为“真正率”(TPR)。FPR = FP/(FP + TN),TPR = TP/(TP + FN) = R(查全率 or 召回率)。那么如何绘制ROC呢?现实任务中,只能通过有限的样例来绘制ROC曲线,这样我们就无法绘制出理想的光滑ROC曲线。现实的ROC曲线为阶梯曲线。给定m+个正例和m-个反例,根据学习器预测结果进行样例排序,然后把阈值设置为最大,这样所有的样例都为反例,此时TPR和FPR都为0。在坐标(0,0)处标一个点。然后将阈值设置为每一个样例的预测值,即依次将每个样例划分为正例,这样每次更改阈值时,正例的数量都要+1。设前一个标记点为(x,y),当前若为真正例,则对应标记点的坐标为(x,y + 1/m+);若当前为假正例,则对应的标记点的坐标为(x + 1/m-, y)。然后连续连接相邻点即可。AUC(Area Under ROC Curve)代表ROC曲线下的面积。与P-R图相似,如果一条ROC曲线包含另一条ROC曲线,则前者的学习器性能更优越。如果曲线有交叉,则可以通过计算AUC大小得到。
  5. 代价敏感错误率和代价曲线:现实任务中,不同错误所造成的结果是不同的。为衡量不同类型错误所造成的不同损失,可为错误赋予“非均衡代价”(unequal cost)。例如二分类任务,,现实任务中,把第0类错误的预测成第1类错误,代价为cost01。同样,把第1类错误的预测成第0类错误,代价为cost10。通常cost01 ≠ cost10。则代价敏感错误率  在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”(cost curve)可以达到该目的。代价曲线图横轴取值为[0,1]的正例概率代价,其中p为样例的正例概率;纵轴是取值为[0,1]的归一化代价,其中FPR为假正率,FNR = 1-TPR是假反率。代价曲线绘制方法:ROC曲线上的每一点对应了代价平面上的一条线段,设ROC曲线上的点的坐标为(TPR,FPR),则可以计算出FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的直线,直线下的面积代表该条件下的期望总体代价;将ROC上的点全都转换为直线,然后取所有线段下界,围城的面积即为在所有条件下的学习器的期望总体代价。

偏差与方差

  1. 对于学习算法,我们可以通过实验估计其泛化性能。但是,我们还想知道该算法为什么具有这样的泛化性能。我们可以使用“偏差-方差分解”解释。对于测试样本x,另为x在数据集中的预测结果,y为真是结果。f(x;D)表示在数据集D上训练得到的模型f在测试样本x上预测结果。以分类任务为例,学习算法的期望预测为。使用样本数目相同的不同训练集产生的方差为。噪声为。期望输出与真实结果的差别成为偏差,。则泛化误差E(f;D) =  = 偏差 + 方差 + 噪声。偏差刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。噪声表达了学习问题本身的难度。给定学习任务,为了取得好的泛化性能,则需要使偏差较小,即能充分拟合数据,并使方差较小,使数据扰动影响小。图为偏差-方差曲线。刚开始,没开始训练时,偏差很大。但随着训练程度的增加,偏差降低,泛化误差也降低,表明这阶段由偏差主导泛化误差;当训练强度超过偏差和方差交点时,随着训练强度增加,偏差继续降低,但方差上升更快,说明模型趋于过拟合,对不同数据变的更敏感,不具有更好的泛化能力。最后随着训练程度再次增加,偏差已经降低很低了,但是对于其他不同数据的泛化性能也变得降低了,所以泛化误差很大。

0 0
原创粉丝点击