
模式識(shí)別和機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘的區(qū)別與聯(lián)系
(一)模式識(shí)別的誕生與人工智能
自動(dòng)控制起始是從工業(yè)革命之后,人們就希望設(shè)計(jì)出減少人工干預(yù),能自己進(jìn)行調(diào)節(jié)(regulate)的機(jī)器,工程領(lǐng)域開始想出了根軌跡等等土招兒。等到40年代,伴隨二戰(zhàn)的需要,計(jì)算機(jī)的產(chǎn)生,維納(Wiener)——信息論和控制論(Cybernetics)的祖師爺正式開創(chuàng)了這“兩論”。
控制論這個(gè)詞是維納根據(jù)古希臘詞根發(fā)明出來的。用老爺子自己的話說就是“Cybernetics
:or control and communication in the animal and the
machine”。animal先不提,那是人家天才小時(shí)候就對(duì)生物學(xué)有興趣;在工程方面,控制論的control主要是圍著machine轉(zhuǎn)的。因?yàn)樽鎺熼_山的時(shí)候是二戰(zhàn)中,初衷就是要讓機(jī)器代替人進(jìn)行防空武器的隨動(dòng)瞄準(zhǔn)。
維納是數(shù)學(xué)家,寫出來的理論和公式,讓當(dāng)時(shí)的工程師們看著實(shí)在頭疼。但是維納不僅僅是數(shù)學(xué)家和“搞理論”的,實(shí)際工程問題,人家二戰(zhàn)中參與了,也想到了。最典型的就是對(duì)噪聲的處理。
典型的負(fù)反饋控制系統(tǒng)框圖里,從“傳感器”的到“給定輸入”之間,畫一根線就連過來了??墒菍?shí)際中,傳感器有誤差,測量回路中有包含噪聲,需要的測量值甚至根本就是淹沒在一片嘈雜的信號(hào)里面(水聲信號(hào))。這時(shí)候管識(shí)別“真實(shí)值”的問題叫濾波,通過設(shè)計(jì)各種濾波器來解決。
但是一學(xué)到現(xiàn)代信號(hào)處理這塊就會(huì)發(fā)現(xiàn)和傳統(tǒng)的信號(hào)處理不一樣了,不再是時(shí)域、頻域、Z域的濾波器變來變?nèi)チ恕木S納最佳濾波的算法和ARMA模型的原理就可以看出來,既然是用隨機(jī)過程和概率統(tǒng)計(jì)來看待和描述信號(hào)和噪聲,那么已經(jīng)可以把這個(gè)濾波問題用“估計(jì)(Estimation)”、“預(yù)測(Prediction)”來描述了。此外,對(duì)系統(tǒng)的狀態(tài)方程確定參數(shù)的問題,好像是用的“辨識(shí)(Identification)”吧,都差不多。之所以羅嗦這些詞,是因?yàn)檫@些詞在模式識(shí)別的分支里出現(xiàn)的詞。
祖師爺提出、總結(jié)這些方法大概主要為了玩轉(zhuǎn)控制問題里的那些傳感器。但是,其他不需要machine、不需要控制的領(lǐng)域,但是也需要用傳感器去測量、去噪聲、估計(jì)、預(yù)測、辨識(shí)啊!其實(shí)從需求角度,類似“怎么讓機(jī)器能像人一樣分辨人的語音”的研究,也是從40年代就開始了,一開始也是“語譜圖”之類的土招兒,好像是貝爾實(shí)驗(yàn)室弄的吧。類似的問題“識(shí)別航拍照片”,“識(shí)別手寫文字”都是類似的工作。這些工作也都希望使用計(jì)算機(jī)代替人來做呢。
花開兩朵各表一枝,先放下各行各業(yè)的需求和土招兒暫且不說,再來看看計(jì)算機(jī)。與此同時(shí),計(jì)算機(jī)產(chǎn)生之后也需要找到更多的應(yīng)用領(lǐng)域。除了吸引人的計(jì)算速度之外,數(shù)學(xué)家開始琢磨讓計(jì)算機(jī)再干點(diǎn)別的。
于是,50年代開始出現(xiàn)“人工智能(artificial intelligence AI)”這個(gè)詞。注意是artificial不是simulation。也就是說,不是用計(jì)算機(jī)“模仿”人腦硬件結(jié)構(gòu)和人的思維過程,而是研究怎么讓半導(dǎo)體造計(jì)算機(jī)用二進(jìn)制數(shù)據(jù)結(jié)構(gòu)+算法去達(dá)到肉長的人腦的智能“效果”。好比做題,只需要你能得到結(jié)果,不看步驟。數(shù)據(jù)結(jié)構(gòu)和算法是計(jì)算機(jī)專業(yè)的核心之一,也是當(dāng)年在“制造計(jì)算機(jī)”之外,研究怎么“使用計(jì)算機(jī)”的獨(dú)門課程。(咱們中國大學(xué)里的計(jì)算機(jī)系大概是60年代從電子系、自動(dòng)化系里獨(dú)立出來的。)所以 “會(huì)編程、搞軟件的”IT民工里,科班生比半路出家的“藍(lán)領(lǐng)”強(qiáng)就強(qiáng)在,除了會(huì)if for這些語法之外,就是人家數(shù)據(jù)結(jié)構(gòu)、算法、離散數(shù)學(xué)這些方面正經(jīng)學(xué)過。那些“走迷宮”、“8皇后問題”,就是數(shù)學(xué)家抽象出來,丟給計(jì)算機(jī)去做的人的智力題。
AI又叫狹義的人工智能,基本可以等同于計(jì)算機(jī)算法了。當(dāng)然也確實(shí)有研究人腦結(jié)構(gòu)和思維過程,用計(jì)算機(jī)去simulation人腦的“廣義”人工智能,不過那更多是醫(yī)學(xué)、生理學(xué)的事情啦。也許有人說不對(duì)啊,神經(jīng)網(wǎng)絡(luò)(Neural Networks NN)可是就是模擬人的神經(jīng)元呀的算法啊,算狹義還是廣義?這個(gè),統(tǒng)計(jì)學(xué)家們發(fā)來抗議電,說NN壓根就沒那么玄乎,不過就是類似“投影尋蹤回歸(Projection Pursuit Regression)”的算法。這個(gè)后面寫到模式識(shí)別具體算法時(shí)候會(huì)提到。
但是除了做智力題之外,人的能力里屬于智能的到底都有什么呢?經(jīng)過總結(jié),其中之一是識(shí)別能力,然后是決策能力。
這下好了,一邊是需求,一邊是計(jì)算機(jī)的計(jì)算能力。估計(jì)、預(yù)測、辨識(shí)、識(shí)別……是時(shí)候把這些類似的工作統(tǒng)籌解決了!
這樣在60年代,模式識(shí)別(Pattern Recognition PR)產(chǎn)生了
(二)模式識(shí)別的流程與機(jī)器學(xué)習(xí)
一個(gè)標(biāo)準(zhǔn)的模式識(shí)別流程是:
“客觀對(duì)象”—1—>“數(shù)值表示”—2—>“計(jì)算機(jī)算法”—3—>“識(shí)別結(jié)果”
但是這個(gè)流程只是計(jì)算機(jī)工作時(shí)的流程。而在能這樣工作之前還要干很多事。比如人臉識(shí)別,一個(gè)計(jì)算機(jī)算法又不是天生就認(rèn)識(shí)很多人,算法要經(jīng)過訓(xùn)練和學(xué)習(xí)好了,才能照上面這個(gè)過程工作。
那么到底在訓(xùn)練、學(xué)習(xí)些什么,又是在識(shí)別些呢?這個(gè)還是要回到定義。“模式識(shí)別”這個(gè)詞不是太容易顧名思義的,我直到研究生入學(xué)以后很長時(shí)間還是不明白是什么意思,就知道是能分類。
還是說人臉識(shí)別吧。對(duì)人來說,看見來自于1個(gè)人的人臉圖像,即使是不同表情和姿勢(shì)的,我們也能認(rèn)出這些圖像來自于同一個(gè)人。而你之所以能認(rèn)出來,可能是觀察了臉型+發(fā)型,也可能是五官形狀的組合。可是到底是圖像上的什么決定了你的判斷呢?你有的能說出來,可是有的卻又說不清道不明的。于是,就用一個(gè)抽象的詞——“模式”來形容那些能夠讓你判斷出哪些樣本屬于同一類別、能夠和其他類別相區(qū)別的特征或者屬性。
我們下面設(shè)計(jì)計(jì)算機(jī)算法為每1個(gè)人的圖像建立唯一的1個(gè)“模式”或者說模型,不同的N個(gè)人對(duì)應(yīng)于N個(gè)模型。很可能每個(gè)人的身份編號(hào)i對(duì)應(yīng)一個(gè)參數(shù)模型Mi。這個(gè)建立或者說訓(xùn)練(train)過程可能就是“統(tǒng)計(jì)”這些圖像,確定每個(gè)模型的參數(shù)。
而開發(fā)者為了評(píng)價(jià)算法性能,也要先預(yù)備一些已知類別的圖像,分成train set 和test set,這樣在訓(xùn)練集上訓(xùn)練好的算法,要測試集上測試一下。根據(jù)測試結(jié)果調(diào)整算法參數(shù),或者實(shí)在太差的話要換一種算法了。不斷的調(diào)整參數(shù)、不斷改程序,不斷的train,不斷的test……所以這方面的論文通常要附上算法在各種數(shù)據(jù)集,各種情況下的結(jié)果。一個(gè)圖,一張表的背后,要寫好多程序,花好多時(shí)間在電腦上運(yùn)行。
這樣訓(xùn)練好后,就可以按上面那個(gè)流程工作了。如果一張屬于第i人的圖片來了,算法用保存的N個(gè)人的模型去分別計(jì)算相似度,判斷這張圖片來自于模型Mj的可能性最大,也就等于電腦可以通過看圖片識(shí)別出了這人的身份是j。如果j等于真實(shí)身份i,那就識(shí)別正確了,如果每次都識(shí)別對(duì),那電腦就達(dá)到了人腦的能力了。
注意算法在輸出j的時(shí)候是不知道真實(shí)身份i的,那么這種工作,就可以看成是一種預(yù)測(Prediction)。如果需要輸出是離散變量,比如這里是類別,就稱為分類(Classification),而需要預(yù)測連續(xù)型變量的,比如股指,房價(jià),就稱為回歸(Regression)。這里的回歸沒有針對(duì)“過去”的值的意思,就是說預(yù)測的目標(biāo)輸出的是連續(xù)性的值。
好了,現(xiàn)在來說機(jī)器學(xué)習(xí)(Machine Learning ML)。回顧一下你的模型從哪里來的?雖然有些模型假設(shè),但主要從輸入的已知身份的數(shù)據(jù)中來的。而算法的“訓(xùn)練-考試”過程,又很像人的學(xué)習(xí)過程,于是把這一類計(jì)算機(jī)算法叫做Machine Learning。其實(shí)是Machine Learning from data了??雌饋硎荕achine在不斷自己 Learning,其實(shí)是人寫的算法讓它一直learning。如果算法是純用統(tǒng)計(jì)學(xué),也可以叫統(tǒng)計(jì)學(xué)習(xí)(Statistical Learning)。
所以在我看來,ML可能是最類似AI的范疇了,都是計(jì)算機(jī)算法嘛。區(qū)別是AI是具備類人能力就行,不管算法怎么來的,一個(gè)拍腦袋定義的出來的公式也算。而ML要窄一些,是特指經(jīng)過Learning from data 過程而獲得的“智能”。用統(tǒng)計(jì)學(xué)的里的概念來說,ML是一種數(shù)據(jù)驅(qū)動(dòng)的,非參數(shù)(Nonparametric)或者半?yún)?shù)(Semiparametric)算法。再來比較PR和ML??梢哉f,PR里面的算法部分基本上一定是屬于ML。區(qū)別在于,PR里的ML算法主要就是在做預(yù)測。而整個(gè)ML就要廣多了,如果你的算法輸入是棋譜,那么訓(xùn)練好的算法就可以下棋打牌。但是UCI上面供機(jī)器學(xué)習(xí)算法之間進(jìn)行能力比較的標(biāo)準(zhǔn)數(shù)據(jù)集基本都是分類和回歸問題。這么看ML和PR實(shí)在是太相似了。
說到了這里,PR里面的ML算法,主要都是在用統(tǒng)計(jì)學(xué)(少部分有圖論),問題也就出來了。提出算法的主要是人家數(shù)學(xué)家、統(tǒng)計(jì)學(xué)家、或者計(jì)算機(jī)專業(yè)的干的,已經(jīng)屬于science了??墒窃趺茨J阶R(shí)別的事凈是自動(dòng)化、電子信息、通信這些專業(yè)的搞呢?雖然你們攢一起改叫Electronics Engineering了,可那也是Engineering啊,本科頂多學(xué)點(diǎn)高數(shù),線代,復(fù)變,信號(hào)系統(tǒng),古典概型和簡單數(shù)理統(tǒng)計(jì),再學(xué)編碼啥的,到碩士嘛頂多學(xué)點(diǎn)矩陣論,隨機(jī)過程頂天了。就這點(diǎn)數(shù)學(xué)底子,提不出啥牛X算法,憑啥模式識(shí)別專業(yè)還是你們這些工科生霸著?。縼G給數(shù)學(xué)系、統(tǒng)計(jì)系,或者計(jì)算機(jī)系得了,人家CS好歹也是S啊。
嗯,我也疑惑了很久,明明都是在折騰數(shù)學(xué),怎么還是賴在工科里呢?
(三)模式識(shí)別中的工程、技術(shù)
為什么要說說PR沒被數(shù)學(xué)、統(tǒng)計(jì)和計(jì)算機(jī)專業(yè)搶去的問題,實(shí)際是想分析一下PR里的科學(xué)與技術(shù),理論與工程的問題。
如果去學(xué)PR,看任何一種這方面的經(jīng)典教材來看,基本上全是在講各種理論、各種分類回歸算法、和算法的思路。(關(guān)于這方面的經(jīng)典教材,其實(shí)特別想單獨(dú)來說的。如果是第一本,挑一本對(duì)自己胃口的書很重要。原因是經(jīng)典基本都是700頁起的,而且基本滿眼望去都是公式。理科生不論,對(duì)于看理論經(jīng)常感覺力不從心,或者沒什么耐心的工科生,如果找了一本不對(duì)自己胃口的書可能就很難看下去,Amazon上的書評(píng)里每本經(jīng)典都有一堆5星,但是也頗有些1 2星的。)
雖然可以說“學(xué)PR 就等于學(xué)各種分類算法”,但是不等于說PR 就等于分類算法。最起碼炮制這方面的論文就不等于炮制分類算法F,想想也是,不然工科生還有的混嗎!作為說PR的最后一節(jié),這次工科生要來吹吹牛,看看PR除了統(tǒng)計(jì)理論和算法,有什么離不了工程、技術(shù)的地方。還是先把流程圖再畫一遍:
“客觀對(duì)象”—1—>“數(shù)值表示”—2—>“計(jì)算機(jī)算法”—3—>“識(shí)別結(jié)果”
上一篇主要說的是 “計(jì)算機(jī)算法”—3—>“識(shí)別結(jié)果”這塊,確實(shí)最重要,是核心?!皵?shù)值表示”—2—>“計(jì)算機(jī)算法”比較簡單:算法要求輸入的數(shù)據(jù)通常都是個(gè)很規(guī)整的矩陣,比如N個(gè)訓(xùn)練樣本,每個(gè)樣本p個(gè)特征(feature),輸入就是一個(gè)N*p的矩陣。 此外,有的算法需要對(duì)列進(jìn)行標(biāo)準(zhǔn)化,有的不接受連續(xù)型變量和離散值變量的混合,有的干脆不接受連續(xù)型變量,要量化變成啞變量。所以根據(jù)算法的不同,對(duì)數(shù)據(jù)的形式也要稍微做點(diǎn)加工。這也沒啥特別的。
關(guān)鍵就在于前面,“客觀對(duì)象”—1—>“數(shù)值表示”。還是繼續(xù)以人臉識(shí)別為例吧。研究了一個(gè)算法,都要在網(wǎng)上的幾個(gè)標(biāo)準(zhǔn)人臉庫中的圖像上實(shí)驗(yàn)自己的算法。通常庫里每個(gè)人的照片包括各種姿態(tài)(比如稍微左右側(cè)一些,抬頭低頭),表情變化,各種光照陰影,有的還有飾物比如眼睛,帽子,發(fā)型變化。圖像尺寸都是統(tǒng)一的,的比如256*256,灰度也是8bit這樣。
好了,你的算法在幾個(gè)人臉庫上跑得不錯(cuò),實(shí)驗(yàn)數(shù)據(jù)有了,論文有譜了,你很開心。老板也很開心,于是老板接了個(gè)小項(xiàng)目,讓你參與做個(gè)人臉識(shí)別的門禁系統(tǒng)。這時(shí)候你就會(huì)發(fā)現(xiàn),想按照那個(gè)完整流程來工作,1這一步的問題一點(diǎn)也不少。
首先就是傳感器的問題。傳感器直接決定了圖像有沒有形變,顏色和灰度有沒有改變,是不是清楚,分辨率有多高。通常的問題不是“有還是沒有”,而是“有。怎么辦?”所以從硬件選型到板卡布置這塊首先少不了“專門經(jīng)驗(yàn)”,然后還有成像這塊和圖像處理的知識(shí)。得到內(nèi)外參數(shù),怎么把畸變調(diào)整一下,然后降降噪聲,直方圖均衡調(diào)整一下對(duì)比度,尺寸也調(diào)整一下。這些圖像處理課里的內(nèi)容,雖然也都是簡單的數(shù)學(xué)公式,但是,場合不同,想要的圖像效果不同,參數(shù)上也總要微調(diào)的——讓我想起了PID參數(shù)的整定。嗯,很工科。
插一句,我所理解的工程學(xué)就是對(duì)實(shí)際問題的專門經(jīng)驗(yàn)的積累。公式理論簡單,而經(jīng)驗(yàn)的獲得,只需要多花時(shí)間和實(shí)際問題打交道,自然熟能生巧。這么看工科很easy,經(jīng)驗(yàn)也沒什么神秘的。但是每個(gè)人的時(shí)間總是有限的,如果專門在一個(gè)領(lǐng)域花了比別人多的時(shí)間,那么他的經(jīng)驗(yàn)就變得寶貴起來了。此外“接觸實(shí)際”四個(gè)字也不是人人都喜歡的。實(shí)際中沒有書本上的“理想條件”,只有各種層出不窮的想不到的問題。挑戰(zhàn)性一點(diǎn)不比在理論上探索低。工科的思維就是事前對(duì)可能遇到的實(shí)際問題的復(fù)雜性的敏感和估計(jì),事中遇到問題時(shí)的能想法子解決??梢詫?duì)性能妥協(xié)、將就;可以對(duì)參數(shù)近似、也可以試驗(yàn)出來;可以把原本充滿創(chuàng)新的玩意改得樸實(shí)無華或者面目全非——一切只為了這玩意最后能工作起來、能動(dòng)換(然后再慢慢往好看、好用上改)。
嗯,跑題了,繼續(xù)?,F(xiàn)在圖像清楚得已經(jīng)堪比人臉庫了,識(shí)別效果還不錯(cuò)。找客戶來驗(yàn)收吧!可是給客戶演示完,人家突然問系統(tǒng)能不能集成到一起,做到DSP和嵌入式系統(tǒng)上;還要這樣,還要那樣……嗯?等等,你忽然想到好像程序是在雙核PC上跑的,好像用了好些個(gè)MATLAB導(dǎo)出的函數(shù),有個(gè)算法還是R里面的……
你嘴上說是,臉上沒反應(yīng),但心里浮現(xiàn)的卻是《潛伏》里陸橋山審馬奎時(shí)從牙縫里擠出來的臺(tái)詞:我真想撕爛你的嘴!你當(dāng)初不是說……
可老板下了死命令,大家只好大干快上干起來!作為開發(fā)算法的你,責(zé)無旁貸??!
軟件徹底用C和C++重寫!不能用好使的MATLAB了,API真矬,簡單的矩陣運(yùn)算要費(fèi)勞資這么大勁。不知不覺1禮拜過去了,終于寫好了。
趕緊到下載到那邊已經(jīng)是改到第N版剛拿回來,還熱乎乎的板卡:
咦,沒反應(yīng)?軟件還是硬件問題?那邊查電路,這邊改程序試試?
呼,有影了,可是噪聲咋這么嚴(yán)重,鼻子不是鼻子臉不是臉的?攝像頭還是板子上有干擾?軟件上能再改改參數(shù)?終于運(yùn)行起來了,怎么好像卡死了?哦,原來是太慢了。硬件條件比PC機(jī)差了好幾個(gè)檔次了,怎么辦啊,換個(gè)簡單一點(diǎn)的算法?那性能咋辦?那之前那個(gè)算法好不容易得到實(shí)驗(yàn)結(jié)果不是都白做了么?
滿頭黑線了吧?
這個(gè)人臉識(shí)別的例子有點(diǎn)夸張了,但不是完全虛構(gòu)出來的。通過這個(gè)例子想說的是,數(shù)據(jù)來源,軟硬件的布置,性能的取舍,參數(shù)的實(shí)驗(yàn)調(diào)整都是論文上看不到也寫不出來的實(shí)際工程問題。通常需要各種不同的傳感器和硬件打交道,也需要各行各業(yè)的專業(yè)背景知識(shí)。涉及圖像的少不了攝像頭、照相機(jī)和圖像處理的知識(shí);做水聲信號(hào)和語音識(shí)別,少不了拾音器陣列,頻域方面的信號(hào)處理知識(shí)。這也就是為啥自動(dòng)化,電子,通信、甚至生物醫(yī)學(xué)專業(yè)能摻和其中的原因。
最后總結(jié)一下我對(duì)PR的認(rèn)識(shí):PR是因?yàn)楦鱾€(gè)領(lǐng)域有“電腦代替人腦”的實(shí)際需求才產(chǎn)生的,所以是一定面向應(yīng)用的。PR不是在標(biāo)準(zhǔn)數(shù)據(jù)集上驗(yàn)證分類算法的性能就完了,這個(gè)是ML的事情。PR是要把ML算法在實(shí)際問題中用起來。是理論加實(shí)際,科學(xué)和技術(shù)(雖然理論是核心)。
前三節(jié)主要是圍繞PR來說,就說到這吧。下面打算試著說說我認(rèn)識(shí)的機(jī)器學(xué)習(xí)算法概貌和一直沒露面的數(shù)據(jù)挖掘。
(四)可解釋性和數(shù)據(jù)挖掘
從這節(jié)開始,打算把ML算法的概貌描繪一下。ML領(lǐng)域發(fā)展特別快,幾乎所有的論文都聲稱自己弄出一種新算法??凑撐亩嗔酥笪业捏w會(huì)是,如果心里沒有幾條線索,就分辨不出這一堆算法的區(qū)別與聯(lián)系,最后的結(jié)果是學(xué)會(huì)一堆“支離”的算法,學(xué)習(xí)了蘋果只知道這是蘋果,給個(gè)鴨梨就不認(rèn)識(shí)了,給個(gè)蘋果梨就更不明白是什么東西了。至于應(yīng)用時(shí),更不知道哪種算法更適合自己的問題。一般都是把ML算法分成兩大類:有監(jiān)督學(xué)習(xí)(Supervised Learning)和無監(jiān)督學(xué)習(xí)(Unsupervised Learning)。我覺得這其實(shí)是從輸入數(shù)據(jù)的形式上分的,說這個(gè)離不了公式和圖表了,不想先說這個(gè)。從ML的目的和用途來分,可以分成預(yù)測(Prediction)和數(shù)據(jù)挖掘(Data Mining)。我覺得對(duì)應(yīng)用來說,這么分更有意義些。這兩大類算法的核心區(qū)別就是:預(yù)測問題更重視算法的預(yù)測能力(Predictive Power),數(shù)據(jù)挖掘問題更重視算法的可解釋性(Interpretability)。預(yù)測之前說過了,針對(duì)的目標(biāo)變量如果是離散的類別標(biāo)記,比如醫(yī)學(xué)上的某種病的陰性陽性,或者人的身份編號(hào),就叫分類(Classification);如果針對(duì)的連續(xù)的變量,比如股價(jià),房價(jià),就叫回歸(Regression)。
預(yù)測能力很容易理解,我們只關(guān)心train set上訓(xùn)練好的算法在test set上面誤差、誤分類率要盡可能低。也就是說,模型給出的預(yù)測要盡可能地接近實(shí)際結(jié)果。
可解釋性就要好好說說了。簡單說就是,我們更關(guān)心輸入的p維變量之間的聯(lián)系,或者算法產(chǎn)生的預(yù)測是哪幾個(gè)變量起了主要作用,也就是說,算法給出預(yù)測結(jié)果的根據(jù)是什么。
比如商業(yè)智能(BI)上常見的購物籃分析(Market Basket Analysis)就是個(gè)典型的看中可解釋性的數(shù)據(jù)挖掘問題。因?yàn)橹苯佑小板X景”,所以幾乎每個(gè)講統(tǒng)計(jì)的,講數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)的,甚至講數(shù)據(jù)庫應(yīng)用的書,都要提到這個(gè)事,現(xiàn)在各個(gè)購物購書網(wǎng)站也都在做這個(gè)事。
零售商從積攢的海量顧客賬單中可以“挖掘”出什么呢?首先,分析哪幾種商品容易同時(shí)出現(xiàn)在顧客的購物籃里,商場就可以把這些看起來風(fēng)馬牛不相及的東西放在一起,方便顧客購買;另一方面,分析客戶辦會(huì)員卡時(shí)留下的個(gè)人信息,可以分析出經(jīng)常光顧本商場的是那些特征的人,這樣對(duì)外投放使廣告便更加有的放矢,可望吸引更多這些類型的人來。
流行的做法是每張賬單作為1個(gè)p維向量,對(duì)應(yīng)所有p種商品。買了置1,沒買置0。N張賬單就組成了一張N*p的值為0-1的表格。用流行的Apriori算法從數(shù)據(jù)中“挖掘”購物模式。比如一個(gè)support = 0.03,confidence = 0.87的Rule:{花生醬,黃油,果醬}=>{面包}這就說明,如果一個(gè)顧客同時(shí)買了前三種東西,那么他同時(shí)買面包的可能性是87%。而這種同時(shí)買4種東西的顧客,在總顧客中占3%。
這個(gè)模式看起來平淡無奇,可是有時(shí)有很奇怪的模式被挖掘出來,忘了從哪里看到的一個(gè)例子:
{尿布,奶粉}=>{啤酒,刮胡刀}把這4個(gè)放一起確實(shí)提高了銷量,原因后面再說。
而對(duì)客戶身份信息的挖掘結(jié)果比如說是:support = 0.13,confidence = 0.8{在家講英語,有住房,職業(yè)是professional}=>收入大于$40000。
那就趕緊針對(duì)這些人,在他們經(jīng)常出沒的地方做廣告吧!注意看這些“模式”,前面的括號(hào)里只有2 3個(gè)“變量”,遠(yuǎn)遠(yuǎn)小于總共p個(gè)變量。也就是說,我們做出的預(yù)測,只依賴于所有p個(gè)變量中特定幾個(gè)變量。
如果我說這就是可解釋性??峙麓蠹疫€是不明白。嗯,佛教上闡釋概念,有“表詮”和“遮詮”的說法。為了說明一個(gè)概念,表詮就是說“它是什么”;遮詮卻不說“它是什么”,而是說“它不是什么,不是什么……”。嗯,下面再和不具備可解釋性的算法比一下就知道了。
比如還是N*p的矩陣,如果我想分析什么東西導(dǎo)致了買面包,我把其他p-1種東西 +1個(gè)截距項(xiàng)一共N*p做為X,面包N*1作為Y,做個(gè)最小二乘:
Beta = (X’*X)-1*X’*y這個(gè)結(jié)果Beta意味著什么呢?有了這個(gè)Beta,給我任何一個(gè)1*(p-1)的賬單x,都能給出買面包與否的預(yù)測值y_est = x* Beta。
但是,看著這個(gè)回歸出來的p維的Beta,我不能像之前那樣,簡單說出對(duì)買面包來說是哪幾種別的商品起了更重要的作用,也就沒法想出提高銷量的方法了。
這就是預(yù)測能力和可解釋性的區(qū)別。
預(yù)測能力就是輸出結(jié)果的準(zhǔn)確度,而可解釋性是可以用來幫助人們理解模式背后的原因。比如從前面那個(gè){尿布,奶粉}=>{啤酒,刮胡刀}的購物模式,再配合顧客的年齡和性別,就最后推斷出,可能是妻子在坐月子時(shí),年輕父親們被打發(fā)出來購物的。進(jìn)而可以重新設(shè)計(jì)實(shí)驗(yàn)或者進(jìn)行改進(jìn):不但把這已發(fā)現(xiàn)的4種商品擺一起,而且把其他年輕父親可能會(huì)買的東西也擺過來試試。
醫(yī)學(xué)上也是這樣。不是特別關(guān)注用已有的p項(xiàng)的因素(行為習(xí)慣、實(shí)驗(yàn)條件、檢查化驗(yàn)結(jié)果)去準(zhǔn)確預(yù)測疾病,而更關(guān)注如何從p個(gè)因素中發(fā)現(xiàn)是哪幾種因素組合更容易導(dǎo)致疾病,進(jìn)而可以改進(jìn)實(shí)驗(yàn)設(shè)計(jì),改進(jìn)檢查,乃至改進(jìn)預(yù)防和治療的方案。傳統(tǒng)上統(tǒng)計(jì)學(xué)里作為因素分析(Factor Analysis)問題來研究,而數(shù)據(jù)挖掘使用的方法就更多,涉及的更廣。而且數(shù)據(jù)挖掘也不僅僅是用來進(jìn)行變量選擇和重要性分析,可以用樹、圖、層次聚類之類直觀的結(jié)構(gòu),描述變量之間的復(fù)雜依賴關(guān)系。
前一段有個(gè)書叫《小趨勢(shì)》(microtrends)的,里面舉了美國社會(huì)統(tǒng)計(jì)學(xué)家統(tǒng)計(jì)出來的許多看起來奇妙的小眾人群,用來描述當(dāng)今的美國社會(huì)。甚至進(jìn)而有針對(duì)性地設(shè)計(jì)競選宣傳策略,左右選舉結(jié)果。這都屬于看中可解釋性的數(shù)據(jù)挖掘了。
總結(jié)一下預(yù)測和數(shù)據(jù)挖掘的區(qū)別:預(yù)測是偏重得到?jīng)Q策結(jié)果,數(shù)據(jù)挖掘是偏重分析決策原因和過程。
預(yù)測問題主要是在生物特征鑒別(人臉,語音,指紋,虹膜)、機(jī)器視覺、目標(biāo)跟蹤這些領(lǐng)域,直接代替人進(jìn)行決策。在商業(yè)數(shù)據(jù),醫(yī)學(xué)數(shù)據(jù)里,需要解決數(shù)據(jù)挖掘問題,給人提供參考。
之所以要費(fèi)勁區(qū)分預(yù)測和數(shù)據(jù)挖掘,因?yàn)樘煜聸]有免費(fèi)的午餐,一種算法預(yù)測精度高了通常很難具備太好的可解釋性。要針對(duì)具體的應(yīng)用問題選擇合適的算法,就要明白自己更需要的哪種能力。很多算法同時(shí)具備一定的預(yù)測準(zhǔn)確度和可解釋性,僅從算法形式上很難分清,還是應(yīng)該從應(yīng)用背景上來分析。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10