机器学习虽好,也要看什么场合!

  • 2020 年 7 月 13 日
  • AI

身为AI时代的程序猿,我们天生就对数据集敏感。因此,当我们拿到一批真实数据时,激动之情肯定溢于言表!举例来说,我们可能拿到了一组患者正确药量的数据集,它长成这样:

数据集的地址://bit.ly/quaesita_slkid

其中每个数据点包括两个部分:输入特征是某位患者当前的治疗日(Treatment Day),而输出结果是ta在60天疗程内应该服用的药物剂量,单位是毫克。身为AI工(cheng)作(xu)者(yuan)的我们,第一时间就会想到建立一个回归模型,辅助医生根据输入的治疗时长特征,给出所推荐的药物剂量。So easy~

但是我们把模型的事儿先放一边,当我们以人类的角度来利用数据,假如有个病人正在处于第2个治疗日,你会怎样为他推荐用药剂量呢?

聪明如你肯定一眼就知道,17毫克!你看数据集里都有完全相同的场景嘛~ 那如果是第4个治疗日呢?41毫克没毛病呀!

那现在问题来了,在这种场景下如果我们使用机器学习方法建立一个回归模型,是不是更高大上、更有效呢?换句话说,当我们使用计算机学习这些数据模式的时候,会不会导致一些意想不到的问题呢?

答案是否定滴。我们可以用最简单的“查表”模型嘛,给一个输入,然后寻找它所对应的取值就行了。python里建立一个dict就完事儿了。但是注意,我们只有60天的数据,如果输入的特征取值<=60,那没问题,查表模型的输出肯定完全正确。这不需要建立模型,也不需要什么高深的机器学习理论。 

什么时候要用机器学习?

那在什么情况下我们需要使用机器学习呢?

当然是输入训练集中没有的数据啦!比如说突然来了一个正处于第61个治疗日的患者,我们怎么办?

这时候查表模型就蒙了,它没见过输入是61的情况啊,超纲了……那这种情况下我们应该怎么做呢?抱怨运气不好?胡乱回复一个数字?还是像郭德纲一样扔鞋占卜?……唔……诶?!机器学习是不是能帮我们搞定这种情况?

没错儿!

但是话说回来,如果这个输入和输出之间压根儿没什么联系的话,机器学习也爱莫能助。就好比面对一堆毫无逻辑的随机数据,算命先生也拿不准下一个要来的是啥……

1、我们必须找到隐藏的数据模式

但是,假如说(只是假如)数据具有固定的分布模式,而且我们还能够找出这个模式来,那么我们就能利用这个模式来预测(或者说……猜)第61个治疗日的患者的正确用药量了。这种情况下,机器学习才能派上用场。

2、数据模式一定要有泛化性

我们要学习和寻找的数据模式一定要对未来的数据具有泛化性才行。否则我们的模型就只对已经存在的数据拥有良好的拟合能力,但是对于未知的数据呈现极大的误差,那这个模型肯定不好用。

比如说上面的例子中,数据模式就可能分成两种:前60天是一种模式,而从61天开始就变成另一种模式(比如从第61天开始所有的患者都死了或者都痊愈了,就不用服药了)。那就算我们找最厉害的教授使用最顶级的机器学习模型和技巧,也只能让它仅对前60的数据具有良好的预测性能,但是从61天开始,模型对已有模式学习得再好也无济于事。

具体了解泛化的含义,可阅读这篇文章://towardsdatascience.com/the-most-powerful-idea-in-data-science-78b9cd451e72

3、巨变的外界条件

进一步接茬儿说哈。如果我们的数据没办法表现出未来要发生的事情,或者说未来的数据规则和现在完全不同了(也许因为一场瘟疫、地震、战争或者其他不可抗拒力),那我们已有的数据集质量再高、数据模式学习得再好也没用。笼统一点来讲,如果我们研究的是这个宇宙中某个极不稳定的某种数据,那机器学习的遍历性和平稳性假设就无法满足了。这种的场景下所训练出的机器学习模型会频频出错,因为模型总是会觉得“外界数据的规则和模式稳定不变”。

不了解遍历性假设的同学,可参考://en.wikipedia.org/wiki/Ergodicity

不了解平稳性假设的同学,可参考://bit.ly/stationaritya

这里说的不平稳性不是指在局外人眼中的那种主观的不平稳现象,比如商品的均价随着时间而逐渐增加,这是由于通货膨胀的原因。像通胀这种平稳的、可以学习的不稳定性,是能够通过时间序列分析技术来解决的。我们这里所说的不平稳性是指由于各种变故或不可抗拒因素而导致的突发事件。

这种不平稳性是一种粗暴的、毫无章法的现象。对于这种问题我们无可奈何,因为它的发生不以你的意志为转移,它客观而不羁地发生着、存在着,我们所处的次元规则系统完全不同。它就像个显示屏坏了的定时炸弹,你根本不知道它什么时候改变自己的数据模式,也不知道它什么时候爆炸。

所以在这种情况下,我们可能费尽千辛万苦学习到了已有的模式,但是一夜之间啥都变了,规则不是以前的规则了,你大爷也不是以前的大爷了……如此一来,模型的性能肯定会大打折扣(根本不能用了好不好)。

4、如果一切顺利的话!

但是如果数据集中的样本模式具有极好的泛化性,它又能稳定的表达出未来将要发生的事情,那就太棒了!这时候就别犹豫了,尽情利用机器学习方法寻找已有数据中的样本模式吧!然后一切水到渠成~别说第61天的剂量,就算是第661天的数据我们都能给你预测出来!

找到并且利用数据集中隐藏的样本模式是机器学习的关键。

机器学习和人工智能技术不是用来重复已经见过的例子。对于已有数据的重复就是查表而已,搜索一下数据库就能解决,杀鸡焉用宰牛刀?记住,机器学习是用来学习数据中隐藏的数据模式的。

重复已有的答案算什么本事?机器学习能对没见过的新情况进行解决!

程序猿可能会问,事儿都让你干了,那我的任务是啥?答案很简单,就是构建一个成功又通用的解决方案。你问我啥叫成功?

我曾写了一整篇文章来讨论这个问题://medium.com/hackernoon/the-decision-makers-guide-to-starting-ai-72ee0d7044df

模型说,这不是猫!

换句话说,如果我们的模型无法处理已有数据集中没见过的新样本,那它就很失败了。新样本再奇怪也是按照固定模式分布的,它不会打破数据的平稳性假设,它充其量会让学到的模式有所偏移。

机器学习不是鹦鹉学舌,死记硬背已有数据集是没用的。机器学习的魅力和强大之处在于,它能够从已有数据中概括和抽象出数据背后的规则,从而普适地应用于新的场景。

所以咱们啰嗦了这么半天,如果这时候你遇到了一个已有数据集中未曾出现的样本(比如第61个治疗日的样本),你会怎么给出结果呢?

当然是先从已有数据集中总结样本的模式,然后根据这个模式做出一个合理的预测了!

但是机器学习也是有自己的专属职责的,你训练它干什么,它就能够也只能够做这个任务。就比如当我们使用了上千张动物照片训练了一个区分猫(就是根据输入图片判断是不是喵星人)的分类器,那么当我们输入一个新样本的时候,它就能告诉我们图片中是否包括猫咪。但是如果你想让它告诉你这个输入的图片是不是毕加索的真迹的时候,少年你就想多了……

机器学习对你适用吗?

当我们说起机器学习的时候,你的朋友或者老师通常会故作高深地跟你说,它是一个事件标签的标记者,或者是一种人类规则代码的高级取代者。云里雾里……为了让你更容易的理解机器学习,我们换个角度对其进行介绍。

机器学习是一个全自动的决策器,它的功能包括对数据模式的学习(总结大师),以及应用该模式对新数据进行判别和预测(执行大师)。

当你不知道机器学习方法是否适用于你研究的问题时,可以仔细看看下面这三篇文章~

Is your ML/AI project a nonstarter? A 22-item reality check(list),//bit.ly/quaesita_realitycheck

Advice for finding ML/AI use cases,//bit.ly/quaesita_island

Getting started with ML/AI? Start here!  //bit.ly/quaesita_dmguide

 3

那么,能找到这个隐藏模式吗?

所以兜了这么大的圈子之后,第61天到底应该让患者吃多少药呀?其实在我上面给出的这个看似杂乱无章的例子中隐藏着一个十分稳定的数据模式。你问我怎么知道的,当然了,这数据集是我编的我肯定知道哈哈哈。这个模式……嗯……就是我将脑袋里突然蹦出的那个最大的数+1……(作者可真欠揍)我之所以这么做,是因为我发现处理这些具有很强变数的数据是一种乐趣(更欠揍了!)。

虽然数据的模式很奇葩,但这也不失为一种数据产生的模式。对于那些喜欢挑战的小盆友,你们不妨试试多用几种机器学习算法来找出这套看似十分随机的数据集中的模式,说不定你们就能研发出一套针对我的读心术模型呢~来来来,留言区告诉我你们觉得第61天应该用多少剂量呢!(好期待呀,因为我还没有编出来呢)

我知道肯定有不少人会使用传统的统计分析学方法来给出的答案,但是你开心就好~黑猫白猫,抓到老鼠的就是好猫~  雷锋网雷锋网雷锋网

想要了解统计分析方法和机器学习的区别请戳这里://bit.ly/quaesita_history2

via //towardsdatascience.com/when-not-to-use-machine-learning-or-ai-8185650f6a29