機(jī)器學(xué)習(xí)人人都在談?wù)摚死蠋焸冎淄猓挥泻苌俚娜四苷f(shuō)清楚怎么回事。如果閱讀網(wǎng)上關(guān)于機(jī)器學(xué)習(xí)的文章,你很可能會(huì)遇到兩種情況:充斥各種定理的厚重學(xué)術(shù)三部曲(我搞定半個(gè)定理都?jí)騿埽蚴顷P(guān)于人工智能、數(shù)據(jù)科學(xué)魔法以及未來(lái)工作的天花亂墜的故事。
我決定寫一篇醞釀已久的文章,對(duì)那些想了解機(jī)器學(xué)習(xí)的人做一個(gè)簡(jiǎn)單的介紹。不涉及高級(jí)原理,只用簡(jiǎn)單的語(yǔ)言來(lái)談現(xiàn)實(shí)世界的問(wèn)題和實(shí)際的解決方案。不管你是一名程序員還是管理者,都能看懂。那我們開(kāi)始吧!
為什么我們想要機(jī)器去學(xué)習(xí)?
現(xiàn)在出場(chǎng)的是Billy,Billy想買輛車,他想算出每月要存多少錢才付得起。瀏覽了網(wǎng)上的幾十個(gè)廣告之后,他了解到新車價(jià)格在2萬(wàn)美元左右,用過(guò)1年的二手車價(jià)格是1.9萬(wàn)美元,2年車就是1.8萬(wàn)美元,依此類推。
作為聰明的分析師,Billy發(fā)現(xiàn)一種規(guī)律:車的價(jià)格取決于車齡,每增加1年價(jià)格下降1000美元,但不會(huì)低于10000美元。
用機(jī)器學(xué)習(xí)的術(shù)語(yǔ)來(lái)說(shuō),Billy發(fā)明了“回歸”(regression)——基于已知的歷史數(shù)據(jù)預(yù)測(cè)了一個(gè)數(shù)值(價(jià)格)。當(dāng)人們?cè)噲D估算eBay上一部二手iPhone的合理價(jià)格或是計(jì)算一場(chǎng)燒烤聚會(huì)需要準(zhǔn)備多少肋排時(shí),他們一直在用類似Billy的方法——每人200g? 500?
是的,如果能有一個(gè)簡(jiǎn)單的公式來(lái)解決世界上所有的問(wèn)題就好了——尤其是對(duì)于燒烤派對(duì)來(lái)說(shuō)——不幸的是,這是不可能的。
讓我們回到買車的情形,現(xiàn)在的問(wèn)題是,除了車齡外,它們還有不同的生產(chǎn)日期、數(shù)十種配件、技術(shù)條件、季節(jié)性需求波動(dòng)……天知道還有哪些隱藏因素……普通人Billy沒(méi)法在計(jì)算價(jià)格的時(shí)候把這些數(shù)據(jù)都考慮進(jìn)去,換我也同樣搞不定。
人們又懶又笨——我們需要機(jī)器人來(lái)幫他們做數(shù)學(xué)。因此,這里我們采用計(jì)算機(jī)的方法——給機(jī)器提供一些數(shù)據(jù),讓它找出所有和價(jià)格有關(guān)的潛在規(guī)律。
終~于~見(jiàn)效啦。最令人興奮的是,相比于真人在頭腦中仔細(xì)分析所有的依賴因素,機(jī)器處理起來(lái)要好得多。
就這樣,機(jī)器學(xué)習(xí)誕生了。
機(jī)器學(xué)習(xí)的3個(gè)組成部分
拋開(kāi)所有和人工智能(AI)有關(guān)的扯淡成分,機(jī)器學(xué)習(xí)唯一的目標(biāo)是基于輸入的數(shù)據(jù)來(lái)預(yù)測(cè)結(jié)果,就這樣。所有的機(jī)器學(xué)習(xí)任務(wù)都可以用這種方式來(lái)表示,否則從一開(kāi)始它就不是個(gè)機(jī)器學(xué)習(xí)問(wèn)題。
樣本越是多樣化,越容易找到相關(guān)聯(lián)的模式以及預(yù)測(cè)出結(jié)果。因此,我們需要3個(gè)部分來(lái)訓(xùn)練機(jī)器:
(1)數(shù)據(jù)
想檢測(cè)垃圾郵件?獲取垃圾信息的樣本。想預(yù)測(cè)股票?找到歷史價(jià)格信息。想找出用戶偏好?分析他們?cè)贔acebook上的活動(dòng)記錄(不,Mark,停止收集數(shù)據(jù)~已經(jīng)夠了)。數(shù)據(jù)越多樣化,結(jié)果越好。對(duì)于拼命運(yùn)轉(zhuǎn)的機(jī)器而言,至少也得幾十萬(wàn)行數(shù)據(jù)才夠吧。
獲取數(shù)據(jù)有兩種主要途徑——手動(dòng)或者自動(dòng)。手動(dòng)采集的數(shù)據(jù)混雜的錯(cuò)誤少,但要耗費(fèi)更多的時(shí)間——通常花費(fèi)也更多。自動(dòng)化的方法相對(duì)便宜,你可以搜集一切能找到的數(shù)據(jù)(但愿數(shù)據(jù)質(zhì)量夠好)。
一些像Google這樣聰明的家伙利用自己的用戶來(lái)為他們免費(fèi)標(biāo)注數(shù)據(jù),還記得ReCaptcha(人機(jī)驗(yàn)證)強(qiáng)制你去“選擇所有的路標(biāo)”么?他們就是這樣獲取數(shù)據(jù)的,還是免費(fèi)勞動(dòng)!干得漂亮。如果我是他們,我會(huì)更頻繁地展示這些驗(yàn)證圖片,不過(guò),等等……
好的數(shù)據(jù)集真的很難獲取,它們是如此重要,以至于有的公司甚至可能開(kāi)放自己的算法,但很少公布數(shù)據(jù)集。
(2)特征
也可以稱為“參數(shù)”或者“變量”,比如汽車行駛公里數(shù)、用戶性別、股票價(jià)格、文檔中的詞頻等。換句話說(shuō),這些都是機(jī)器需要考慮的因素。如果數(shù)據(jù)是以表格的形式存儲(chǔ),特征就對(duì)應(yīng)著列名,這種情形比較簡(jiǎn)單。但如果是100GB的貓的圖片呢?我們不能把每個(gè)像素都當(dāng)做特征。這就是為什么選擇適當(dāng)?shù)奶卣魍ǔ1葯C(jī)器學(xué)習(xí)的其他步驟花更多時(shí)間的原因,特征選擇也是誤差的主要來(lái)源。人性中的主觀傾向,會(huì)讓人去選擇自己喜歡或者感覺(jué)“更重要”的特征——這是需要避免的。
(3)算法
最顯而易見(jiàn)的部分。任何問(wèn)題都可以用不同的方式解決。你選擇的方法會(huì)影響到最終模型的準(zhǔn)確性、性能以及大小。需要注意一點(diǎn):如果數(shù)據(jù)質(zhì)量差,即使采用最好的算法也無(wú)濟(jì)于事。這被稱為“垃圾進(jìn),垃圾出”(garbae in - garbage out,GIGO)。所以,在把大量心思花到正確率之前,應(yīng)該獲取更多的數(shù)據(jù)。
學(xué)習(xí) V.S. 智能
我曾經(jīng)在一些流行媒體網(wǎng)站上看到一篇題為“神經(jīng)網(wǎng)絡(luò)是否會(huì)取代機(jī)器學(xué)習(xí)?”的文章。這些媒體人總是莫名其妙地把線性回歸這樣的技術(shù)夸大為“人工智能”,就差稱之為“天網(wǎng)”了。下圖展示了幾個(gè)容易混淆的概念之間的關(guān)系。
“人工智能”是整個(gè)學(xué)科的名稱,類似于“生物學(xué)”或“化學(xué)”。
“機(jī)器學(xué)習(xí)”是“人工智能”的重要組成部分,但不是唯一的部分。
“神經(jīng)網(wǎng)絡(luò)”是機(jī)器學(xué)習(xí)的一種分支方法,這種方法很受歡迎,不過(guò)機(jī)器學(xué)習(xí)大家庭下還有其他分支。
“深度學(xué)習(xí)”是關(guān)于構(gòu)建、訓(xùn)練和使用神經(jīng)網(wǎng)絡(luò)的一種現(xiàn)代方法。本質(zhì)上來(lái)講,它是一種新的架構(gòu)。在當(dāng)前實(shí)踐中,沒(méi)人會(huì)將深度學(xué)習(xí)和“普通網(wǎng)絡(luò)”區(qū)分開(kāi)來(lái),使用它們時(shí)需要調(diào)用的庫(kù)也相同。為了不讓自己看起來(lái)像個(gè)傻瓜,你最好直接說(shuō)具體網(wǎng)絡(luò)類型,避免使用流行語(yǔ)。
一般原則是在同一水平上比較事物。這就是為什么“神經(jīng)網(wǎng)絡(luò)將取代機(jī)器學(xué)習(xí)”聽(tīng)起來(lái)就像“車輪將取代汽車”。親愛(ài)的媒體們,這會(huì)折損一大截你們的聲譽(yù)哦。機(jī)器能機(jī)器不能
預(yù)測(cè)創(chuàng)造新事物
記憶快速變聰明
復(fù)制超出任務(wù)范圍
選擇最優(yōu)項(xiàng)消滅全人類
機(jī)器學(xué)習(xí)世界的版圖
如果你懶得閱讀大段文字,下面這張圖有助于獲得一些認(rèn)識(shí)。
在機(jī)器學(xué)習(xí)的世界里,解決問(wèn)題的方法從來(lái)不是唯一的——記住這點(diǎn)很重要——因?yàn)槟憧倳?huì)發(fā)現(xiàn)好幾個(gè)算法都可以用來(lái)解決某個(gè)問(wèn)題,你需要從中選擇最適合的那個(gè)。當(dāng)然,所有的問(wèn)題都可以用“神經(jīng)網(wǎng)絡(luò)”來(lái)處理,但是背后承載算力的硬件成本誰(shuí)來(lái)負(fù)擔(dān)呢?
我們先從一些基礎(chǔ)的概述開(kāi)始。目前機(jī)器學(xué)習(xí)主要有4個(gè)方向。
Part 1:經(jīng)典機(jī)器學(xué)習(xí)算法
經(jīng)典機(jī)器學(xué)習(xí)算法源自1950年代的純統(tǒng)計(jì)學(xué)。統(tǒng)計(jì)學(xué)家們解決的是諸如尋找數(shù)字中的模式、估計(jì)數(shù)據(jù)點(diǎn)間的距離以及計(jì)算向量方向這樣的形式數(shù)學(xué)(formal math)問(wèn)題。
今天,一半的互聯(lián)網(wǎng)都在研究這些算法。當(dāng)你看到一列“繼續(xù)閱讀”的文章,或者在某個(gè)偏僻的加油站發(fā)現(xiàn)自己的銀行卡被鎖定而無(wú)法使用時(shí),很可能是其中的一個(gè)小家伙干的。
大型科技公司是神經(jīng)網(wǎng)絡(luò)的忠實(shí)擁躉。原因顯而易見(jiàn),對(duì)于這些大型企業(yè)而言,2%的準(zhǔn)確率提升意味著增加20億的收入。但是公司業(yè)務(wù)體量小時(shí),就沒(méi)那么重要了。我聽(tīng)說(shuō)有團(tuán)隊(duì)花了1年時(shí)間來(lái)為他們的電商網(wǎng)站開(kāi)發(fā)新的推薦算法,事后才發(fā)現(xiàn)網(wǎng)站上99%的流量都來(lái)自搜索引擎——他們搞出來(lái)的算法毫無(wú)用處,畢竟大部分用戶甚至都不會(huì)打開(kāi)主頁(yè)。
盡管經(jīng)典算法被廣泛使用,其實(shí)原理很簡(jiǎn)單,你可以很容易地解釋給一個(gè)蹣跚學(xué)步的孩子聽(tīng)。它們就像是基本的算術(shù)——我們每天都在用,甚至連想都不想。
1.1 有監(jiān)督學(xué)習(xí)
經(jīng)典機(jī)器學(xué)習(xí)通常分為兩類:有監(jiān)督學(xué)習(xí)(Supervised Learning)和無(wú)監(jiān)督學(xué)習(xí)(Unsupervised Learning)。
在“有監(jiān)督學(xué)習(xí)”中,有一個(gè)“監(jiān)督者”或者“老師”提供給機(jī)器所有的答案來(lái)輔助學(xué)習(xí),比如圖片中是貓還是狗。“老師”已經(jīng)完成數(shù)據(jù)集的劃分——標(biāo)注“貓”或“狗”,機(jī)器就使用這些示例數(shù)據(jù)來(lái)學(xué)習(xí),逐個(gè)學(xué)習(xí)區(qū)分貓或狗。
無(wú)監(jiān)督學(xué)習(xí)就意味著機(jī)器在一堆動(dòng)物圖片中獨(dú)自完成區(qū)分誰(shuí)是誰(shuí)的任務(wù)。數(shù)據(jù)沒(méi)有事先標(biāo)注,也沒(méi)有“老師”,機(jī)器要自行找出所有可能的模式。后文再討論這些。
很明顯,有“老師”在場(chǎng)時(shí),機(jī)器學(xué)的更快,因此現(xiàn)實(shí)生活中有監(jiān)督學(xué)習(xí)更常用到。
有監(jiān)督學(xué)習(xí)分為兩類:
分類(classification),預(yù)測(cè)一個(gè)對(duì)象所屬的類別;
回歸(regression),預(yù)測(cè)數(shù)軸上的一個(gè)特定點(diǎn);
分類(Classification)
“基于事先知道的一種屬性來(lái)對(duì)物體劃分類別,比如根據(jù)顏色來(lái)對(duì)襪子歸類,根據(jù)語(yǔ)言對(duì)文檔分類,根據(jù)風(fēng)格來(lái)劃分音樂(lè)。”
分類算法常用于:
過(guò)濾垃圾郵件;
語(yǔ)言檢測(cè);
查找相似文檔;
情感分析
識(shí)別手寫字母或數(shù)字
欺詐偵測(cè)
常用的算法:
樸素貝葉斯(Naive Bayes)
決策樹(shù)(Decision Tree)
Logistic回歸(Logistic Regression)
K近鄰(K-Nearest Neighbours)
支持向量機(jī)(Support Vector Machine)
機(jī)器學(xué)習(xí)主要解決“分類”問(wèn)題。這臺(tái)機(jī)器好比在學(xué)習(xí)對(duì)玩具分類的嬰兒一樣:這是“機(jī)器人”,這是“汽車”,這是“機(jī)器-車”……額,等下,錯(cuò)誤!錯(cuò)誤!
在分類任務(wù)中,你需要一名“老師”。數(shù)據(jù)需要事先標(biāo)注好,這樣機(jī)器才能基于這些標(biāo)簽來(lái)學(xué)會(huì)歸類。一切皆可分類——基于興趣對(duì)用戶分類,基于語(yǔ)言和主題對(duì)文章分類(這對(duì)搜索引擎很重要),基于類型對(duì)音樂(lè)分類(Spotify播放列表),你的郵件也不例外。
樸素貝葉斯算法廣泛應(yīng)用于垃圾郵件過(guò)濾。機(jī)器分別統(tǒng)計(jì)垃圾郵件和正常郵件中出現(xiàn)的“偉哥”等字樣出現(xiàn)的頻次,然后套用貝葉斯方程乘以各自的概率,再對(duì)結(jié)果求和——哈,機(jī)器就完成學(xué)習(xí)了。
后來(lái),垃圾郵件制造者學(xué)會(huì)了如何應(yīng)對(duì)貝葉斯過(guò)濾器——在郵件內(nèi)容后面添加很多“好”詞——這種方法被諷稱為“貝葉斯中毒”(Bayesian poisoning)。樸素貝葉斯作為最優(yōu)雅且是第一個(gè)實(shí)用的算法而載入歷史,不過(guò)現(xiàn)在有其他算法來(lái)處理垃圾郵件過(guò)濾問(wèn)題。
再舉一個(gè)分類算法的例子。
假如現(xiàn)在你需要借一筆錢,那銀行怎么知道你將來(lái)是否會(huì)還錢呢?沒(méi)法確定。但是銀行有很多歷史借款人的檔案,他們擁有諸如“年齡”、“受教育程度”、“職業(yè)”、“薪水”以及——最重要的——“是否還錢”這些數(shù)據(jù)。
利用這些數(shù)據(jù),我們可以訓(xùn)練機(jī)器找到其中的模式并得出答案。找出答案并不成問(wèn)題,問(wèn)題在于銀行不能盲目相信機(jī)器給出的答案。如果系統(tǒng)出現(xiàn)故障、遭遇黑客攻擊或者喝高了的畢業(yè)生剛給系統(tǒng)打了個(gè)應(yīng)急補(bǔ)丁,該怎么辦?
要處理這個(gè)問(wèn)題,我們需要用到?jīng)Q策樹(shù)(Decision Trees),所有數(shù)據(jù)自動(dòng)劃分為“是/否”式提問(wèn)——比如“借款人收入是否超過(guò)128.12美元?”——聽(tīng)起來(lái)有點(diǎn)反人類。不過(guò),機(jī)器生成這樣的問(wèn)題是為了在每個(gè)步驟中對(duì)數(shù)據(jù)進(jìn)行最優(yōu)劃分。
“樹(shù)”就是這樣產(chǎn)生的。分支越高(接近根節(jié)點(diǎn)),問(wèn)題的范圍就越廣。所有分析師都能接受這種做法并在事后給出解釋,即使他并不清楚算法是怎么回事,照樣可以很容易地解釋結(jié)果(典型的分析師啊)!決策樹(shù)廣泛應(yīng)用于高責(zé)任場(chǎng)景:診斷、醫(yī)藥以及金融領(lǐng)域。最廣為人知的兩種決策樹(shù)算法是 CART 和 C4.5.如今,很少用到純粹的決策樹(shù)算法。不過(guò),它們是大型系統(tǒng)的基石,決策樹(shù)集成之后的效果甚至比神經(jīng)網(wǎng)絡(luò)還要好。這個(gè)我們后面再說(shuō)。
當(dāng)你在Google上搜索時(shí),正是一堆笨拙的“樹(shù)”在幫你尋找答案。搜索引擎喜歡這類算法,因?yàn)樗鼈冞\(yùn)行速度夠快。
按理說(shuō),支持向量機(jī)(SVM) 應(yīng)該是最流行的分類方法。只要是存在的事物都可以用它來(lái)分類:對(duì)圖片中的植物按形狀歸類,對(duì)文檔按類別歸類等。SVM背后的思想很簡(jiǎn)單——它試圖在數(shù)據(jù)點(diǎn)之間繪制兩條線,并盡可能最大化兩條線之間的距離。如下圖示:
分類算法有一個(gè)非常有用的場(chǎng)景——異常檢測(cè)(anomaly detection),如果某個(gè)特征無(wú)法分配到所有類別上,我們就把它標(biāo)出來(lái)。現(xiàn)在這種方法已經(jīng)用于醫(yī)學(xué)領(lǐng)域——MRI(磁共振成像)中,計(jì)算機(jī)會(huì)標(biāo)記檢測(cè)范圍內(nèi)所有的可疑區(qū)域或者偏差。股票市場(chǎng)使用它來(lái)檢測(cè)交易人的異常行為以此來(lái)找到內(nèi)鬼。在訓(xùn)練計(jì)算機(jī)分辨哪些事物是正確時(shí),我們也自動(dòng)教會(huì)其識(shí)別哪些事物是錯(cuò)誤的。經(jīng)驗(yàn)法則(rule of thumb)表明,數(shù)據(jù)越復(fù)雜,算法就越復(fù)雜。對(duì)于文本、數(shù)字、表格這樣的數(shù)據(jù),我會(huì)選擇經(jīng)典方法來(lái)操作。這些模型較小,學(xué)習(xí)速度更快,工作流程也更清晰。對(duì)于圖片、視頻以及其他復(fù)雜的大數(shù)據(jù),我肯定會(huì)研究神經(jīng)網(wǎng)絡(luò)。
就在5年前,你還可以找到基于SVM的人臉?lè)诸惼鳌,F(xiàn)在,從數(shù)百個(gè)預(yù)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型中挑選一個(gè)模型反而更容易。不過(guò),垃圾郵件過(guò)濾器沒(méi)什么變化,它們還是用SVM編寫的,沒(méi)什么理由去改變它。甚至我的網(wǎng)站也是用基于SVM來(lái)過(guò)濾評(píng)論中的垃圾信息的。
回歸(Regression)
“畫(huà)一條線穿過(guò)這些點(diǎn),嗯~這就是機(jī)器學(xué)習(xí)”
回歸算法目前用于:
股票價(jià)格預(yù)測(cè)
供應(yīng)和銷售量分析
醫(yī)學(xué)診斷
計(jì)算時(shí)間序列相關(guān)性
常見(jiàn)的回歸算法有:
線性回歸(Linear Regression)
多項(xiàng)式回歸(Polynomial Regression)
“回歸”算法本質(zhì)上也是“分類”算法,只不過(guò)預(yù)測(cè)的是不是類別而是一個(gè)數(shù)值。比如根據(jù)行駛里程來(lái)預(yù)測(cè)車的價(jià)格,估算一天中不同時(shí)間的交通量,以及預(yù)測(cè)隨著公司發(fā)展供應(yīng)量的變化幅度等。處理和時(shí)間相關(guān)的任務(wù)時(shí),回歸算法可謂不二之選。
回歸算法備受金融或者分析行業(yè)從業(yè)人員青睞。它甚至成了Excel的內(nèi)置功能,整個(gè)過(guò)程十分順暢——機(jī)器只是簡(jiǎn)單地嘗試畫(huà)出一條代表平均相關(guān)的線。不過(guò),不同于一個(gè)拿著筆和白板的人,機(jī)器是通過(guò)計(jì)算每個(gè)點(diǎn)與線的平均間隔這樣的數(shù)學(xué)精確度來(lái)完成的這件事。
如果畫(huà)出來(lái)的是直線,那就是“線性回歸”,如果線是彎曲的,則是“多項(xiàng)式回歸”。它們是回歸的兩種主要類型。其他類型就比較少見(jiàn)了。不要被Logistics回歸這個(gè)“害群之馬”忽悠了,它是分類算法,不是回歸。
不過(guò),把“回歸”和“分類”搞混也沒(méi)關(guān)系。一些分類器調(diào)整參數(shù)后就變成回歸了。除了定義對(duì)象的類別外,還要記住對(duì)象有多么的接近該類別,這就引出了回歸問(wèn)題。
如果你想深入研究,可以閱讀文章《寫給人類的機(jī)器學(xué)習(xí)》[1](強(qiáng)烈推薦)。
1.2 無(wú)監(jiān)督學(xué)習(xí)
無(wú)監(jiān)督學(xué)習(xí)比有監(jiān)督學(xué)習(xí)出現(xiàn)得稍晚——在上世紀(jì)90年代,這類算法用的相對(duì)較少,有時(shí)候僅僅是因?yàn)闆](méi)得選才找上它們。
有標(biāo)注的數(shù)據(jù)是很奢侈的。假設(shè)現(xiàn)在我要?jiǎng)?chuàng)建一個(gè)——比如說(shuō)“公共汽車分類器”,那我是不是要親自去街上拍上幾百萬(wàn)張?jiān)撍赖墓财嚨恼掌缓筮€得把這些圖片一一標(biāo)注出來(lái)?沒(méi)門,這會(huì)花費(fèi)我畢生時(shí)間,我在Steam上還有很多游戲沒(méi)玩呢。
這種情況下還是要對(duì)資本主義抱一點(diǎn)希望,得益于社會(huì)眾包機(jī)制,我們可以得到數(shù)百萬(wàn)便宜的勞動(dòng)力和服務(wù)。比如Mechanical Turk[2],背后是一群隨時(shí)準(zhǔn)備為了獲得0.05美元報(bào)酬來(lái)幫你完成任務(wù)的人。事情通常就是這么搞定的。
或者,你可以嘗試使用無(wú)監(jiān)督學(xué)習(xí)。但是印象中,我不記得有什么關(guān)于它的最佳實(shí)踐。無(wú)監(jiān)督學(xué)習(xí)通常用于探索性數(shù)據(jù)分析(exploratory data analysis),而不是作為主要的算法。那些擁有牛津大學(xué)學(xué)位且經(jīng)過(guò)特殊訓(xùn)練的人給機(jī)器投喂了一大堆垃圾然后開(kāi)始觀察:有沒(méi)有聚類呢?沒(méi)有。可以看到一些聯(lián)系嗎?沒(méi)有。好吧,接下來(lái),你還是想從事數(shù)據(jù)科學(xué)工作的,對(duì)吧?
聚類(Clustering)
“機(jī)器會(huì)選擇最好的方式,基于一些未知的特征將事物區(qū)分開(kāi)來(lái)。”
聚類算法目前用于:
市場(chǎng)細(xì)分(顧客類型,忠誠(chéng)度)
合并地圖上鄰近的點(diǎn)
圖像壓縮
分析和標(biāo)注新的數(shù)據(jù)
檢測(cè)異常行為
常見(jiàn)算法:
K均值聚類
Mean-Shift
DBSCAN
聚類是在沒(méi)有事先標(biāo)注類別的前提下來(lái)進(jìn)行類別劃分。好比你記不住所有襪子的顏色時(shí)照樣可以對(duì)襪子進(jìn)行分類。聚類算法試圖找出相似的事物(基于某些特征),然后將它們聚集成簇。那些具有很多相似特征的對(duì)象聚在一起并劃分到同一個(gè)類別。有的算法甚至支持設(shè)定每個(gè)簇中數(shù)據(jù)點(diǎn)的確切數(shù)量。
這里有個(gè)示范聚類的好例子——在線地圖上的標(biāo)記。當(dāng)你尋找周圍的素食餐廳時(shí),聚類引擎將它們分組后用帶數(shù)字的氣泡展示出來(lái)。不這么做的話,瀏覽器會(huì)卡住——因?yàn)樗噲D將這個(gè)時(shí)尚都市里所有的300家素食餐廳繪制到地圖上。
Apple Photos和Google Photos用的是更復(fù)雜的聚類方式。通過(guò)搜索照片中的人臉來(lái)創(chuàng)建你朋友們的相冊(cè)。應(yīng)用程序并不知道你有多少朋友以及他們的長(zhǎng)相,但是仍可以從中找到共有的面部特征。這是很典型的聚類。
另一個(gè)常見(jiàn)的應(yīng)用場(chǎng)景是圖片壓縮。當(dāng)圖片保存為PNG格式時(shí),可以將色彩設(shè)置為32色。這就意味著聚類算法要找出所有的“紅色”像素,然后計(jì)算出“平均紅色”,再將這個(gè)均值賦給所有的紅色像素點(diǎn)上。顏色更少,文件更小——?jiǎng)澦悖〉牵龅街T如藍(lán)綠這樣的顏色時(shí)就麻煩了。這是綠色還是藍(lán)色?此時(shí)就需要K-Means算法出場(chǎng)啦。先隨機(jī)從色彩中選出32個(gè)色點(diǎn)作為“簇心”,剩余的點(diǎn)按照最近的簇心進(jìn)行標(biāo)記。這樣我們就得到了圍繞著32個(gè)色點(diǎn)的“星團(tuán)”。接著我們把簇心移動(dòng)到“星團(tuán)”的中心,然后重復(fù)上述步驟知道簇心不再移動(dòng)為止。
完工。剛好聚成32個(gè)穩(wěn)定的簇形。
給大家看一個(gè)現(xiàn)實(shí)生活中的例子:
尋找簇心這種方法很方便,不過(guò),現(xiàn)實(shí)中的簇并不總是圓形的。假如你是一名地質(zhì)學(xué)家,現(xiàn)在需要在地圖上找出一些類似的礦石。這種情形下,簇的形狀會(huì)很奇怪,甚至是嵌套的。甚至你都不知道會(huì)有多少個(gè)簇,10個(gè)?100個(gè)?
K-means算法在這里就派不上用場(chǎng)了,但是DBSCAN算法用得上。我們把數(shù)據(jù)點(diǎn)比作廣場(chǎng)上的人,找到任何相互靠近的3個(gè)人請(qǐng)他們手拉手。接下來(lái)告訴他們抓住能夠到的鄰居的手(整個(gè)過(guò)程人的站立位置不能動(dòng)),重復(fù)這個(gè)步驟,直到新的鄰居加入進(jìn)來(lái)。這樣我們就得到了第一個(gè)簇,重復(fù)上述過(guò)程直到每個(gè)人都被分配到簇,搞定。
一個(gè)意外收獲:一個(gè)沒(méi)有人牽手的人——異常數(shù)據(jù)點(diǎn)。
整個(gè)過(guò)程看起來(lái)很酷。
有興趣繼續(xù)了解下聚類算法?可以閱讀這篇文章《數(shù)學(xué)科學(xué)家需要知道的5種聚類算法》[3]。
就像分類算法一樣,聚類可以用來(lái)檢測(cè)異常。用戶登陸之后的有不正常的操作?讓機(jī)器暫時(shí)禁用他的賬戶,然后創(chuàng)建一個(gè)工單讓技術(shù)支持人員檢查下是什么情況。說(shuō)不定對(duì)方是個(gè)“機(jī)器人”。我們甚至不必知道“正常的行為”是什么樣,只需把用戶的行為數(shù)據(jù)傳給模型,讓機(jī)器來(lái)決定對(duì)方是否是個(gè)“典型的”用戶。這種方法雖然效果不如分類算法那樣好,但仍值得一試。
降維(Dimensionality Reduction)
“將特定的特征組裝成更高級(jí)的特征 ”
“降維”算法目前用于:
推薦系統(tǒng)
漂亮的可視化
主題建模和查找相似文檔
假圖識(shí)別
風(fēng)險(xiǎn)管理
常用的“降維”算法:
主成分分析(Principal Component Analysis ,PCA)
奇異值分解(Singular Value Decomposition ,SVD)
潛在狄里克雷特分配( Latent Dirichlet allocation, LDA)
潛在語(yǔ)義分析( Latent Semantic Analysis ,LSA, pLSA, GLSA),
t-SNE (用于可視化)
早年間,“硬核”的數(shù)據(jù)科學(xué)家會(huì)使用這些方法,他們決心在一大堆數(shù)字中發(fā)現(xiàn)“有趣的東西”。Excel圖表不起作用時(shí),他們迫使機(jī)器來(lái)做模式查找的工作。于是他們發(fā)明了降維或者特征學(xué)習(xí)的方法。
將2D數(shù)據(jù)投影到直線上(PCA)
對(duì)人們來(lái)說(shuō),相對(duì)于一大堆碎片化的特征,抽象化的概念更加方便。舉個(gè)例子,我們把擁有三角形的耳朵、長(zhǎng)長(zhǎng)的鼻子以及大尾巴的狗組合出“牧羊犬”這個(gè)抽象的概念。相比于特定的牧羊犬,我們的確丟失了一些信息,但是新的抽象概念對(duì)于需要命名和解釋的場(chǎng)景時(shí)更加有用。作為獎(jiǎng)勵(lì),這類“抽象的”模型學(xué)習(xí)速度更快,訓(xùn)練時(shí)用到的特征數(shù)量也更少,同時(shí)還減少了過(guò)擬合。
這些算法在“主題建模”的任務(wù)中能大顯身手。我們可以從特定的詞組中抽象出他們的含義。潛在語(yǔ)義分析(LSA)就是搞這個(gè)事情的,LSA基于在某個(gè)主題上你能看到的特定單詞的頻次。比如說(shuō),科技文章中出現(xiàn)的科技相關(guān)的詞匯肯定更多些,或者政治家的名字大多是在政治相關(guān)的新聞上出現(xiàn),諸如此類。
我們可以直接從所有文章的全部單詞中來(lái)創(chuàng)建聚類,但是這么做就會(huì)丟失所有重要的連接(比如,在不同的文章中battery 和 accumulator的含義是一樣的),LSA可以很好地處理這個(gè)問(wèn)題,所以才會(huì)被叫做“潛在語(yǔ)義”(latent semantic)。
因此,需要把單詞和文檔連接組合成一個(gè)特征,從而保持其中的潛在聯(lián)系——人們發(fā)現(xiàn)奇異值分解(SVD)能解決這個(gè)問(wèn)題。那些有用的主題簇很容易從聚在一起的詞組中看出來(lái)。
推薦系統(tǒng)和協(xié)同過(guò)濾是另一個(gè)高頻使用降維算法的領(lǐng)域。如果你用它從用戶的評(píng)分中提煉信息,你就會(huì)得到一個(gè)很棒的系統(tǒng)來(lái)推薦電影、音樂(lè)、游戲或者你想要的任何東西。
這里推薦一本我最愛(ài)的書(shū)《集體編程智慧》(Programming Collective Intelligence),它曾是我大學(xué)時(shí)代的枕邊書(shū)。
要完全理解這種機(jī)器上的抽象幾乎不可能,但可以留心觀察一些相關(guān)性:有些抽象概念和用戶年齡相關(guān)——小孩子玩“我的世界”或者觀看卡通節(jié)目更多,其他則可能和電影風(fēng)格或者用戶愛(ài)好有關(guān)。
僅僅基于用戶評(píng)分這樣的信息,機(jī)器就能找出這些高等級(jí)的概念,甚至不用去理解它們。干得漂亮,電腦先生。現(xiàn)在我們可以寫一篇關(guān)于“為什么大胡子的伐木工喜歡我的小馬駒”的論文了。
關(guān)聯(lián)規(guī)則學(xué)習(xí)(Association rule learning)
“在訂單流水中查找模式”
“關(guān)聯(lián)規(guī)則”目前用于:
預(yù)測(cè)銷售和折扣
分析“一起購(gòu)買”的商品
規(guī)劃商品陳列
分析網(wǎng)頁(yè)瀏覽模式
常用的算法:
Apriori
Euclat
FP-growth
用來(lái)分析購(gòu)物車、自動(dòng)化營(yíng)銷策略以及其他事件相關(guān)任務(wù)的算法都在這兒了。如果你想從某個(gè)物品序列中發(fā)現(xiàn)一些模式,試試它們吧。
比如說(shuō),一位顧客拿著一提六瓶裝的啤酒去收銀臺(tái)。我們應(yīng)該在結(jié)賬的路上擺放花生嗎?人們同時(shí)購(gòu)買啤酒和花生的頻次如何?是的,關(guān)聯(lián)規(guī)則很可能適用于啤酒和花生的情形,但是我們還可以用它來(lái)預(yù)測(cè)其他哪些序列? 能否做到在商品布局上的作出微小改變就能帶來(lái)利潤(rùn)的大幅增長(zhǎng)?
這個(gè)思路同樣適用電子商務(wù),那里的任務(wù)更加有趣——顧客下次要買什么?
不知道為啥規(guī)則學(xué)習(xí)在機(jī)器學(xué)習(xí)的范疇內(nèi)似乎很少提及。經(jīng)典方法是在對(duì)所有購(gòu)買的商品進(jìn)行正面檢查的基礎(chǔ)上套用樹(shù)或者集合方法。算法只能搜索模式,但沒(méi)法在新的例子上泛化或再現(xiàn)這些模式。
現(xiàn)實(shí)世界中,每個(gè)大型零售商都會(huì)建立了自己專屬的解決方案,所以這里不會(huì)為你帶來(lái)革命。本文提及的最高水平的技術(shù)就是推薦系統(tǒng)。不過(guò),我可能沒(méi)意識(shí)到這方面有什么突破。如果你有什么想分享的,請(qǐng)?jiān)谠u(píng)論中告訴我。
編輯:lyn
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6892瀏覽量
88828 -
算法
+關(guān)注
關(guān)注
23文章
4599瀏覽量
92643 -
人工智能
+關(guān)注
關(guān)注
1791文章
46859瀏覽量
237582 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8377瀏覽量
132410
原文標(biāo)題:機(jī)器學(xué)習(xí)的通俗講解
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論