1. 程式人生 > >有監督學習與無監督學習

有監督學習與無監督學習

機器學習的常用方法,主要分為有監督學習(supervised learning)和無監督學習(unsupervised learning)。簡單的歸納就是,是否有監督(supervised),就看輸入資料是否有標籤(label)。輸入資料有標籤,則為有監督學習;沒標籤則為無監督學習。

有監督學習

監督學習是指資料集的正確輸出已知情況下的一類學習演算法。因為輸入和輸出已知,意味著輸入和輸出之間有一個關係,監督學習演算法就是要發現和總結這種“關係”。

監督演算法常見的有:

  • 線性迴歸
  • 神經網路
  • 決策樹
  • 支援向量機
  • KNN
  • 樸素貝葉斯演算法

無監督學習

無監督學習是指對無標籤資料的一類學習演算法。因為沒有標籤資訊,意味著需要從資料集中發現和總結模式或者結構。

我們基於資料中的變數之間關係利用聚類演算法發現這種內在模式或者結構。

無監督演算法有:

  • 主成分分析法(PCA)
  • 異常檢測法
  • 自編碼演算法
  • 深度信念網路
  • 赫比學習法
  • 生成式對抗網路
  • 自組織對映網路

半監督學習

有監督和無監督中間包含的一種學習演算法是半監督學習(semi-supervised learning)。對於半監督學習,其訓練資料的一部分是有標籤的,另一部分沒有標籤,而沒標籤資料的數量常常極大於有標籤資料數量(這也是符合現實情況的)。隱藏在半監督學習下的基本規律在於:資料的分佈必然不是完全隨機的,通過一些有標籤資料的區域性特徵,以及更多沒標籤資料的整體分佈,就可以得到可以接受甚至是非常好的分類結果

關係歸納為:

有監督學習(分類,迴歸)\Rightarrow半監督學習(分類,迴歸)\Rightarrow半監督聚類(有標籤資料的標籤不是確定的,類似於:肯定不是xxx,很可能是yyy)\Rightarrow無監督學習(聚類)

有監督和無監督的對比

對比一 : 有標籤 vs 無標籤

有監督機器學習又被稱為“有老師的學習”,所謂的老師就是標籤。有監督的過程為先通過已知的訓練樣本(如已知輸入和對應的輸出)來訓練,從而得到一個最優模型,再將這個模型應用在新的資料上,對映為輸出結果。再經過這樣的過程後,模型就有了預知能力。

而無監督機器學習被稱為“沒有老師的學習”,無監督相比於有監督,沒有訓練的過程,而是直接拿資料進行建模分析,意味著這些都是要通過機器學習自行學習探索。這聽起來似乎有點不可思議,但是在我們自身認識世界的過程中也會用到無監督學習。比如我們去參觀一個畫展,我們對藝術一無所知,但是欣賞完多幅作品之後,我們也能把它們分成不同的派別。比如哪些更朦朧一點,哪些更寫實一些。即使我們不知道什麼叫做朦朧派和寫實派,但是至少我們能把他們分為兩個類。

對比二 : 分類 vs 聚類

有監督機器學習的核心是分類,無監督機器學習的核心是聚類(將資料集合分成由類似的物件組成的多個類)。有監督的工作是選擇分類器和確定權值,無監督的工作是密度估計(尋找描述資料統計值),這意味著無監督演算法只要知道如何計算相似度就可以開始工作。

對比三 : 同維 vs 降維

有監督的輸入如果是n維,特徵即被認定為n維,也即y=f(xi)或p(y|xi), i =n,通常不具有降維的能力。而無監督經常要參與深度學習,做特徵提取,或者乾脆採用層聚類或者項聚類,以減少資料特徵的維度,使i<n。事實上,無監督學習常常被用於資料預處理。一般而言,這意味著以某種平均-保留的方式壓縮資料,比如主成分分析(PCA)或奇異值分解(SVD),之後,這些資料可被用於深度神經網路或其它監督式學習演算法。

對比四 :分類同時定性 vs 先聚類後定性
有監督的輸出結果,也就是分好類的結果會被直接貼上標籤,是好還是壞。也即分類分好了,標籤也同時貼好了。類似於中藥鋪的藥匣,藥劑師採購回來一批藥材,需要做的只是把對應的每一顆藥材放進貼著標籤的藥匣中。

無監督的結果只是一群一群的聚類,就像被混在一起的多種中藥,一個外行要處理這堆藥材,能做的只有把看上去一樣的藥材挑出來聚成很多個小堆。如果要進一步識別這些小堆,就需要一個老中醫(類比老師)的指導了。因此,無監督屬於先聚類後定性,有點類似於批處理。

對比五 :獨立 vs 非獨立

李航在其著作《統計學習方法》(清華大學出版社)中闡述了一個觀點:對於不同的場景,正負樣本的分佈可能會存在偏移(可能是大的偏移,也可能偏移比較小)。好比我們手動對資料做標註作為訓練樣本,並把樣本畫在特徵空間中,發現線性非常好,然而在分類面,總有一些混淆的資料樣本。對這種現象的一個解釋是,不管訓練樣本(有監督),還是待分類的資料(無監督),並不是所有資料都是相互獨立分佈的。或者說,資料和資料的分佈之間存在聯絡。作為訓練樣本,大的偏移很可能會給分類器帶來很大的噪聲,而對於無監督,情況就會好很多。可見,獨立分佈資料更適合有監督,非獨立資料更適合無監督。

對比六 : 不透明 vs 可解釋性

由於有監督演算法最後輸出的一個結果,或者說標籤。yes or no,一定是會有一個傾向。但是,如果你想探究為什麼這樣,有監督會告訴你:因為我們給每個欄位乘以了一個引數列[w1, w2, w3...wn]。你繼續追問:為什麼是這個引數列?為什麼第一個欄位乘以了0.01而不是0.02?有監督會告訴你:這是我自己學習計算的!然後,就拒絕再回答你的任何問題。是的,有監督演算法的分類原因是不具有可解釋性的,或者說,是不透明的,因為這些規則都是通過人為建模得出,及其並不能自行產生規則。所以,對於像反洗錢這種需要明確規則的場景,就很難應用。而無監督的聚類方式通常是有很好的解釋性的,你問無監督,為什麼把他們分成一類?無監督會告訴你,他們有多少特徵有多少的一致性,所以才被聚成一組。你恍然大悟,原來如此!於是,進一步可以講這個特徵組總結成規則。如此這般分析,聚類原因便昭然若揭了。

對比七 :DataVisor無監督獨有的拓展性

試想這樣一個n維模型,產出結果已經非常好,這時又增加了一維資料,變成了n+1維。那麼,如果這是一個非常強的特徵,足以將原來的分類或者聚類打散,一切可能需要從頭再來,尤其是有監督,權重值幾乎會全部改變。而DataVisor開發的無監督演算法,具有極強的擴充套件性,無論多加的這一維資料的權重有多高,都不影響原來的結果輸出,原來的成果仍然可以保留,只需要對多增加的這一維資料做一次處理即可。

如何選擇有監督和無監督

瞭解以上對比後,我們在做資料分析時,就可以高效地做選擇了。首先,我們檢視現有的資料情況。假如在標籤和訓練資料都沒有的情況下,毫無疑問無監督是最佳選項。但其實對資料瞭解得越充分,模型的建立就會越準確,學習需要的時間就會越短。我們主要應該瞭解資料的以下特性: 特徵值是離散型變數還是連續型變數;特徵值中是否存在缺失的值;何種原因造成缺失值;資料中是否存在異常值;某個特徵發生的頻率如何。

其次,資料條件是否可改善?在實際應用中,有些時候即使我們沒有現成的訓練樣本,我們也能夠憑藉自己的雙眼,從待分類的資料中人工標註一些樣本,這樣就可以把條件改善,從而用於有監督學習。當然不得不說,有些資料的表達會非常隱蔽,也就是我們手頭的資訊不是抽象的形式,而是具體的一大堆數字,這樣我們很難人工對它們進行分類。舉個例子,在bag - of - words 模型中,我們採用k-means演算法進行聚類,從而對資料投影。在這種情況下,我們之所以採用k-means,就是因為我們只有一大堆資料,而且是很高維的,若想通過人工把他們分成50類是十分困難的。想象一下,一個熊孩子把50個1000塊的拼圖混在了一起,你還能夠再把這50000個凌亂的小方塊區分開嗎?所以說遇到這種情況也只能選用無監督學習了。

最後,看樣本是否獨立分佈。對於有訓練樣本的情況,看起來採用有監督總是比採用無監督好。但有監督學習就像是探索懸崖時的一個安全繩,有著一定的指導作用。就像是即使班級裡的第一名,也非常需要標準答案來獲得肯定,對吧?做完題對一下答案,總覺得會更安心一點。但對於非獨立分佈的資料,由於其資料可能存在內在的未知聯絡,因而存在某些偏移量,這個時候假如追求單一的“標準答案”反而會錯失其資料背後隱藏關聯。就像是做數學題,往往還有標準答案以外的其他解法。而在反欺詐的場景中,這些隱藏關聯往往包含著一個未知地欺詐團伙活動。所以在反欺詐領域中無監督機器學習能實現更準確和廣泛的欺詐檢測。

參考網址

什麼是無監督學習?