机器学习算法的主要用途之一就是 预测。通常,使用机器学习算法的流程是
question 》data 》feature 》 algorithm 》 hypothesis 》 evaluation
当数据通过 算法训练得到一个hypothesis之后,我们要用这个hypothesis对新的数据进行预测,那么在此之前,我们先要对这个hypothesis进行评估,判断它是否是一个好的hypothesis。
先约定一些变量
X_train: 用于训练的数据 matrix
Y_train: 用于训练的结果 vector
X_cv: 用于cross validation 的数据matrix
Y_cv: 用于cross validation 的结果vector (ps: cross validation 是用于选择更好的算法参数,从而得到更好的训练结果hypothesis)
X_test: 用于测试的数据matrix
Y_test: 用于测试的结果vector
model: 对X_train,Y_train训练得到的模型(一组参数,代表一个hypothesis)
Y_pred: 通过model对X_cv预测得到的结果vector
下面介绍一些常用的评价方式(以classification为例)
1,直接计算错误率
error= mean(Y_pred != Y_cv);
这种方法很直观,就是看预测的结果和实际的结果有多少异同,可以判断预测的error,但有时候它做的还不够好。
比如对于一个癌症预测系统,复杂的机器学习算法预测error为1%,这个准确率看上去很好,但是数据集中患癌症的人的概率0.5%。如果有人的算法规则是 :y = 0 ,即对所有的人都预测为 “没有癌症”,那么他这个系统的错误率只有0.5%。
通过这个例子可以说明,对于hypothesis应该有多方面的评价,不能仅计算准确率。邮件分类系统有着同样情况。
2,Precision/Recall
同样是上述 癌症预测系统,如果采用 y=0的算法,根据recall的计算公式可知,recall=0,这足以说明 y=0不是一个好的hypothesis。
precision和recall之间的权衡
还是以癌症系统为例:
logistic regression : 0 <= h(x) <= 1
predict 1 if h(x) >= 0.5
predict 0 if h(x) < 0.5
case1: 只有在非常确定的情况下,才预测y=1(cancer),precision要高
--调整binary threshold, 把0.5改成0.7,或者更高。这种做法是说,当有70%的概率患癌症时,才预测为y=1。结果会得到 higher precision,lower recall
case2: 避免漏掉太多癌症案例(false negative要小)
--调整binary threshold,把0.5改为0.3或者更低。
结果就是 higher recall, lower precision
一般情况下,预测 当 h(x) >= threshold, y = 1
precision 与recall存在下图的关系
3,F1 Score
当 P或者R为0时,F = 0, 当P和R都为1时,F = 1;所以,F Score越高,代表这个算法越好
F1 Score通过将 P和R两个数值组合起来,得到一个综合的对算法的评分,可以较好的指导选择算法
对于机器学习系统的评价标准有很多,对同一个系统,可以根据不同的需求使用不同的评价标准。
Always on the way
参考资料:
本文介绍了在机器学习中,如何评价一个hypothesis的性能。通过错误率、Precision/Recall以及F1 Score等指标,详细阐述了如何全面评估预测模型的优劣。错误率可能无法反映实际情况,例如在癌症预测系统中。Precision和Recall之间存在权衡,F1 Score则提供了综合评价。正确的评价标准选择取决于具体应用需求。
3732

被折叠的 条评论
为什么被折叠?



