1. 程式人生 > >原型聚類之學習向量量化及Python實現

原型聚類之學習向量量化及Python實現

學習向量量化(Learning Vector Quantization)

學習向量量化(Learning Vector Quantization,簡稱LVQ)屬於原型聚類,即試圖找到一組原型向量來聚類,每個原型向量代表一個簇,將空間劃分為若干個簇,從而對於任意的樣本,可以將它劃入到它距離最近的簇中,不同的是LVQ假設資料樣本帶有類別標記,因此可以利用這些類別標記來輔助聚類。
學習向量量化演算法如下 ( 摘自於周志華《機器學習》)

輸入:樣本集D={(x1,y1),(x2,y2),...,(xm,ym)}
   原型向量個數

q,各原型向量預設的類別標記{t1,t2,...,tq}
   學習率η(0,1)

過程:
1. 初始化一組原型向量{p1,p2,...,pq}
2. repeat
3.  從樣本集中隨機選擇樣本(xj,yj) ;
4.  計算樣本xjpj(1ip)的距離:dji=xjpi2;
5.  找出與xj距離最近的原型向量pi,i=argmini{1,2,...,q}dj

i
6.  if yj=ti then
7.   p=pi+η(xjpi)
8.  else
9.   p=piη(xjpi)
10. end if
11.  將原型向量pi更新為p
12. until 滿足停止條件
輸出:原型向量