**在這裡
聚類通俗的講,即所謂「物以類聚,人以群分」。聚類 (clustering) 是乙個資料探勘的經典問題,它的目的是將資料分為多個簇 (cluster),在同乙個簇中的物件之間有較高的相似度,而不同簇的物件差別較大。
簡單,非常簡單!!!!
聚類是非監督版的『分類』,把相近的資料劃分成多個簇,乙個簇內的所有資料相關性很好。
在推薦系統的初期,使用者檢視的公寓資訊很少,協同過濾演算法施展不出身手,聚類演算法可以在協同過濾演算法之前做預處理,適當擴大使用者有效操作,提高協同過濾演算法的效果。
同時,在某些方面,聚類演算法縮小的計算範圍,只計算相關簇內的資訊即可,很好的減少的計算量,提高了演算法的效率。
k均值(k-means)演算法是簡單的聚類演算法,同時也是最基礎,使用最為廣泛的聚類演算法。
k均值聚類演算法首先會隨機確定k個中心位置(位於空間中代表聚類中心的點),然後將各個資料項分配給最臨近的中心點。待分配完成之後,聚類中心就會移到分配給該聚類的所有節點的平均位置處,然後整個分配過程重新開始。這一過程會一直重複下去,直到分配過程不再產生變化為止。下圖是包含兩個聚類的k-均值聚類過程:
k均值演算法有2個難題?
1,k是多少?2,k的值分別是多少?
一般情況下k是需要人來確定的,不同的產品,不同經驗的人員,給的值是不一樣的。
k點的值初始都是隨機的,每次都不一樣,聚成的簇也就不一樣。
用另一種聚類演算法canopy
canopy演算法主要是給k均值演算法做資料預處理的,就是要找到比較理想的簇的個數及簇的初始點位置。
圖中有乙個t1,乙個t2,我們稱之為距離閥值,顯然t1>t2,這兩個值有什麼用呢?我們先確定了乙個中心,然後計算其他點到這個中心間的距離,當距離大於t1時,小於t1大於t2時,小於t2時,對這個點的處理都是不一樣的。
while d is not empty
select element d from d to initialize canopy c
remove d from d
loop through remaining elements in d
if distance between d_i and c < t1 : add element to the canopy c
if distance between d_i and c < t2 : remove element from d
endadd canopy c to the list of canopies c
endd指代一組資料,d_i表示d中的各個資料。
是不是還不夠明白?下面用中文進行說明:
1:給我一組存放在陣列裡面的資料d
2:給我兩個距離閾值t1,t2,且t1>t2
3:隨機取d中的乙個資料d作為中心,並將d從d中移除
4:計算d中所有點到d的距離distance
5:將所有distance具體實現請看/cluster.py
canopy演算法**從網上摘錄,kmeans演算法**來自《機器學習實戰》中第10章的**。
canopy演算法的結果每次也不一樣,但都差距都很少。為了更公平的選出k,7次canopy演算法,減去最大值和最小值,剩下的和平均數最接近的那個值就是k的值。
k勻值演算法計算時間較長,所以最好是把計算結果儲存下來,以後隨時可以使用。
推薦系統實戰 出租公寓專案8 推薦系統評估
前面說了那麼多,推薦系統的冷啟動,協同過濾演算法,聚類演算法,關聯規則,混合演算法,那現在問題出來了,我用哪種演算法來寫我自己的公寓出租推薦系統呢?一是憑經驗,二,所有演算法都測試一遍,看哪個效果好!效果好的標準是什麼?就是馬上要說的推薦系統的評估,指標。當然,ab test也有缺點,週期比較長,必...
推薦系統實戰 出租公寓專案2 冷啟動
github 產品的形式,決定了解決問題的方法。微博新使用者註冊的時候,會問你對哪些領域感興趣 就是在得到你的興趣愛好,還建議關注一些大v,也是乙個意思。推薦系統實踐 特意拿出一章來說推薦系統冷啟動問題,裡面講的很好了,有必要看一看。具體到 出租公寓專案 怎麼來做呢?可以參考58同城的做法。我們可以...
基於大資料技術推薦系統演算法案例實戰教程
基於大資料技術推薦系統演算法案例實戰教程 密碼 vrvf 網際網路行業是大資料應用最前沿的陣地,目前主流的大資料技術,包括 hadoop,spark等,全部來自於一線網際網路公司。隨著電子商務規模的不斷擴大,顧客需要花費大量的時間才能找到自己想買的商品。這種瀏覽大量無關的資訊和產品過程無疑會使淹沒在...