機器學習入門|聚類(一)

聚類算法是在沒有給定標籤和樣本值的前提下進行數據劃分,是典型的無監督學習(unsupervised learning)算法。聚類試圖將數據集中的樣本劃分紅若干個不相交的子集,稱爲「簇」,或「類」。一個好的樣本劃分確定是簇內的樣本類似度高,而簇與簇之間的樣本類似度低。html

基於原型的聚類

簇是對象的集合,其中每一個對象到定義該簇的原型的距離比其餘簇的原型距離更近,例如在下面的k-means算法中,原型就是簇的質心。算法

1.k-means算法

k-means算法把數據集劃分爲k個簇,劃分依據是簇的每個樣本點到質心(均值)的最小化平方偏差和,即歐氏距離。歐氏距離越小,則表明這一個簇的緊密程度越大,簇內的樣本類似度越高。函數

給定樣本集D={x1,x2,...,xm}D={x1,x2,...,xm},k-means算法獲得的簇劃分C={C1,C2,...,Ck}C={C1,C2,...,Ck}最小化平方偏差學習

 

E=∑i=1k∑x∈Ci||x−μi||22E=∑i=1k∑x∈Ci||x−μi||22優化

 

其中μi=1|Ci|∑x∈Cixμi=1|Ci|∑x∈Cix 爲簇CiCi的均值向量
但直接求解歐氏距離最小值並不容易,所以採用迭代求解的方法。阿里雲

我有幾張阿里雲幸運券分享給你,用券購買或者升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,立刻就要搶光了。spa

1.首先隨機選取k個質心,遍歷每個樣本點,把樣本點納入距它最近的質心所表明的簇中。 
2.從新計算質心位置,即當前簇中的樣本點的均值。 
3.重複以上兩步,直到算法收斂(更新再也不產生劃分變更),或者達到中止條件。htm

k值須要預先指定,而不少狀況下k值難以肯定,這是k-means的一個缺陷。對象

k-means的迭代過程本質上是座標上升的過程。k-means是一定會收斂的,可是和梯度降低同樣,只能保證收斂到局部最優,而不能保證收斂到到全局最優。所以初始質心的選擇對算法的結果影響十分巨大。get

座標上升法每次經過更新函數中的一維,把其餘維的參數當作常量,迭代直到當前維度收斂,再經過屢次的迭代計算其餘維度以達到優化函數的目的。

由於k-means算法是求均方偏差,所以對於一些誤差較大的噪聲點很是敏感,所以在k-means基礎上能夠作適當優化。

K-medoids算法就是一種優化算法,它和k-means惟一不一樣之處是:k-medoids算法用類中最靠近中心的一個樣本點來表明該聚類,而k-means算法用質心來表明聚類。能夠減小噪聲點帶來的影響。

二分K均值法也是一種優化算法,二分K均值法初始時將全部點當作一個簇,在簇的數量小於K的時候進行迭代,算法的核心是選擇一個簇一分爲二,這裏一分爲二的方法仍是K均值法,只不過K變成了2。二分K均值依次計算每一個簇一分爲二後新的總平方偏差,選擇劃分後整體平方偏差最小的簇進行劃分。這樣就儘量避免了k-means落入局部最優的狀況。

2.學習向量量化(Learning Vector Quantization)

學習向量量化(LVQ)也是試圖找到一組原型來刻畫聚類結構,但與k-means不一樣的是,LVQ的樣本帶有類別標記。

給定樣本集D={(x1,y1),(x2,y2),...,(xm,ym)}D={(x1,y1),(x2,y2),...,(xm,ym)},每一個樣本xjxj是一個n維向量,yjyj是類別標記,LVQ的目標是學得一組n維原型量{p1,p2,...,pq}{p1,p2,...,pq},每個原型向量表明一個簇的原型。原型向量的簇標記爲ti∈γti∈γ 一樣,LVQ也是採用迭代求解的方法。

相關文章
相關標籤/搜索