Machine Learning第六讲[应用机器学习的建议] --(四)处理不平衡类
来源:互联网 发布:淘宝联盟导购id 编辑:程序博客网 时间:2024/05/16 05:03
内容来自Andrew老师课程Machine Learning的第六章内容的Handling Skewed Classes部分。
一、Error Matrics for Skewed Classes(不平衡类的错误衡量指标)
在癌症预测模型中,如果有一个logistic回归模型h(x),(若某人得了癌症,则y=1,否则y=0),在某一个预测模型中,发现在测试集上有1%的错误率,即有99%的正确率,那这个模型是否性能很好呢?
假设这样一种情况:在测试集中总共只有0.50%的病人得了癌症(正负样本数量相差特别大的样本叫做倾斜类),看下面的代码:
function y = predictcancer(x) y=0; %ignore x!return
即若把这个测试集的假设函数取y=0,即所有人都没有得癌症,那么针对这个模型,错误率为0.50%,正确率为99.5%,单看这个数字,貌似是比较好的情况,因为它有很高的正确率和很低的错误率。但是根据实际情况我们知道,这个模型的效果是很差的,因为得癌症的病人,这个模型一个都预测不了。
思考:若有一个预测实例,原来有99.2%的accuracy(0.8%的error),现在经过某种变化之后有99.5%的accuracy(0.5%的error),这到底算不算是对预测效果的一个提升呢?
其实不然,因为可能在改进之后,我将预测模型变为y=0,这时候accuracy变高,但是并不能说明预测性能变好。(因为这个模型总是将预测值预测为0,这并不是很好的预测)
通过上面的实例可知,使用accuracy和error来判断模型的好坏是不合适的,因此下面引入了Precision(查准率)和Recall(召回率)。
一般情况下,我们将稀有类(所占比例较少的类)表示成y=1,即在上述癌症预测模型中,将得癌症的病人记作y=1。
对于一个二元分类问题,称少数类为P(Positive),即正类,多数类为N(Negative),即负类,那么根据实际类别和预测类别,其混淆矩阵(confusion matric)如下:
则,Precision的含义便是在我们预测出来患癌症的病人中,有多少比例是真正患癌症的,其公式如下:
Recall的含义是在所有患有癌症的病人中,有多少比例使我们能预测出来的,其公式如下:
结合之前的例子,若预测模型为y=0,则TP=0,于是recall=0,因此可以判断y=0并不是很好的预测模型。
二、Trading Off Precision and Recall(Precision和Recall之间的权衡)
在logistic回归模型中:,若,我们将其预测为1,若,我们将其预测为0。
1、假设我们考虑:只有我们非常确信一个人患有癌症时,我们才可以告诉告诉他们患了癌症,因为如果不是非常肯定就告诉病人患了癌症,这将会引起病人的恐慌。
为了解决上面的问题,我们可以通过改变算法,即若,将其预测为1,若,将其预测为0,甚至我们可以将0.7改为更大的数字,如0.9,这种算法使得Precision变高,Recall变低。
2、假设我们考虑:只要病人有可能患了癌症,我们就告诉他患了癌症,换句话说,防止有些人患了癌症而没有预测出来,因为如果病人患了癌症,但是我们没有告诉他们,可能会耽误他们的治疗。
为了解决上面的问题,我们可以通过改变算法,即若,将其预测为1,若,将其预测为0,甚至我们可以将0.3改为更小的数字,如0.1,这种算法使得Precision变低,Recall变高。
一般的方法我们是当,将其预测为1,threshold和Precision以及Recall之间的关系如下图:
从上图可以看出,在threshold比较大的情况下,Precision比较大,Recall比较小;在threshold比较小的情况下,Precision比较小,Recall比较大。
为了保持Precision和Recall之间的相对平衡,引入F1 Score即F Score的概念。
先看下面的分析,我们应该怎样保持Precision和Recall的平衡呢?下面有3种算法,对应不同的Precison和Recall值
1、为了保持两者的平衡,第一个我们考虑的算法可能就是取Precision和Recall的平均值,即,其值如上图所示,那为什么我们使用F1 Score而不使用Average的算法呢?考虑下面因素:
(1)若预测函数y=1,则threshold较低,Precision较低,Recall较高。
(1)若预测函数y=1,则threshold较低,Precision较低,Recall较高。
(2)若预测函数y=0,则threshold较高,Precision较高,Recall较低。
若使用平均值,则上述两种情况值差不多,而且Average说明了Algorithm3是一个不错的模型,但是其实Algorithm3的预测模型是y=1,因此它不是一个很好的算法。
2、因此我们使用F1 Socre,(通常情况下,F1∈(0,1)),这个算法也会考虑Precision和Recall的平均值,但是如果P和R较低,则会给一个更高的权重。
(1)若P=0或R=0,则F1 Score = 0;若P=1,R=1,则F1 Score = 1。
(2)若想要得到一个较高的F1 Score,则P和R都要很接近于1.
一般F1 Score越高,我们认为分类器越好。
在平常实践中,自动选择临界值的较好方法便是试试不同的threshold,在交叉验证集上看看哪一个threshold能够得到最高的F值。
0 0
- Machine Learning第六讲[应用机器学习的建议] --(四)处理不平衡类
- Machine Learning第六讲[应用机器学习的建议] --(一)评估学习算法
- Machine Learning第六讲[应用机器学习的建议] --(五)使用大的数据集
- Machine Learning第六讲[应用机器学习的建议] --(二)诊断偏差和方差
- Machine Learning第六讲[应用机器学习的建议] --(三)建立一个垃圾邮件分类器
- 应用机器学习的建议(Advice for applying machine learning)
- Andrew Ng《Machine Learning》第六讲——机器学习算法应用
- Machine Learning - X. Advice for Applying Machine Learning机器学习应用上的建议 (Week 6)
- (四)Advice for applying machine learning[实施机器学习的一些建议]
- 斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”
- 机器学习教程之7-应用机器学习的建议(Advice for Applying Machine Learning)
- 机器学习(4)-应用机器学习的建议_Advice for Applying Machine Learning
- Andrew NG 机器学习 笔记-week6-应用机器学习的建议 ( Advice for Applying Machine Learning)
- Stanford机器学习第六讲(上)Advices for applying machine learning--Deciding what to try next
- Machine Learning第八讲[非监督学习] --(四)PCA应用
- Machine Learning第十讲[大规模机器学习]
- 斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning
- [Machine Learning] Chapter 01 机器学习的动机与应用
- HOG+SVM
- GDOI2017狗带记
- Android(安卓):res之shape的创建并制作
- Mina主体逻辑流程
- C++--图算法之DFS,BFS,Dijstra
- Machine Learning第六讲[应用机器学习的建议] --(四)处理不平衡类
- Android播放器进度条
- Datawindow通过Json接口实现数据操作时(三层)PHP5.2 json_encode时发现汉字转换成了\u表示的处理方法
- 使用dom4j把java对象转XML并存为xml文件
- 在线小说网站的设计与实现(附源码)
- CSS3 3D转换
- ThinkPHP微信自定义分享Demo
- Linux常用命令操作
- stream之并行流