此處並不會列舉每一種聚類(clustering)演算法,因為學術界clustering演算法如果真要細分,還真有很多變種。此處只會介紹幾種在我近幾年網際網路工作生涯中實際碰到的具體問題, 以及如何使用clustering演算法解決這些問題。
一般來說,我們可以將clustering認為是將出現的資料進行data segmentation,也就是經常說的哲理: 物以類聚。 從機器學習的觀點來看, clustering算是unsupervised learning,或者叫做learning by observation,根據觀察到的情況進行clustering。 因為形成簇的資料都被聚到一起,所以clustering 方法也可以用來發現噪音或是異常點。
clustering 演算法大致可以分為以下幾類(參見data mining concepts and techniques):
partitioning methods:這是一類經典的,最簡單的聚類方式,就是直接按照類內的點距離最近,類間距離足夠遠的原則進行資料clustering。該類方法比較經典的方法有k-means 和k-medoids。下文中會以廣告分段問題來具體介紹k-means的實現(k-medoids類似)
hierachical methods:層次clustering演算法,又大致分為bottom-up和top-down兩種思路,bottom-up為自底向上,逐漸合併離得比較近的類以形成更大的類,top-down為一種divisive的思路,逐漸對離得比較遠的類進行**。下文中會以如何合併搜尋引擎中的同意,近義詞詞形成簇的的方式具體介紹bottom-up hierachical methods。
density-based methods:以上兩種方法基本上都是在高維空間中將資料聚成球形的多個類的方法,卻不能處理非球形的聚類,density-based methods就是解決非球形資料的聚類方法。
model-based methods:對資料進行建模,之後使用觀察到的資料預估模型引數,比較經典的使用em方法,先假設資料服從某種分布(例如k個高斯分布),並且這k個高斯分布由一系列隱隨機變數決定。之後在e步預估這些隱隨機變數,而在m步固定這些隱隨機變數後,使用最大似然估計迭代得到最優引數。
文章以下內容將介紹3種聚類方法解決3個問題:
使用k-means方法對廣告受眾網民進行data segmentation。
使用bottom up hierachical clustering方法對搜尋引擎query進行聚類以進行流量推薦。
使用em方式尋找資料中的隱藏主體。
使用k-means方法對廣告受眾網民進行data segmentation
k-means是一種球形的聚類,在二維空間中,類別會被聚成以圓心為中心的圓,三維空間中則會被聚成以球心為中心的球狀簇(當然,這與選擇的相似度度量有關,例如使用cosine計算歸一化後的兩個向量長度,就會變成計算二向量的夾角)
在k-means演算法執行前,有兩個因素比較重要: 資料預處理和距離度量方法。具體距離度量參見博文相似度度量 ,資料預處理則包括資料歸一化, 去除噪音等操作。
因為k-means演算法本身較為簡單,此處直接給出andrew ng機器學習公開課教案中的偽**:
其中uj為第j個簇的中心點,ci為第i條資料的簇類別。基本步驟就是遍歷資料,每一輪迭代,先計算當前資料與哪個類中心最近,該條資料屬於距離最近的簇,之後根據新計算出來的每條資料的類別,更新類中心。下圖給出在指定資料上給出2個類的4輪迭代情況:
使用distortion function度量分類的好壞情況, distortion 越小越好,當然,一般distortion大小需要和類別 k 的數量間進行權衡。
右側即為msn展示廣告。當然,該方法已經是2023年所使用的方法,現在相信ms已經使用更精準的方法了 。
該過程中嘗試較多的是如何選擇合適的類別數量k值,以及如何初始化初始類中心。當時迫於專案進度,k值最後根據經驗並進行了粗略的搜尋選擇,初始類中心則使用在相同k值得情況下進行多次隨機初始化clustering
使用bottom up hierachical clustering方法對搜尋引擎query進行聚類以進行流量推薦
例如:訓龍記國語 訓龍記2 尋龍記 訓龍記博克島的騎手 馴龍記電影
罵人大全 罵人不帶髒字的順口溜 罵人帶髒字越毒越好 罵人髒字的狠話
要設計層次聚類,就需要考慮一下幾個因素及環節:
使用何種聚類演算法: top-down 還是bottom-up 還是其他clusting的合併策略使用哪些特徵如何度量距離使用何種評估標準對效果進行評估
確定以上5個因素後,聚類演算法也就確定了。
聚類演算法:考慮到實現的複雜度, 一開始我們就確定使用bottom-up的方式作為聚類策略;後續也就沒有嘗試top-down的方式。
clusting的合併策略:
一般有兩類合併策略: 選取最相近的兩個clustering進行合併;求連通分量。 因為尋找相近cluster的方式, 時間複雜度會達到o(n^2), 所以最後決定使用連通分量。
特徵: 我們使用字面特徵及query在session中的共現特徵; 例如, 對字面進行切詞後的term(做適當過濾降維:idf太小則過濾)
距離函式, 嘗試過cosine和jaccard後, 最終使用jaccard作為距離度量。
也可關注微博: weibo.com
或是直接訪問:
網際網路及其應用
網際網路以tcp ip進行資料通訊,是建立在一組共同協議之上的網路裝置和線路的物理集合,實現資料交換和資源共享 網際網路網路系統由網路硬體和網路軟體組成。網路硬體包括 伺服器,工作站,網絡卡,通訊介質。網路軟體包括 網路協議和協議軟體 網路通訊軟體和網路作業系統 網際網路的網路體系結構是一種高度結構...
網際網路最近技術應用1 網際網路電視
網路電視 ntv,network television 是以寬頻網路為載體,以視音訊多 為形式,以互動個性化為特性,為所有寬頻終端使用者提供全方位有償服務的業務。網路電視是在數位化和網路化背景下產生,是網際網路絡技術與電視技術結合的產物,在整合電視與網路兩大傳播媒介過程中,網路電視既保留了電視形象直...
網際網路與網際網路的區別
網際網路的英文單詞是 internet,網際網路的英文單詞是 internet。在英語中,專有名詞首字母都是大寫,用於特指某一事物。大寫的 internet 是作為乙個專有名詞出現的,所指的是由阿帕網發展而來的現如今全球最大的計算機網路,稱之為網際網路。小寫 internet 是作為乙個普通單詞出現...