无监督学习的魅力
轉(zhuǎn)載自?無監(jiān)督學(xué)習(xí)的魅力
如果你的一大坨數(shù)據(jù)沒。有。標。簽,怎么辦?
無監(jiān)督學(xué)習(xí)是機器學(xué)習(xí)算法里非常撲朔迷離的一個類別,負責解決這些“沒有真實值 (no-ground-truth) ”的數(shù)據(jù)。
本文會講到,無監(jiān)督學(xué)習(xí)到底是什么,和機器學(xué)習(xí)的其他算法有何本質(zhì)區(qū)別,用的時候有哪些難點,以及推薦閱讀的傳送門。
1無監(jiān)督學(xué)習(xí)是什么?
最簡單的理解方式,就是把算法想象成考試。卷子上的每道題對應(yīng)一個答案,得分高低就要看你的答案和標準答案有多接近。不過,如果沒有答案只有問題,你要怎么給自己打分?
把這一套東西挪到機器學(xué)習(xí)上來。傳統(tǒng)的數(shù)據(jù)集都有標簽?(相當于標答) ,邏輯是“X導(dǎo)致Y”。
比如,我們想要知道,推特上粉絲更多的人,是不是收入也更高。那么,input是粉絲數(shù),output是收入,要試著找出兩組數(shù)據(jù)之間的關(guān)系。
每顆星是一個數(shù)據(jù)點,機器學(xué)習(xí)就是要畫出差不多能連起那些點的一條線,以此解釋input和output之間的關(guān)系。但在無監(jiān)督學(xué)習(xí)里,并沒有output這個東西。
我們要做的是分析input,也就是粉絲數(shù)。但沒有收入,或者Y。就像是考試只有題,沒有標答一樣。
其實,也不一定是沒有Y,可能我們只是沒有辦法獲得收入數(shù)據(jù)。不過這都不要緊,重要的是不需要畫出X和Y之間的那條線了,不需要找它們之間的關(guān)系了。
那么,無監(jiān)督學(xué)習(xí)的目標是什么?如果只有input沒有output,我們到底該怎么辦?
2無監(jiān)督學(xué)習(xí)分幾種
聚類(Clustering)
任何行業(yè)都需要對用戶的理解:他們是誰?是什么促使他們做出購買的決定?
通常,用戶可以按照某些標準分為幾組。這些標準可簡單如年齡如性別,也可復(fù)雜如用戶畫像、如購買流程。無監(jiān)督學(xué)習(xí)可以幫我們自動完成這個任務(wù)。
聚類算法會跑過我們的數(shù)據(jù),然后找出幾個自然聚類?(Natural Clusters) 。
以用戶為例,一組可能是30多歲的藝術(shù)家,另一組可能是家里養(yǎng)狗的千萬富翁。我們可以自己選擇聚類的數(shù)量,這樣就能調(diào)整各個組別的粒度?(Granularity) 。
有以下幾種聚類方法可以選用:
·?K-Means聚類,把所有數(shù)據(jù)點劃分到K個互斥組別里。復(fù)雜之處在于如何選取K的大小。
·?層次聚類?(Hierarchical Clustering) ,把所有數(shù)據(jù)點劃分到一些組別、和它們的子組別里,形成像族譜一樣的樹狀圖。比如,先把用戶按年齡分組,然后把各個組別按照其他標準再細分。
·?概率聚類?(Probabilistic Clustering) ,把所有數(shù)據(jù)點按照概率來分組。K-Means其實就是它的一種特殊形式,即概率永遠為0或1的情況。所以這種聚類方式,也被親切地稱為“模糊的K-Means”。
這幾種并無本質(zhì)區(qū)別的方法,寫成代碼可能就長這樣——
任何聚類算法的output,都會是所有的數(shù)據(jù)點、以及它們所對應(yīng)的組別。這就需要我們自己來判斷,output代表怎樣的含義,或是算法到底發(fā)現(xiàn)了什么。
數(shù)據(jù)科學(xué)的魅力即在于,output加上人類的解讀,便會產(chǎn)生價值。
數(shù)據(jù)壓縮 (Data Compression)
在過去的十年間,設(shè)備的計算能力和存儲能力都增強了許多。不過,即便在今天我們依然有理由,讓數(shù)據(jù)集盡可能小、并盡可能高效。這意味著,只要讓算法去跑一些必要的數(shù)據(jù),而不要做過多的訓(xùn)練。
無監(jiān)督學(xué)習(xí)可以用一種名為數(shù)據(jù)降維?(Dimentionality Reduction) 的方式做到這一點。
數(shù)據(jù)降維的“維”,就是指數(shù)據(jù)集有多少列。這個方法背后的概念和信息論 (Information Theory) 一樣:假設(shè)數(shù)據(jù)集中的許多數(shù)據(jù)都是冗余的,所以只要取出一部分,就可以表示整個數(shù)據(jù)集的情況了。
在實際應(yīng)用中,我們需要用某種神秘的方式,把數(shù)據(jù)集里的某些部分結(jié)合到一起,來傳達某些意義。這里有我們比較常用的兩種降維方式——
·?主成分分析算法?(PCA) ,找出能夠把數(shù)據(jù)集里的大多數(shù)變化聯(lián)系起來的線性組合。
·?奇異值分解?(SVD) ,把數(shù)據(jù)的矩陣分解成三個小矩陣。
這兩種方法,以及另外一些更復(fù)雜的降維方式,都用了線性代數(shù)的概念,把矩陣分解成容易消化的樣子,便于傳遞信息。
數(shù)據(jù)降維可以在機器學(xué)習(xí)算法里,起到非常重要的作用。
以圖像為例,在計算機視覺里,一幅圖像就是一個巨大的數(shù)據(jù)集,訓(xùn)練起來也很費力。而如果可以縮小訓(xùn)練用的數(shù)據(jù)集,模型就可以跑得更快了。這也是為什么,PCA和SVD都圖像預(yù)處理時常見的工具。
無監(jiān)督深度學(xué)習(xí)
無監(jiān)督學(xué)習(xí),把領(lǐng)地擴張到了神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)里,這一點也不奇怪。這個領(lǐng)域還很年輕,不過已經(jīng)有了自編碼器?(Autoencoder) 這樣的先行者。
自編碼器和數(shù)據(jù)壓縮算法背后的邏輯差不多,用一個子集來反映原始數(shù)據(jù)集的特征。
像神經(jīng)網(wǎng)絡(luò)一樣,自編碼器利用權(quán)重把input轉(zhuǎn)換成理想的output。不過在這里,output和input并不是兩種不同的東西,output只是input的一種更輕便的表示方式。
在計算機視覺中,自編碼器被用在圖像識別算法里。現(xiàn)在,它也已經(jīng)把觸角伸向聲音和語音識別等更多的領(lǐng)域。
3實戰(zhàn)難點有哪些
除了尋找合適的算法和硬件,這樣常見的問題之外,無監(jiān)督學(xué)習(xí)自帶一種神秘的氣質(zhì)——不知道任務(wù)到底完成了沒有。
在監(jiān)督學(xué)習(xí)里,我們會定下一套標準,以做出模型調(diào)試的決策。精確度 (Precision) 和查全率 (Recall) 這樣的指標會告訴我們,現(xiàn)在的模型有多準確,然后我們可以調(diào)整參數(shù)來優(yōu)化模型。分數(shù)低,就要繼續(xù)調(diào)。
可是,無監(jiān)督學(xué)習(xí)的數(shù)據(jù)沒有標簽,我們就很難有理有據(jù)地定下那套衡量標準。以聚類為例,怎么知道K-Means的分類好不好 (比如K值取的合不合適) ?沒有標準了,我們可能就需要有點創(chuàng)造力。
“無監(jiān)督學(xué)習(xí)在我這里管用么?”是人們經(jīng)常提出的問題。這里,具體問題要具體分析。還以用戶分組為例,只有當你的用戶真的和自然聚類相匹配的時候,聚類的方法才有效。
雖然有些風險,但最好的測試方法,可能就是把無監(jiān)督模型放到現(xiàn)實世界里,看看會發(fā)生什么——讓有聚類的和沒有聚類的算法做對比,看聚類能不能得出更有效的信息。
當然,研究人員也在嘗試編寫,自帶 (相對) 客觀評判標準的無監(jiān)督學(xué)習(xí)算法。那么,栗子在哪里?
友好的傳送門:
https://blog.algorithmia.com/introduction-to-unsupervised-learning/
下拉至Reading and Papers,栗子可能要從那里開始吃。
△?祝您消化順暢
總結(jié)
- 上一篇: Spring 整合 Quartz 分布式
- 下一篇: 跳跃表(Skip list)原理与jav