[Python嗯~机器学习]---设计一个简单的机器学习系统和准确率、召回率

设计一个简单的机器学习系统

首先,快速实现的最简单的算法,比如花一天时间来快速地搭建出一个可以运行的简单系统,即使效果不好也无所谓。
之后,我们通过画出学习曲线来观察训练集误差和交叉验证集误差,确定是否有高bias问题,或者高variance问题,或
者什么别的问题。这样,我们就可以决定是否需要获取更多的训练样本,或者加入更多的特征,或者其他手段来提高算
法的效果。

误差分析,意思是在我们构建机器学习系统时,比如搭建一个垃圾邮件分类器时,我们可以人工地看看交叉验证集中被
算法错分的样本究竟是什么样子。通过这些被算法错分的邮件,我们可以发现某些系统性的规律,例如,什么类型的邮
件总是被错分,一般来说这么做了以后,我们常常可以得到启发,并可以构造出新的特征来解决这类错分,或者也可以
发现现有的特征可能存在着一些我们事先没有预料到的意外问题。

有偏数据

举个例子:
我们有病人的特征数据,我们希望对他们进行诊断否真的患有癌症。那么,我们假设y=1表示病人患有癌症,y=0表示病
人没有癌症。我们训练一个逻辑回归模型,假设我们在测试集上的错分率仅有1%。也就是说我们的诊断99%都是正确的。
但是,假如我们发现在测试集中,仅有0.5%的人真的患有癌症。那么在这种情况下,1%的诊断错误率就显得不是那么好
了。也就是,我们在诊断时,压根不考虑病人的具体情况,一律认为病人不患有癌症,那么这个分类器或者说诊断器的错
分率就仅有0.5%!比我们逻辑回归分类器还要好。

某一类本身出现的概率就非常小,整个数据集表现出类别分布极不均匀的情况。这种情况,被称为“类别有偏”(skewed
classes)。

准确率和召回率


1表示癌症,0表示非癌症。
准确率(Precision): 在我们所有预测y=1的病人中,真正患有癌症的比例。
 通俗讲,预测了一堆人都得癌症,这一堆人中真得癌症的比例。
召回率(Recall):确实患有癌症的病人中,我们成功将它们确诊的比例。
 通俗讲,有一堆人有癌症,这一堆人中被预测出来的比例。

显而易见,我们想要一个高准确率和高召回率的模型。

但是现实中,很难实现高准确率的同时又有很高的召回率,这时候需要我们进行权衡。

还是以癌症为例:

根据惯例,当hθx大于等于0.5的时候,我们预测y=1 。而当hθx小于0.5的时候,我们预测y=0 。对于这个分类器,我
们可以计算它的准确率和召回率。 但现在假如我们希望仅在有足够把握的情况下才预测 y=1,想要达到这种效果,一
种做法是,修改我们的算法不再将临界值设为0.5,也许我们把它设置成0.7。也就是说,只有当算法预测的概率超过
0.7的时候,我们才做诊断。这样,[我们就使得我们的算法可以具有更高的准确率。但另一方面,我们的这个模型会有
较低的召回率,因为当我们做诊断的时候,我们只给很小一部分的病人预测 y=1。

反之,我们想避免遗漏掉患有癌症的病人,也就是我们想避免漏诊。具体地讲,如果一个病人确实患有癌症,但我们没
有诊断出来,那么这可能会造成非常严重的后果。那么,我们希望预测 y=1,这样至少它们会接受进一步的检查,然后
接受治疗,避免漏诊带来的严重后果。那么,我们就不能再把临界值设高了,我们就可能把临界值设置的稍微低一些,
比如0.3。这样做以后,我们认为,只要病人有30%以上的概率患有癌症,那么我们就可能以更加含蓄、保守的方式告诉
他们可能患有癌症,这样他们就可以接受治疗。所以,这种情况下,我们将会得到了一个高召回率的模型,但显然找这
个模型的准确率将会低一些。

所以需要在准确率和召回率之间进行权衡。

方法:

对于一个较大的F1值,需要准确率和召回率都比较大。

大数据:


大数据是支撑机器学习的重要部分。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值