無監督學習入門
- 2020 年 4 月 2 日
- 筆記
前言
時下火熱的無監督學習Yann LeCun也點贊過的無監督學習
當數據集沒有任何標籤時,該怎麼辦? 無監督學習是一組機器學習演算法和方法,這些演算法和方法處理這種「非基於事實」的數據。 這篇文章將介紹什麼是無監督學習,它與大多數機器學習有何不同,在實現過程中遇到的一些挑戰。
什麼是無監督學習
無監督機器學習不能直接應用於回歸模型,因為它不知道輸出值可能是什麼,因此不可能像通常那樣訓練模型。 可以這樣理解:當你在學校參加考試時,會有問題和答案;你的分數取決於你的答案與實際答案(或答案鍵)的接近程度。但是想像一下,如果沒有答案,只有問題。 你如何給自己打分? 現在把這個框架應用到機器學習中。傳統的機器學習任務中數據集有標籤(想想看:答案鍵,並遵循「X導致Y」的邏輯。例如:我們可能想弄清楚Twitter上粉絲多的人他(她)的工資是否更高。我們認為我們的輸入(Twitter關注者)可能會導致我們的輸出(工資),我們試圖近似這種關係是什麼。

unsupervised.png
星星代表數據點,機器學習演算法將擬合出一條直線來表達輸入和輸出的相關性。但是在無監督學習中,是沒有輸出數據的。我們只有輸入數據推特粉絲數,就好像考試沒有答案一樣。 那麼,無監督學習的目標到底是什麼呢?當我們只有沒有標籤的輸入數據時,我們該怎麼辦?
無監督學習的類別
- 聚類 任何企業都需要集中精力了解客戶:他們是誰,是什麼在驅動他們的購買決策?您通常會有不同的用戶組,這些用戶組可以根據幾個條件進行劃分。這些標準可以很簡單,比如年齡和性別,也可以很複雜,比如角色和購買流程。無監督學習可以幫助你自動完成這項任務。集群演算法將遍歷您的數據並找到這些自然集群(如果它們存在的話)。對你的客戶來說,這可能意味著一群30多歲的藝術家和另一群擁有狗的千禧一代。通常可以修改演算法查找的聚類數目,從而調整這些組的粒度。有幾種不同類型的聚類演算法你可以使用:
- k-means聚類:將您的數據點聚集成K個互斥集群。如何為K選擇正確的數字是很複雜的。
- Hierarchical聚類:將數據點聚集到父集群和子集群中。您可以將您的客戶劃分為更年輕和更年長的層級,然後在這些組中繼續劃分為各自的集群。
- probabilistic聚類:將您的數據點按概率規模聚集成集群。 任何集群演算法通常都會輸出所有數據點及其所屬的集群。由您來決定它們的含義,以及演算法究竟找到了什麼。與許多數據科學一樣,演算法也只能做這麼多:當人類與輸出交互並創造意義時,價值就產生了。
- 數據壓縮 即使過去十年在計算能力和存儲成本方面取得了重大進展,仍然有必要儘可能地保持數據集的小而高效。這意味著只在必要的數據上運行演算法,而不進行太多的訓練。無監督學習可以通過降維過程來幫助解決這個問題。 降維依賴於資訊理論:它假定大量的數據冗餘,而你最能代表一個數據集的資訊只有實際內容的一小部分。在實踐中,這意味著以獨特的方式組合部分數據來傳達意義。 有一些常用的演算法來降低維數:
- 主成分分析(PCA) -找出可以表示數據中大部分方差的線性組合。
- 奇異值分解(SVD)——將數據分解成另外三個更小的矩陣的乘積。 這些方法以及它們的一些更複雜的同類方法都依賴於線性代數中的概念,將一個矩陣分解成更易於理解和資訊的部分。 數據降維可能是良好的機器學習演算法流程中重要的組成部分。以電腦視覺這個新興領域的影像中心為例,如果您可以將訓練集的大小減少一個數量級,就可以顯著降低計算和存儲成本,同時使模型運行得更快。這就是為什麼在成熟的機器學習管道的預處理過程中,會使用PCA或SVD處理影像。
- 生成模型 生成模型是一類非監督學習模型,其中訓練數據是給定的,新樣本是從相同的分布中產生的。這些模型必須發現並有效地學習給定數據的本質,以嘗試生成類似的數據。這種模型的長期益處是它能夠自動學習給定數據的特徵。 生成模型的一個常見例子是影像數據集生成。給定一組影像,生成模型可以生成一組與給定影像相似的影像。
- 無監督深度學習 不出所料,無監督學習也被擴展到神經網路和深度學習。這一領域仍處於初級階段,但在無監督模式下深度學習的一個流行應用被稱為自動編碼器。

word-image-2.png
自動編碼器遵循與上述數據壓縮演算法相同的原理——使用更小的特性子集來表示原始數據。與神經網路類似,自動編碼器使用權重來嘗試將輸入值塑造成所需的輸出;但是這裡的巧妙之處在於輸出和輸入是一樣的!換句話說,自動編碼器試圖找出如何最好地表示我們的輸入數據本身,使用比原來更少的數據量。 自動編碼器已經被證明在諸如物體識別等電腦視覺應用中是有用的,並且正在被研究和擴展到音頻和語音等領域。
- 應用無監督學習中的挑戰 除了尋找合適的演算法和硬體等常規問題外,無監督學習還提出了一個獨特的挑戰:如何判斷你是否完成了任務。 在監督學習中,我們定義了調優決策的指標阿里驅動模型。像precision 和recall這樣的指標可以讓你知道你的模型有多精確,然後調整模型的參數來增加這些提高性能。 因為在無監督學習中沒有標籤,所以幾乎不可能得到一個合理的、客觀的關於你的演算法有多精確的度量。例如,在集群中,您如何知道K-Means是否找到了正確的集群?首先,您是否使用了正確數量的集群K? 「非監督學習對我有用嗎?」。這個問題完全取決於你的業務環境。在我們的客戶細分實踐案例中,只有當您的客戶分組正確時,集群才能很好地工作。測試你的非監督學習模型的最好(但也是最危險的)方法之一就是在現實世界中實現它,然後看看會發生什麼!設計一個A/B測試——有或沒有輸出的演算法集群——可以是一種有效的方式來查看它是否是有用的資訊或完全錯誤的。
參考文獻:
-Introduction to Unsupervised Learning
