昨天,博文《手機平板刷機》的 主人公小斌帶來自種自養的青菜和一只小公雞,說是“謝師”,可能是長途顛簸導致動物生物鐘失調,今天離天亮還有兩小時,就雄雞一唱(可惜天未白),小區高 樓群的回聲指數比較高,人喊一聲也能聽見三次回聲,那反復回蕩的“喔喔喔---”,引得墻外兩小區的公雞也跟風叫起來,好家伙,雞鳴三區,真是擾民。
早早起來,“做掉”了這個擾民的始作俑者,聯想起大數據中的關聯和課題組前三個月前發表的關于因果挖掘的論文(計算機學報2014.12,文后可下載),寫了這篇博文,借此科普一下因果與關聯,寫得比較匆忙,不當之處請博友們指正。
舍恩伯格的“三要三不要” 大數據吹鼓手 維.舍恩伯格在《大數據時代》中提到了大數據處理的的三個技術取向:要全體不要抽樣,要效率不要絕對精確,要關聯不要因果。
其中最后一條引起不少質疑,筆者以為,不要因果,不是不想要,是要不到,是不得已而為之 。大數據有個四V特點,即大、多、快、稀(價值高而密度稀),大、多、稀、使得因果挖掘任務太費時,為應對快, 就蘿卜快了不洗泥,放棄了因果挖掘。
雞叫與天明是關聯而不是因果 幼兒也知道雞叫不是天亮的原因。反過來,天亮也不是雞叫的原因,因為這違反“因前果后”的常識,雞叫時天還沒有亮;此外,上面提到的雞鳴三區,至少后面兩只雞叫的原因是第一只雞在叫,而跟著起哄。
細心觀察,可找到比"啤酒與尿布"更匪夷所思的真實例子,例如,醋(或井鹽)與牛肉(山西平遙的老陳醋和平遙牛肉;四川閬中的保寧醋和張飛牛肉;自貢的井鹽與火邊子牛肉,等等)。
多數情況下關聯很有用。盡管并不互為因果,雞叫和天明的這兩個事件的關聯被廣泛應用,在數千年在沒有時鐘的歲月里,老百姓雞鳴而起,日落而休,將軍們聞雞起舞;勤政的帝王,如康熙乾隆,聽見雞叫也不敢懶睡。
人們相信這個關聯,雞叫了,就將天明,在大多數情況不會誤事。這也是大數據重關聯輕因果的基本信念。但是,下面的例子說明 關聯可以正用,也可以反用;可以善用,也可以惡用;運用之妙,存乎于人。
巧用非因果性關聯的典型例子 戰國時 ,一個月黑風高的夜晚,孟嘗君的帶著一群雞鳴狗盜之之徒,先盜裘,次行賄,然后半夜在函谷關學一聲雞鳴,引得全城雞叫,哄開了城門,有如鯉魚脫得金鉤去,搖頭擺尾不再來,成了千古經典,這是對這一關聯的反用和善用;
在高玉寶的小說中,周扒皮為了長工們早出工,復用半夜雞叫,那是惡用。
上面的善用和惡用中,數據鏈都是 人-雞-人,利用人們相信雞叫即將天亮的關聯常識,這也說明關聯不一定可靠,找到本質內涵,才能真正認識世界,而不被表面現象迷惑。
對關聯的錯誤解釋,如果沒有深層次的挖掘,可能導致對關聯的錯誤解釋;在寓言故事中,常常有狐貍在老虎前面跑,傳統語言解釋為狐假虎威,其實很可能是狐懼虎威;
在如今的中國南海旁,有那么幾個小丑跳梁,可能是狐假虎威和狐懼虎威三七開;
小試牛刀:挖掘因果關系 關聯不一定是因果,但因果關系是一種特殊的關聯,先找到關聯,再用排除法,篩查因果,我們課題組在挖掘因果關系方面做了嘗試。
本文后面的論文,發表在計算機學報2014第12期,基本思想是“擾動自變量—觀察函數--排除假原因”。下面作一個不太通俗的(需要大一數學知識),也不太嚴格的解釋。
如果x和y是z的疑似原因,設法挖掘出函數z=f(x,y),例如用基因表達式編程方法,一定能從形式上挖出來(可用性是另一回事),在理想情況下, 能做到在關注點的鄰域,f(x,y)還是分段連續且可微分的;
在大數據集合上計算出關注點鄰域的偏導數(δz/ δx)和 ( δz/ δy)。
由多元函數的微增量公式,得到
ΔZ= (δz/ δx)Δx+ ( δz/ δy) Δy,
如果|δz/ δx| 遠遠大于| δz/ δy|,則x是比y更強的原因。如果對x進行干預(或擾動),通常z會有趨勢確定的變化,這種變化會在大數據中體現出來。
如果對x干預(或擾動),在大數據中觀察不到z的確定性的變化(例如Z隨機震蕩),則可從原因清單中排除 x。
論文中的定理2,能保證在一定條件下,能排除大多數假原因。并在真實數據集上得到了驗證。
隱藏的第三者可能是真正的原因 如果兩個互相關聯事件x和y之間沒有因果關系,則可能存在(隱藏的)第三者w,它是這兩個事件的共同原因。就好像一種病w.有兩種并發的表面特征x和y;例如,視力減退和腿腳麻木二者并不互為因果,他們可能是有第三者--糖尿病引起的;醋(或井鹽)與牛肉并茂的原因是以牛為醋(或井鹽)的生產動力,從一線退下來的牛,促進了牛肉的烹制工藝(當然,以牛為神的地方,不會有這一關聯)。