小时候喜欢读趣味数理化,所以久有一个小心愿,写一组趣味数据挖掘的科普博文。要把数据挖掘的一些概念讲得通俗有趣,需要好的例子,正搜寻中,一个有趣的、适合解释关联规则的例子就冒出来了。
科学网上三位博主周涛、吕喆、程智在博文中对“狼爸打子成才,把三个子女送进了北大”的事情做了定性分析。
本文借此例来说明数据挖掘中关联规则中支持度、置信度和兴趣度概念,顺便对此事做个定量分析, 同时也作为趣味数据挖掘系列博文的开篇。
这个关联规则可写成下列形式:
- R1: 被打 –> 北大, 支持度 s=, 置信度 c=
或反过来
- R2: 北大 –> 被打, 支持度 s=, 置信度 c= (观察因果的角度与R1有所不同)
下面将其计算支持度、置信度的上限,为简单,采用了一些略有放大的粗略假定和估计。
1 支持度 (support)
全国每年高考人数大约1000万人(2008 :1050万,2009:1020万,2010: 957万);把“狼爸”的三个孩子算成同一年进北大(支持度放大三倍),假定同年进北大、且都有“被打”的经历有3K名(支持度大约放大3K倍)。于是,全国考生中 “被打”且 “进北大” 的支持度s 为:支持度 s = 3K/107 =3K*10-7
狼爸的故事表明,这里k≥1, 据常识估计K<10 ( 如果轻率放大K,北大学生会提出抗议,幸好,这里只是反面的假定 ),于是:支持度 s < 3*10-6 (支持度没有因果方向, 对R1和R2都适用)
对这样的概率比较小的事件,成熟彩民也会只当做娱乐,实在不值得媒体大惊小怪。
2 计算“北大–>被打”的置信度 (confidence)
2.1 在北京大学内计算
规则R1“被打–> 北大” 的置信度计算稍有点难, 留到2.2小节解析。
我们先计算 R2:“北大–>被打”的置信度,它也同样能说明某种关联,北大本科生 14000人(大约),平均每年收学生3500人,设其中挨过家长打的有3K人(1≤k<10),没有挨打的不少于3470人,则:
- 北大–>被打, 置信度为 3K/3500 < 0.86%
- 北大–>不被打, 置信度为 3470/3500 > 99.14%
可见,“被打”和“北大”的关联 很小,不足为信,当不得真。
2.2 计算“被打–>北大”的置信度 (confidence)
如上面假设,假定 同年全国被打的N名,其中进入北大的3K名(如上估计,0≤k<10)则
R1: 被打–>北大, 置信度 = 3k/N ,
- 如果N很大,k>0,置信度就比较小(不敢轻易估计N的具体数值,但不希望N大,那是教育的悲剧),
- 如果N不太大,K>0,置信度就比较大。
- 如果某年,k=0,不管N是多大,那一年“被打–>北大”的置信度 为0.
2.3 在该家庭范围内计算,兼议规则的兴趣度:
“狼爸”有四个孩子(不知为什么能够超生),估计四个都挨过打,三个上了北大
被打–> 北大, 支持度 0.75, 置信度 0.75。 (1)
这条规则一旦走出其家门, 就不成立了。所以,准确表达为:
(该家,被打) –> 北大, 支持度 0.75, 置信度 0.75。 (2)
为了说明其无意义,我们还可以挖掘出一条千真万确的关联规则:
(该家子女,每天吃饭) –> 北大, 支持度 0.75, 置信度 0.75。 (3)
如果把“每天吃饭”改为任意的保健品,关联规则也成立,比“打”更具有有诱惑力,说不定还有经济效益。这条无意义的关联规则,说明需引入关联规则的兴趣度,此概念稍复杂,只简介其大致思想。
当关联规则左边是多个项,如上面的(3)式,可以用减项法测试每个项的贡献,这类似过敏疾病患者判断过敏源,左边甚至可以减少到空集。在(3)式中,
(a)把“每天吃饭”去掉, 不减少支持度和置信度,说明此项冗余;
(b)如把“该家子女”去掉,则相当于在全国的大数据集上挖掘, 支持度和置信度立刻大减,说明这个项是至关重要的。
如果一个关联规则中,每一个项都是重要的,这个关联规则基本上是有意义的。
3 错误的挖掘结论
这里有几个估计,(1) 所谓的“打”,实际上是高高举起,轻轻放下,是严格的指代词,还不是那种打得皮开肉绽的打(那样会打掉尊严和信心,就悲剧了);(2)老大比较懂事;(3)老大对老二老三的影响远胜于老爸打的效果。“狼爸”在挖掘关联规则时候,忽略了这一因素,“父假长子(女)之威”,用数据挖掘的行话,犯了“No interesteness” 的错误(这是一个稍复杂的概念),得出了错误的挖掘结论。
4 一个支持度和置信度都很高的关联规则
在输入文本的纠错技术中,常关注词与词的发声关联,或谐音关联,“被打”和“北大”的普通话发音都是“beida”,用拼音输入法时候,二者容易混淆,又例如,本博文在输入最后一节小标题“辨才需待七年期”时,曾把 “辨才”输入为“辩才“(谢谢22楼的朋友的指正),纠错软件会把近音词按近似度排序列出。因为在语音近似的意义上:
被打–> 北大,支持度 100%, 置信度 100%
于是,在用拼音方法输入“被打”之后,作输入纠错检查时,软件列出候选词中的Top 1 就是“北大”,或许可以作为中学生被打后的一种安慰。
这一技术在处理网络文本,微博挖掘时也很有用,如规范 “悲剧 Vs 杯具”,“p2p Vs. P-to-P”,”U Vs. YOU“,以及许多网络同声缩略语等等。
5 曾经言必称啤酒尿布
过去讲关联规则时候,常常用啤酒尿布的故事,有三个要点:
(a)表象分析:说,沃尔玛通过抽象的销售数据挖掘,发现啤酒和尿布常被男性顾客们同时购买,在挖掘出来的若干条形如 ( Xi–>Yi ,s= c= ) 的规则中,这一条支持度和置信度都比较高;
(b)内在联系 (这不属于数据挖掘,而属于管理)调查发现,婴儿之父下班为孩子买尿布时顺手买回自己爱喝的啤酒;
(c )促销措施 (属于促销手段),把啤酒和尿布放在同一个货架 ,或进一步地,把啤酒降价,把尿布涨价,吸引婴儿之父的消费。
现在人们认为,这只是一个故事,或许,“狼爸”的例子更贴近,更容易消除对概念的误解。
6 猜自然之谜时,数据挖掘虽属无奈之举,却很有效
在人们没有掌握行星运动规律之前,人们从历史观测数据去找规律,找匹配。第谷是一位实验天文学家,历经40年观察,积累了关于行星运动的大量数据。
开普勒在第谷的四十年数据上,用手工作数据挖掘,挖掘了十年,发现了行星运动三大定律。 Candida Ferreira采用基因表达式编程(GEP)方法,用10个 个体, 进化50代,只需要少得多的数据,几秒钟就可完成(参见文献[1],P253-257 )。有了这个定律,如今计算某个行星的位置,就不再需要数据挖掘,而直接用公式了。所以数据挖掘是在不知道规律时,而要猜自然之谜时的无奈之举。
如今,未破解的自然之谜还很多,数据挖掘虽属无奈之举,却很有效,挖掘出正确的表达形式(公式,定律等)后,再设法用理论或模型 来作动力学的或构造性的解释。
上面的分析表明,数据挖掘能从能从一些平常熟视无睹的事实中,挖掘出令人惊奇的结果。所以,有些国家把数据挖掘专业看作是敏感专业,出国学数据挖掘的学生去办留学签证时,常常被Check ,复查,偶尔也听说过被拒签。
7 辨才需待七年期
“狼爸”的三个子女进了北大,还不能就说是成功了,今后还要作科研,找工作,也许还要读研,写论文…, 等待他们的竞争还多,要等将来工作上出成果了,才算成功。
有道是:试玉要烧三日满,辨才需待七年期。希望他们在七年或者十年之后能真正成才,那时的成才,与现在的“打”,实在是没有什么关联了。
参考文献
[1] Candida Ferreira,”Gene Expression Programming ,Mathematical Modeling by an Artificial
Intelligence”,Second, revised and extended edition,P253-257 ,Springer,2006 ,ISSN print
edition: 1860-949X,ISSN electronic edition: 1860-9503 ,Library of Congress Control
Number: 2006921791.
作者:唐常杰,四川大学,计算机学院,教授
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。