全能電路設計實戰

2018年2月12日 星期一

KNN演算法



監督式學習是透過資料訓練(training)出一個model 但是在KNN其實並沒有做training的動作

最近鄰居法KNN演算法,又譯K-近鄰演算法

KNN屬於機器學習中的監督式學習(Supervised learning)



K=3 時, 鄰居有3人, 新加入的綠色應為 紅色三角形 那一群



尚未分類的資料,我們要怎麼將他分類呢?這邊就是非監督式學習(Unsupervised learning)中的K-Means



K-means主要講的就是「物以類聚」

K-means是一個分群(Clustering)的演算法,不需要有預先標記好的資料(unlabeled data),屬於非監督式學習(Unsupervised learning)。主要是用來做常常被使用在資料分群,簡單的說就是把一堆資料根據你判斷相近的邏輯,把這一堆資料分成k群。

用比較數學(
嚇人)的說法就是,追求各個群組內部的均方誤差總和最小。
argmini=1kxjSi||Xjμi||2
(x1,x2,x3...,xn)
S=S1,S2,,Sk, S為分割的群組集合
μi是群組Si內所有元素xj的重心,或叫中心點。
下面這個圖是一個資料根據不同K所分群出來的結果,顏色只是提供辨識分群用。


  1. 先決定K
    k就是最後要分成幾群,如果你希望最後資料分成 3群 ,k就是3。
  2. 在你的資料中,隨機選擇k個點做為群中心(也可以直接從資料挑)。
  3. 把每一筆資料標記上離它最近的群中心
  4. 根據同一個標記的所有資料,重新計算出群中心。
  5. 如果步驟4算出來的群中心跟原本步驟3不同,則重複步驟3

沒有留言 :

張貼留言