模型评估与风险控制
python大战机器学习——模型评估、选择与验证
1、损失函数和风险函数
(1)损失函数:常见的有 0-1损失函数 绝对损失函数 平方损失函数 对数损失函数
(2)风险函数:损失函数的期望 经验风险:模型在数据集T上的平均损失
根据大数定律,当N趋向于∞时,经验风险趋向于风险函数
2、模型评估方法
(1)训练误差与测试误差
训练误差:关于训练集的平均损失
测试误差:定义模型关于测试集的平均损失。其反映了学习方法对未知测试数据集的预测能力
(2)泛化误差:学到的模型对未知数据的预测能力。其越小,该模型越有效。泛化误差定义为所学习模型的期望风险
(3)过拟合:对已知数据预测得很好,对未知数据预测得很差的现象。原因是将训练样本本身的一些特点当做了所有潜在样本都具有的一般性质,这会造成泛化能力的下降。常用的防止过拟合的办法为正则化。正则化是基于结构化风险最小化策略的实现。
3、模型评估
(1)留出法:直接将数据划分为三个互斥的部分,然后在训练集上训练模型,在验证集上选择模型,最后用测试集上的误差作为泛化误差的估计。
(2)交叉验证法(S折交叉验证法):数据随机划分为S个互不相交且大小相同的子集,利用S-1个子集数据训练模型,利用余下的一个子集测试模型。对S种组合依次重复进行,获取测试误差的均值。
(3)留一法:留出一个样例作为测试集。其缺点就是当数据集比较大时计算量太大
(4)自助法:先从T中随机取出一个样本放入采样集TS中,再把该样本放回T中。经过N次随机采样操作,得到包含N个样本的采样集TS。将TS用作训练集,T-TS用过测试集。
4、性能度量
(1)测试准确率和测试错误率
(2)混淆矩阵
查准率:P=TP/(TP+FP) ,即所有预测为正类的结果中,真正的正类的比例
查全率:R=TP/(TP+FN),即正真的正类中,被分类器找出来的比例
不同的问题中,判别标准不同。对于推荐系统,更侧重于查准率(即推荐的结果中,用户真正感兴趣的比例);对于医学诊断系统,更侧重于查全率(即疾病被发现的比例)
2/F1=1/P+1/R
5、ROC曲线
真正例率:TPR=TP/(TP+FN)
假正例率:FPR=FP/(TN+FP),刻画的是分类器错认为正类的负实例占所有负实例的比例
以真正例率为纵轴、假正例率为横轴作图,就得到ROC曲线。在ROC图中,对角线对应于随机猜想模型。点(0,1)对应于理想模型。通常ROC曲线越靠近点(0,1)越好。
6、偏差方差分解
代码如下: