1. 程式人生 > >MLlib中的K-means演算法(一)

MLlib中的K-means演算法(一)

MLlib是Spark提供的一個實現了很多常用機器學習演算法的工具包。
Mahout比較成熟並且演算法豐富,但是執行速度慢。
下面將主要對機器學習中的聚類K-means演算法進行介紹。

K-means演算法

一種無監督學習演算法,是一種經典的聚類演算法,它的思想是對大量未知標註的資料集,按資料的內在相似度將資料集劃分為多個簇,使得簇內資料相似度大而簇間相似度小,一般通過歐式距離度量資料間的相似度,相似度高的距離近。
應用:廣告推薦、使用者推薦
現實應用中,資料特點:多維度、大規模、多種資料格式。
1、相似度計算方法
歐式距離(兩點之間的直線距離)、餘弦距離(兩點間的夾角)等
2、優點


簡答,快速。
處理大規模資料集具有較高的可伸縮性和高效率。
擅長處理密集資料
3、缺陷
K值的選取以及聚類中心點的選取,大都需要人為選取,依靠經驗,對聚類結果有很大的影響。
對噪聲和孤立點資料較為敏感
**K-means++**克服了K-means演算法的一部分缺陷,按照最大最小距離演算法進行聚類中心點的選取,可確定所選取的初始中心點較為分散。
4、MLlib中的K-means演算法
1、建立SparkContext
2、載入資料,並將其轉換為Vector
3、給定K值和迭代次數,並指定選取初始中心點的模式(通常為隨機選取)
4、輸出當前的聚類中心以及誤差平方和
5、預測測試集的資料的類別
6、關閉SparkContext