1.No Free Lunch Theorem(NFL定理)
一个算法a在某些性能方面比算法b好,则比然存在着某一方面性能比b差,在假设所有“问题”出现概率相等、同等重要的情况下,任意两个算法之间的期望性能是相等的。
好在实际情况下假设并不成立,但NFL定理告诉了我们一个重要的寓意就是:脱离具体的问题,空谈那种算法更优是没有意义的,必须具体问题具体分析。
2.性能度量
2.1错误率和精度
把分类错误的样本数占样本总数的比例称为“错误率”,相应的“精度”=1-“错误率”
2.2查准率、查全率和F1
错误率与精度虽然常用,但并不满足所有任务需求(错误率和精度描述的是样本的整体性能),以西瓜为例子,有时候我们并不关心整体一车西瓜的性能如何,只关心“我选中的西瓜中有多少比例是好瓜”,“所有好瓜中有多少比例被挑出来了”,这两个性能就对应了查准率和查全率。
一般来说,查准率和查全率是一对矛盾的度量,为了让查全率比较高,那我可以把所有瓜都选上(FN=0,R=1),但这样的话,查准率就会很低,为了让查准率比较高,那就少挑几个瓜,挑最有把握的,这样查准率就高了,但查全率就下降了。
以查全率为横坐标,查准率为纵坐标,画出P-R曲线。
平衡点:在P-R曲线中,查准率=查准率时的取值就是平衡点,平衡点取值越大,可以认为算法性能越好。
F1度量:由于平衡点的判断比较简单,更常用的是F1度量,F1度量是查准率P和查全率R的调和平均。
加权调和平均:
2.3ROC和AUC
真正例率(TPR)和假正例率(FPR)
ROC曲线是以“假正例率”为横坐标,以“真正例率”为纵坐标画图。
ROC曲线下面所包含的面积为AUC(Area Under ROC Curve),AUC越大,则算法性能越好。
2.4代价敏感错误率和代价曲线
上面介绍的性能度量大都隐含了均等代价,但现实中,不同的错误所造成的代价是不同的。
代价敏感错误率:
在非均等代价下,ROC曲线不能反映出学习器的期望总体代价,而代价曲线可以达到该目的。
3.评估方法
通常假设测试样本是从真实分布中独立同分布采用得到的,但需要注意的是,测试集应该和训练集尽量互斥,可以采用以下几种方法对数据集D进行适当处理,从中产生训练集S合测试集T
3.1留出法
"留出法"直接将数据集D划分为两个互斥的集合,一个训练集S,一个测试集T,但需要注意的是,训练/测试集的划分应该尽可能的保持数据一致,为此,应该采用分层采用的方法,为了降低单次留出法的误差,应该进行多次留出法验证,并将结果平均。
留出法一般将2/3~4/5的数据用于训练,剩余样本用于测试。
3.2交叉验证
3.3自助法
留出法和交叉验证法都保留了一部分数据用于测试,会导致训练集比较小,从而引起偏差。
自助法是一个比较好的解决方案,是以自助采用样为基础。自助采样:给定数据集D,包含m个样本,每次从D中随机抽取一个数据,将其拷贝放到数据集D’中,并将数据放回D,总共抽取m次,这样数据集D’中有m个样本,在m次采样中,始终不被采到的数据的概率是0.368。
我们可以使用D’作为训练集,D\D'当做测试集,保证训练集的数据量也是m个训练样本。
自助法在数据集较少,难以划分训练/测试集时很有用。自助法能从初始数据集中产生多个不同的训练集,这对集成方法很有帮助。但自助法也改变了初始数据的分布,会引入估计误差,所以在数据量足够时,留出法和交叉验证法更常用。
4.生成模型和判别模型
监督学习可以分为生成方法和判别方法,所学到的模型分别为生成模型和判别模型,生成方法由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测模型,即生成模型:
典型生成模型有:朴素贝叶斯和隐马尔科夫模型
判别方法由数据直接学习决策函数f(X)或者条件概率分布P(Y|X)作为预测模型,即判别模型
典型的判别模型有:K近邻发,感知机,逻辑斯蒂回归模型,决策树,支持向量机,提升方法和条件随机场等方法。
5.经验风险最小化和结构风险最小化
经验风险最小化是指损失函数最小,当数据集很大时,经验风险最小可以取得比较好的学习效果,但当数据集小时,经验风险最小化,学习效果未必最好,容易过拟合。
结构风险最小化就是为了防止过拟合而提出的策略,结构风险等价于在经验风险的基础上加上表示模型复杂度的正则项或者惩罚
参考书籍:
1.《机器学习》周志华编写
2.《统计学习方法》李航编写