AI说人“画” | 什么?咱俩说的是一个“模型”嘛!-阿里云开发者社区

开发者社区> 大数据文摘> 正文
登录阅读全文

AI说人“画” | 什么?咱俩说的是一个“模型”嘛!

简介:

Hello大家好,我是Vicky,今天我们来讲一些关于“模型“的事儿。

模型是对事物的抽象,是发现规律模拟真实世界用的。

在数据里呢,基本上模型有两类,解释性和预测性,今天来着重来说预测性的。

所以怎么评价模型的好坏呢? 当然就是预测的多准了

机器学习模型呢,就是看学习能力如何,也就是看举一反三的能力。

一般常用的机器学习模型包括:分类,回归和聚类

今天就以分类模型为例,谈谈怎么评价一个“模型”好不好。

检验一个机器学习模型时要做的第一件事就是看误差有多大,

这里的误差有偏差和方差两类:

高偏差的意思就是你从一开始就跑偏了,没学习到真正的规律,也叫欠拟合。

比如这张图,把眼罩当成bra,买家确实没有把“肩带”当作特征,“形状”也确实有点类似,不过她居然忽略了size!(惊)

高方差的意思就是你入戏太深了,虽然你的模型完美的解释了现有的数据,换一组新的就不行了。这也就是过拟合,量身定做过了头儿,好比你查视力的时候,把视力表背下来了,然后查视力的结果左右眼都是5.3,完美!

90020b00e38fdae313ad1eccd43c90d69ef0058f

然而实际情况是,换一张顺序不一样的视力表,你连医生指的第几行都看不见,甚至你连医生都看不见。这就是没什么泛化能力,模型过于复杂,训练过度了。

那怎样才能知道自己的模型是否存在高偏差或是高方差呢?

一种直接了当的方法就是把数据一分为二:训练集和测试集。例如把模型在 70% 的数据上做训练,然后用剩下的 30% 数据来测量失误率。

举个接地气的例子!就好比谈恋爱,暖男就是既不会让你觉得太粘人,也不会让你觉得被疏远,而且不止对你一个人这样,对谁都这样,这个撩妹模型就训练的恰到好处...

f9859c05d094e8bdae48588d80d091e775e08252

(促进一下理解)

回到正题,衡量分类模型好坏的话只看错误率的话肯定是不够的。

咱们就说算命的,比如问一个算命大师 明年会不会生七胞胎,大家都心知肚明,这个特定时间怀孕这个事儿本来就没那么高,况且七胞胎就更不多了,姑且就认为七胞胎在人群中的概率是0.1%,于是乎呢,不管是谁问大师这个问题,他都说没有的话,那么他的准确率也是99.9%的,你能说他算的准么?

所以说,我们不只关心他算对了多少,更关心怀了七胞胎的人他算出来了多少。

假定有一个二分类问题,比如有几个男的和几个女扮男装的人站在一起 系统想把真男人挑出来。

给系统一个人,系统会判断这人是“真” 也就是男(Predicted positive),或是“假” 也就是女(Predicted Negative)。

如果你是男的,系统也判你是男的,就是真正TP(True Positive),

原本你是男的系统判定你是女的,就是假负FN(False Negative),

原本女的判成男的,就是假正FP(False Positive),

原本女的,系统判你是女的,就是真负TN(True Negative)。

f391cfead265cf277113440abb19d56a56562a5e

这几个值可以组成一个混淆矩阵,很多指标都是基于这个混淆矩阵算出来的。

比如我们会关心系统判定是男人的人里面到底多少是真的男人 这个也叫查准率,TP/(TP+FP)。

我们还关心这些男人里,有多少男人被找出来了 这个也叫查全率,TP/(TP+FN)。

所以大家可以看出来,这两个量其实是相互矛盾的,一个高的时候,另一个可能就低点儿,比如我想把所有男人都挑出来,那最保险的方式就是把所有人都选上..那也没什么意义了,如果说希望选出来的人里面男人的比例尽可能的多,那就找出最有把握是男人的人,但是这样可能会漏掉一些长的没那么man的人,这样查全率就低了。

大部分情况下呢,我们是根据预测结果对这些样本排序,越靠前的就是越有可能是正例的样本,按照这个顺序预测,所以每次就可以得到当前的查准率和查全率,然后呢以查准率为纵轴,查全率为横轴画图,就能得到一个曲线,也就是P-R曲线。

48b02c9eaf08650285b855bf1ba07ed99255e8f0

有的时候呢,输出的结果是正例还是负例取决于设定的概率阀值概率阈值,这种阈值的选取也一定程度上反映了分类器的分类能力。我们当然希望无论选取多大的阈值,分类都能尽可能地正确。

所以呢我们再引入两个指标

真正率tpr 和假正率fpr

真正率呢和 查全率一样

假正率,就是预测为正样本但是预测错了的可能性FPR=FP/TN+FP

以真正率为纵轴,假正率为横轴我们可以得到一个曲线叫ROC曲线

2f31fa0f907d2e921624dd579813e68d5468eeec

ROC曲线一定程度上可以反映分类器的分类效果,但是不够直观,我们希望有这么一个指标,如果这个指标越大越好,越小越差,于是,就有了AUC。AUC实际上就是ROC曲线下的面积。AUC直观地反映了ROC曲线表达的分类能力。基本上,曲线下的面积(AUC)越大,或者说曲线更接近左上角(true positive rate=1, false positive rate=0),那么模型就越理想,越好。

混淆矩阵还可以组合出好几种指标,比如F1 score,以及macro-F1 ,方法不同思想类似,这儿就不赘述了

当然,不同的场景下呢,不同失误的代价不一样,关注的点也不一样,

做商品推荐,把不相关的东西给顾客推荐了,这也没什么太大的损失,运气好的话顾客兴许也就一起买了。

给罪犯定罪,只要是有罪的话,立刻死刑的这种情况下,如果无罪的判了有罪,这后果就很严重了

所以说 中心思想是什么呢:

第一,光看指标本身意义不大,要结合实际情况

第二,别走极端,差不多最完美


原文发布时间为:2017-11-11

本文作者:搭建模型的

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”微信公众号

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: