原作:Justin Gage
虛無之慄 編譯自 Algorithmia
量子位 出品 | 公眾號 QbitAI
如果你的一大坨資料
沒
。
有
。
標
。
籤
,怎麼辦?
無監督學習
是機器學習演算法裡非常撲朔迷離的一個類別,負責解決這些“沒有真實值 (no-ground-truth) ”的資料。
本文會講到,無監督學習到底是什麼,和機器學習的其他演算法有何
本質區別
,用的時候有哪些難點,以及推薦閱讀的傳送門。
無監督學習是什麼?
最簡單的理解方式,就是把演算法想象成
考試
。卷子上的
每道題對應一個答案
,得分高低就要看你的答案和標準答案有多接近。不過,如果沒有答案只有問題,你要怎麼給自己打分?
把這一套東西挪到機器學習上來。傳統的資料集都有
標籤
(相當於標答) ,邏輯是“
X導致Y
”。比如,我們想要知道,推特上粉絲更多的人,是不是收入也更高。那麼,input是粉絲數,output是收入,要試著找出兩組資料之間的關係。
每顆星是一個數據點,機器學習就是要畫出差不多能連起那些點的一條線,以此解釋input和output之間的關係。但在無監督學習裡,
並沒有output這個東西
。
我們要做的是分析input,也就是粉絲數。但沒有收入,或者Y。就像是考試只有題,沒有標答一樣。
其實,也不一定是沒有Y,可能我們只是沒有辦法獲得收入資料。不過這都不要緊,重要的是
不需要畫出X和Y之間的那條線
了,
不需要找它們之間的關係
了。
那麼,無監督學習的
目標
是什麼?如果只有input沒有output,我們到底該怎麼辦?
無監督學習分幾種
聚類(Clustering)
任何行業都需要對使用者的理解:他們是誰?是什麼促使他們做出購買的決定?
通常,使用者可以按照某些標準
分為幾組
。這些標準可簡單如年齡如性別,也可複雜如使用者畫像、如購買流程。無監督學習可以幫我們
自動
完成這個任務。
聚類演算法會跑過我們的資料,然後找出幾個
自然聚類
(Natural Clusters) 。以使用者為例,一組可能是30多歲的藝術家,另一組可能是家裡養狗的千萬富翁。我們可以自己
選擇聚類的數量
,這樣就能調整各個組別的
粒度
(Granularity) 。
有以下幾種聚類方法可以選用:
· K-Means聚類
,把所有資料點劃分到K個互斥組別裡。複雜之處在於如何
選取K的大小
。
· 層次聚類
(Hierarchical Clustering) ,把所有資料點劃分到一些組別、和它們的
子組別
裡,形成像族譜一樣的
樹狀圖
。比如,先把使用者按年齡分組,然後把各個組別按照其他標準再細分。
· 機率聚類
(Probabilistic Clustering) ,把所有資料點按照
機率
來分組。
K-Means
其實就是它的一種特殊形式,即機率永遠為
0或1
的情況。所以這種聚類方式,也被親切地稱為“模糊的K-Means”。
這幾種並無本質區別的方法,寫成程式碼可能就長這樣——
任何聚類演算法的output,都會是所有的
資料點
、以及它們所對應的
組別
。這就需要我們自己來判斷,output代表怎樣的含義,或是演算法到底發現了什麼。資料科學的魅力即在於,
output加上人類的解讀
,便會產生價值。
資料壓縮 (Data Compression)
在過去的十年間,裝置的計算能力和儲存能力都增強了許多。不過,即便在今天我們依然有理由,
讓資料集儘可能小、並儘可能高效
。這意味著,只要讓演算法去跑一些必要的資料,而不要做過多的訓練。
無監督學習可以用一種名為
資料降維
(Dimentionality Reduction) 的方式做到這一點。
資料降維的“
維
”,就是指資料集有多少列。這個方法背後的概念和資訊理論 (Information Theory) 一樣:假設資料集中的
許多資料都是冗餘
的,所以只要取出一部分,就可以表示整個資料集的情況了。
在實際應用中,我們需要用某種神秘的方式,把資料集裡的某些部分結合到一起,來傳達某些意義。這裡有我們比較常用的
兩種降維方式
——
· 主成分分析演算法
(PCA) ,找出能夠把資料集裡的大多數變化聯絡起來的
線性組合
。
· 奇異值分解
(SVD) ,把資料的矩陣分解成
三個小矩陣
。
這兩種方法,以及另外一些更復雜的降維方式,都用了
線性代數
的概念,把矩陣分解成容易消化的樣子,便於傳遞資訊。
資料降維可以在機器學習演算法裡,起到非常重要的作用。以
影象
為例,在計算機視覺裡,
一幅影象就是一個巨大的資料集
,訓練起來也很費力。而如果可以縮小訓練用的資料集,模型就可以跑得更快了。這也是為什麼,PCA和SVD都影象預處理時常見的工具。
無監督深度學習
無監督學習,把領地擴張到了神經網路和深度學習裡,這一點也不奇怪。這個領域還很年輕,不過已經有了
自編碼器
(Autoencoder) 這樣的先行者。
自編碼器和資料壓縮演算法背後的邏輯差不多,用一個子集來反映原始資料集的特徵。像神經網路一樣,自編碼器利用
權重
把input轉換成理想的output。不過在這裡,output和input並不是兩種不同的東西,output只是input的一種更輕便的表示方式。
在計算機視覺中,自編碼器被用在
影象識別
演算法裡。現在,它也已經把觸角伸向聲音和語音識別等更多的領域。
實戰難點有哪些?
除了尋找合適的演算法和硬體,這樣常見的問題之外,無監督學習自帶一種神秘的氣質——
不知道任務到底完成了沒有
。
在監督學習裡,我們會定下一套
標準
,以做出模型除錯的決策。精確度 (Precision) 和查全率 (Recall) 這樣的指標會告訴我們,現在的模型有多準確,然後我們可以調整引數來最佳化模型。分數低,就要繼續調。
可是,無監督學習的資料沒有標籤,我們就很難有理有據地定下那套衡量標準。以聚類為例,怎麼知道K-Means的分類好不好 (比如K值取的合不合適) ?沒有標準了,我們可能就需要有點創造力。
“無監督學習在我這裡管用麼?”是人們經常提出的問題。這裡,具體問題要具體分析。還以使用者分組為例,只有當你的使用者真的和
自然聚類
相匹配的時候,聚類的方法才有效。
雖然有些風險,但最好的測試方法,可能就是把無監督模型放到
現實世界
裡,看看會發生什麼——讓有聚類的和沒有聚類的演算法做
對比
,看聚類能不能得出更有效的資訊。
當然,研究人員也在嘗試編寫,自帶 (相對) 客觀評判標準的無監督學習演算法。那麼,栗子在哪裡?
友好的傳送門:
https://
blog。algorithmia。com/in
troduction-to-unsupervised-learning/
下拉至
Reading and Papers
,栗子可能要從那裡開始吃。
△ 祝您消化順暢
—
完
—
歡迎大家關注我們的專欄:
量子位 - 知乎專欄
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。
量子位 QbitAI
· 頭條號簽約作者
վ‘ᴗ’ ի 追蹤AI技術和產品新動