本週主要講的是聚類和降維。
聚類
聚類是一種無監督的學習,應用實例有把一堆文章按主題分類,將T恤的尺寸分成幾類,例如SML號等。這裏講的是K-Means。
K-Means其實原理很簡單,主要是三步:
- 初始化K類的初始中心點。
- 計算每一個樣本點到K中心點的距離,找出最小的距離,就定這個點爲第k類。
- 計算每一類所有樣本的均值點,更新中心點。
- 重複2.3.直到算法收斂。
所以其實K-Means的優化目標就是:
其中2.3步分別優化的是J wrt 和J wrt
第一個好理解,就是固定了 ,然後找每個點距離最近的 。然而第二個可能不是那麼直觀,其實主要是對於N個點來說,如果希望優化 ,那麼就要找到他們的平均點。
這一點稍稍補充一下,給一個解析解:
假設 是某個點, 是N個固定點,這個固定點按照列向量排列。那麼其實:
那麼就是:
用矩陣的跡的相關導數性質:
那麼:
這樣第二步其實就是對 的優化。
方法二直接對上邊那個求導數,就是 所以
另外有幾點:
1. 初始化的時候,最好隨機選取幾個樣本點,這樣也能快點收斂。
2. 如果類別比較少,比方說3~5類,可能容易收斂到局部最優,那麼就多試幾次,然後取cost最小就可以了。
3. 如何選取K呢?其實有一個elbow定理,就是對K=1,2,3.。。計算cost,會發現cost出現一個elbow的拐點。這個時候就取拐點就好了。但是有的時候可能沒有拐點,那麼可以從商業價值的方向考慮,例如衣服分幾個尺寸比較好?這個就是商業問題了。
PCA
PCA用來降維。
也就是將各個樣本向量往樣本子空間進行投影,儘量往方差大的地方投。直觀上是這麼表述,數學上就是:
這個優化問題的解析解就是對樣本特徵的協方差矩陣進行奇異值分解。
不過首先還是得對樣本的各個特徵做一個歸一化處理,否則會比較不公平,本來一些特徵的方差相對較大,但是由於絕對數量小,導致無法作爲主分量。
也就是 ,然後 , 是前k個特徵向量組成的P的子矩陣。
然後如果想投影回去,就是 是 的逆矩陣,也就是 的轉置矩陣的前k個向量然後再轉置的。具體爲啥就不描述了,線性代數的內容。
說幾個要點,