有監督學習雖然高效、應用范圍廣,但最大的問題就是需要大量的有標簽的數據集,但現實生活中我們遇到的大量數據都是沒有明確標簽的,而且對於龐大的數據集進行標注工作本身也是一項費時費力的工作模式,所以我們希望找到一種方法能自動的挖掘數據集中各變量的關系,然后"總結"出一些規律和特征進行分類,這樣的方法我們成為無監督學習(Unsupervised learning)。
在無標簽的數據集中進行分類的方法成為聚類。顧名思義,聚類就是依照某種算法將相似的樣本聚在一起形成一類,而不管它的標簽是什么。在聚類中我們把物體所聚到的集合成為"簇"(cluster)。目前常用的無監督學習方法有K均值聚類、基於密度聚類、主成分分析法、等等,其中K均值聚類是常用的經典方法,而主成分分析法是經典的數據降維方法,我們本節着重介紹一下K均值聚類和主成分分析法。
K均值聚類
在K均值(K-means)聚類中,K代表了簇的數量,也就是分類個數。均值是該算法聚類的核心思想。K均值算法是以簇內最小均方誤差來作為損失函數,假設我們將樣本集分為K個簇,第i個簇記為,則損失函數可被寫為:
其中為簇
內的平均值,這也是K均值算法中均值所代表的的意義。這個損失函數刻畫了簇內樣本圍繞均值
的緊密程度,也就是簇內樣本的相似程度。K均值算法聚類流程如下:
-
在樣本集中隨機選取K個樣本點作為均值的初始值
-
計算每個樣本和每個均值點之間的距離
-
將樣本划入距離最近的均值點所在的簇
-
根據簇內樣本更新每個均值點。
-
重復步驟2-4
-
得到K個簇。
下面我們依然用一個例子對K均值算法的聚類過程進行說明。我們分別圍繞坐標平面內的點和
點各生成100個具有標准差為1的高斯白噪聲的樣本,如圖12左上角的圖所示。我們用K均值算法對這個樣本集進行聚類,理想情況下K均值算法能僅通過這些樣本找到我們的初始樣本中心點
和
。對樣本集進行四輪迭代,每次迭代的聚類情況如圖12所示。
圖12 K均值算法迭代更新過程
圖12中每個簇的均值點用灰色方塊表示,可以看到,盡管一開始初始狀態時兩個均值點是隨機選取的,但隨着迭代的進行,最終這兩個均值點會移動到一個最佳位置使這兩個簇盡量遠,這個例子中當進行了4次迭代后兩個簇的均值點的坐標分別是和
,可以看出已經非常接近我們生成樣本時所用的中心點
和
,說明聚類效果非常好。
當然,上面例子我們用的是K=2的情況,也就是將數據集分為了兩類,但現實中有很多問題我們事先並不知道有幾類,那么我們可以嘗試不同K值,得到一個滿意的效果。圖13展示了對上面提到的樣本集進行K=2,K=3,K=4的K均值聚類。
圖13 不同K的取值下K均值聚類效果