标签:
1.解决机器学习问题的方法
哪种方法有用视情况而定
2.误差分析
解决机器学习问题的推荐方法:
-----------------------------------------------------------------------
将误差结果转换为一个数值,否则很难评估算法的表现。
注意处理输入,比如一个单词的不同形式可以用词干软件来处理为一个词。
3.偏斜类的误差度量
有时很难区分误差的减少是否是因为算法的提高。eg:在一个癌症预测中,有0.5%的人患有癌症,我们发现我们的学习算法有1%的误差.然而,如果我们仅仅把每一个人都假定为不患癌症,那么我们的误差会减少到0.5%即使我们没有提高算法.这通常发生在偏斜类中,即我们的类在整个数据集里很少见,也就是一个类的数量要比另一个多很多。
我们可以使用 精确率precision/召回率recall:
预测的: 1, 实际的: 1 --- True positive
预测的: 0, 实际的: 0 --- True negative
预测的: 0, 实际的, 1 --- False negative
预测的: 1, 实际的: 0 --- False positive
Precision: of all patients we predicted where y=1, what fraction actually has cancer?
True Positives / Total number of predicted positives=True Positives / (True Positives+False positives)
Recall: Of all the patients that actually have cancer, what fraction did we correctly detect as having cancer?
True Positives / Total number of actual positives=True Positives / (True Positives+False negatives)
我们想要两个比率都高,在开始的例子里,我们预测患病的人为0,那么召回率为0,可知虽然误差比率小,但它召回率很差。
如果分母为0,那么该项是没有定义的。
4.精准率和召回率衡量
想很确信的预测两个类的结果,可以增加阈值:
Predict 1 if: hθ(x)≥0.7
Predict 0 if: hθ(x)<0.7
这样当患病概率为70%时我们才说该病人患病,计算可知,这样会有高精准率,低召回率。
想比较安全的预测两个类的结果,可以减少阈值:
Predict 1 if: hθ(x)≥0.3
Predict 0 if: hθ(x)<0.3
这样会导致低精准率,高召回率。
可知:
阈值越大, precision越高,recall越小.
阈值越小, recall越高,precision越小.
为了将这两个度量整合为一个数,我们引入F值(F value):
在交叉验证集训练两个比率以至于不会偏向于我们的测试集。
5.机器学习的数据
标签:
原文地址:http://www.cnblogs.com/cherry-yue/p/5909142.html