無監督學習(Unsupervised Learning)
聚類無監督學習
特點
- 只給出了樣本, 但是沒有提供標簽
- 通過無監督學習算法給出的樣本分成幾個族(cluster), 分出來的類別不是我們自己規定的, 而是無監督學習算法自己計算出來的
K-means 聚類算法
規定
- \(c^{(i)}\): 表示\(x^{(i)}\)屬於哪個cluster, 如\(x^{(1)}\)屬於\(c^{(1)}\)簇, 如果\(c^{(1)}=1\), 則\(x^{(1)}\)划分在第1個類別
- \(\mu_k\): 表示第k簇的聚類中心樣本點
- \(\mu_{c^{(i)}}\): 表示樣本\(x^{(i)}\)所在的聚類\(c^{(i)}\)的聚類中心
- \(m\): 樣本的數量
- \(n\): 特征的數量
步驟
- 從現有的樣本中調出K個樣本作為聚類中心(采用隨機初始化的方式選擇樣本)
- 計算其余樣本分別到這K個樣本的歐拉距離
- 某個樣本距離這K個聚類中心的哪個最近, 就把這個樣本歸為那個類別, 以此類推, 將所有的樣本進行歸類
- 在已經分好類的基礎上, 計算出每一個類別的均值(中心), 再重復2和3步驟, 知道損失函數達到最優點(可能僅僅是達到了局部最優點(local optima), K-means算法最終聚類的結果與第1步中K的隨機初始化的值后很大的關系, 因為在結束了K-means算法之后我們應該重復1-4步多次, 得到損失函數最小), 結束K-means算法
- 注意: K值的選擇需要人工調整
理性的認識
- 在K-means中主要就是要\(min_{c^{(i)},\mu^{(j)}}J(c^{(1)},c^{(2)},...,c^{(m)},\mu^{(1)},\mu^{(2)},...,\mu^{(k)})\)
- 隨機初始化K, K要小於m
- 在for循環中一個一個的取出樣本計算出所有樣本到最近的中心的距離, 保證J最小
- 在另外一個for循環中取出中心點, 移動中心點
- 重復1-3步驟
如何選擇K的值
- elbow method: 畫出K與J的圖像, 找出凸出點, 那個就是期望的K值
- 根據實際需求划分
