五千年(敝帚自珍)

主题:【原创】抛砖!模式识别和机器学习、数据挖掘的区别与联系 -- 永远的幻想

共:💬65 🌺337
全看分页树展 · 主题 跟帖
家园 (四)可解释性和数据挖掘

从这节开始,打算把ML算法的概貌描绘一下。

ML领域发展特别快,几乎所有的论文都声称自己弄出一种新算法。看论文多了之后我的体会是,如果心里没有几条线索,就分辨不出这一堆算法的区别与联系,最后的结果是学会一堆“支离”的算法,学习了苹果只知道这是苹果,给个鸭梨就不认识了,给个苹果梨就更不明白是什么东西了。至于应用时,更不知道哪种算法更适合自己的问题。

一般都是把ML算法分成两大类:有监督学习(Supervised Learning)和无监督学习(Unsupervised Learning)。我觉得这其实是从输入数据的形式上分的,说这个离不了公式和图表了,不想先说这个。

从ML的目的和用途来分,可以分成预测(Prediction)和数据挖掘(Data Mining)。我觉得对应用来说,这么分更有意义些。

这两大类算法的核心区别就是:预测问题更重视算法的预测能力(Predictive Power),数据挖掘问题更重视算法的可解释性(Interpretability)。

预测之前说过了,针对的目标变量如果是离散的类别标记,比如医学上的某种病的阴性阳性,或者人的身份编号,就叫分类(Classification);如果针对的连续的变量,比如股价,房价,就叫回归(Regression)。

预测能力很容易理解,我们只关心train set上训练好的算法在test set上面误差、误分类率要尽可能低。也就是说,模型给出的预测要尽可能地接近实际结果。

可解释性就要好好说说了。简单说就是,我们更关心输入的p维变量之间的联系,或者算法产生的预测是哪几个变量起了主要作用,也就是说,算法给出预测结果的根据是什么。

比如商业智能(BI)上常见的购物篮分析(Market Basket Analysis)就是个典型的看中可解释性的数据挖掘问题。因为直接有“钱景”,所以几乎每个讲统计的,讲数据挖掘、机器学习的,甚至讲数据库应用的书,都要提到这个事,现在各个购物购书网站也都在做这个事。

零售商从积攒的海量顾客账单中可以“挖掘”出什么呢?首先,分析哪几种商品容易同时出现在顾客的购物篮里,商场就可以把这些看起来风马牛不相及的东西放在一起,方便顾客购买;另一方面,分析客户办会员卡时留下的个人信息,可以分析出经常光顾本商场的是那些特征的人,这样对外投放使广告便更加有的放矢,可望吸引更多这些类型的人来。

流行的做法是每张账单作为1个p维向量,对应所有p种商品。买了置1,没买置0。N张账单就组成了一张N*p的值为0-1的表格。用流行的Apriori算法从数据中“挖掘”购物模式。比如一个support = 0.03,confidence = 0.87的Rule:

{花生酱,黄油,果酱}=>{面包}

这就说明,如果一个顾客同时买了前三种东西,那么他同时买面包的可能性是87%。而这种同时买4种东西的顾客,在总顾客中占3%。

这个模式看起来平淡无奇,可是有时有很奇怪的模式被挖掘出来,忘了从哪里看到的一个例子:

{尿布,奶粉}=>{啤酒,刮胡刀}

把这4个放一起确实提高了销量,原因后面再说。

而对客户身份信息的挖掘结果比如说是:

support = 0.13,confidence = 0.8

{在家讲英语,有住房,职业是professional}=>收入大于$40000。

那就赶紧针对这些人,在他们经常出没的地方做广告吧!

注意看这些“模式”,前面的括号里只有2 3个“变量”,远远小于总共p个变量。也就是说,我们做出的预测,只依赖于所有p个变量中特定几个变量。

如果我说这就是可解释性。恐怕大家还是不明白。嗯,佛教上阐释概念,有“表诠”和“遮诠”的说法。为了说明一个概念,表诠就是说“它是什么”;遮诠却不说“它是什么”,而是说“它不是什么,不是什么……”。嗯,下面再和不具备可解释性的算法比一下就知道了。

比如还是N*p的矩阵,如果我想分析什么东西导致了买面包,我把其他p-1种东西 +1个截距项一共N*p做为X,面包N*1作为Y,做个最小二乘:

Beta = (X’*X)-1*X’*y

这个结果Beta意味着什么呢?有了这个Beta,给我任何一个1*(p-1)的账单x,都能给出买面包与否的预测值y_est = x* Beta。

但是,看着这个回归出来的p维的Beta,我不能像之前那样,简单说出对买面包来说是哪几种别的商品起了更重要的作用,也就没法想出提高销量的方法了。

这就是预测能力和可解释性的区别。

预测能力就是输出结果的准确度,而可解释性是可以用来帮助人们理解模式背后的原因。比如从前面那个{尿布,奶粉}=>{啤酒,刮胡刀}的购物模式,再配合顾客的年龄和性别,就最后推断出,可能是妻子在坐月子时,年轻父亲们被打发出来购物的。进而可以重新设计实验或者进行改进:不但把这已发现的4种商品摆一起,而且把其他年轻父亲可能会买的东西也摆过来试试。

医学上也是这样。不是特别关注用已有的p项的因素(行为习惯、实验条件、检查化验结果)去准确预测疾病,而更关注如何从p个因素中发现是哪几种因素组合更容易导致疾病,进而可以改进实验设计,改进检查,乃至改进预防和治疗的方案。传统上统计学里作为因素分析(Factor Analysis)问题来研究,而数据挖掘使用的方法就更多,涉及的更广。而且数据挖掘也不仅仅是用来进行变量选择和重要性分析,可以用树、图、层次聚类之类直观的结构,描述变量之间的复杂依赖关系。

前一段有个书叫《小趋势》(microtrends)的,里面举了美国社会统计学家统计出来的许多看起来奇妙的小众人群,用来描述当今的美国社会。甚至进而有针对性地设计竞选宣传策略,左右选举结果。这都属于看中可解释性的数据挖掘了。

总结一下预测和数据挖掘的区别:

预测是偏重得到决策结果,数据挖掘是偏重分析决策原因和过程

预测问题主要是在生物特征鉴别(人脸,语音,指纹,虹膜)、机器视觉、目标跟踪这些领域,直接代替人进行决策。在商业数据,医学数据里,需要解决数据挖掘问题,给人提供参考

之所以要费劲区分预测和数据挖掘,因为天下没有免费的午餐,一种算法预测精度高了通常很难具备太好的可解释性。要针对具体的应用问题选择合适的算法,就要明白自己更需要的哪种能力。很多算法同时具备一定的预测准确度和可解释性,仅从算法形式上很难分清,还是应该从应用背景上来分析。

个人最后发点谬论:一个应用问题到底是预测还是数据挖掘,说到底是你有没有能力改变数据来源,或者重新设计输入数据?针对图像的,你一定是在既定的传感器硬件条件下设计算法的;散户炒股,你的数据源也是有限的,所以这些都是预测问题,而且预测准了就够了。而商业销售数据、医学实验数据,你是可以改变销售策略,改变实验条件的,而且,你的目的不仅是分析现有数据,更在于是后面应该采取什么行动

站在工科来侃理科,熟悉预测却偏要来侃数据挖掘,一头汗啊。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河