探索推薦引擎內部的祕密,第 3 部分: 深刻推薦引擎相關算法 - 聚類

轉自:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy3/index.htmlhtml

智能推薦大都基於海量數據的計算和處理,然而咱們發如今海量數據上高效的運行協同過濾算法以及其餘推薦策略這樣高複雜的算法是有很大的挑戰的,在面對解決這個問題的過程當中,你們提出了不少減小計算量的方法,而聚類無疑是其中最優的選擇之一。 聚類 (Clustering) 是一個數據挖掘的經典問題,它的目的是將數據分爲多個簇 (Cluster),在同一個簇中的對象之間有較高的類似度,而不一樣簇的對象差異較大。聚類被普遍的應用於數據處理和統計分析領域。Apache Mahout 是 ASF(Apache Software Foundation) 的一個較新的開源項目,它源於 Lucene,構建在 Hadoop 之上,關注海量數據上的機器學習經典算法的高效實現。本文主要介紹如何基於 Apache Mahout 實現高效的聚類算法,從而實現更高效的數據處理和分析的應用。web

聚類分析

什麼是聚類分析?

聚類 (Clustering) 就是將數據對象分組成爲多個類或者簇 (Cluster),它的目標是:在同一個簇中的對象之間具備較高的類似度,而不一樣簇中的對象差異較大。因此,在不少應用中,一個簇中的數據對象能夠被做爲一個總體來對待,從而減小計算量或者提升計算質量。算法

其實聚類是一我的們平常生活的常見行爲,即所謂「物以類聚,人以羣分」,核心的思想也就是聚類。人們老是不斷地改進下意識中的聚類模式來學習如何區分各個事物和人。同時,聚類分析已經普遍的應用在許多應用中,包括模式識別,數據分析,圖像處理以及市場研究。經過聚類,人們能意識到密集和稀疏的區域,發現全局的分佈模式,以及數據屬性之間的有趣的相互關係。機器學習

聚類同時也在 Web 應用中起到愈來愈重要的做用。最被普遍使用的既是對 Web 上的文檔進行分類,組織信息的發佈,給用戶一個有效分類的內容瀏覽系統(門戶網站),同時能夠加入時間因素,進而發現各個類內容的信息發展,最近被你們關注的主題和話題,或者分析一段時間內人們對什麼樣的內容比較感興趣,這些有趣的應用都得創建在聚類的基礎之上。做爲一個數據挖掘的功能,聚類分析能做爲獨立的工具來得到數據分佈的狀況,觀察每一個簇的特色,集中對特定的某些簇作進一步的分析,此外,聚類分析還能夠做爲其餘算法的預處理步驟,簡化計算量,提升分析效率,這也是咱們在這裏介紹聚類分析的目的。工具

不一樣的聚類問題

對於一個聚類問題,要挑選最適合最高效的算法必須對要解決的聚類問題自己進行剖析,下面咱們就從幾個側面分析一下聚類問題的需求。oop

聚類結果是排他的仍是可重疊的學習

爲了很好理解這個問題,咱們以一個例子進行分析,假設你的聚類問題須要獲得二個簇:「喜歡詹姆斯卡梅隆電影的用戶」和「不喜歡詹姆斯卡梅隆的用戶」,這實際上是一個排他的聚類問題,對於一個用戶,他要麼屬於「喜歡」的簇,要麼屬於不喜歡的簇。但若是你的聚類問題是「喜歡詹姆斯卡梅隆電影的用戶」和「喜歡里奧納多電影的用戶」,那麼這個聚類問題就是一個可重疊的問題,一個用戶他能夠既喜歡詹姆斯卡梅隆又喜歡里奧納多。網站

因此這個問題的核心是,對於一個元素,他是否能夠屬於聚類結果中的多個簇中,若是是,則是一個可重疊的聚類問題,若是否,那麼是一個排他的聚類問題。htm

基於層次仍是基於劃分對象

其實大部分人想到的聚類問題都是「劃分」問題,就是拿到一組對象,按照必定的原則將它們分紅不一樣的組,這是典型的劃分聚類問題。但除了基於劃分的聚類,還有一種在平常生活中也很常見的類型,就是基於層次的聚類問題,它的聚類結果是將這些對象分等級,在頂層將對象進行大體的分組,隨後每一組再被進一步的細分,也許全部路徑最終都要到達一個單獨實例,這是一種「自頂向下」的層次聚類解決方法,對應的,也有「自底向上」的。其實能夠簡單的理解,「自頂向下」就是一步步的細化分組,而「自底向上」就是一步步的歸併分組。

簇數目固定的仍是無限制的聚類

這個屬性很好理解,就是你的聚類問題是在執行聚類算法前已經肯定聚類的結果應該獲得多少簇,仍是根據數據自己的特徵,由聚類算法選擇合適的簇的數目。

基於距離仍是基於機率分佈模型

在本系列的第二篇介紹協同過濾的文章中,咱們已經詳細介紹了類似性和距離的概念。基於距離的聚類問題應該很好理解,就是將距離近的類似的對象聚在一塊兒。相比起來,基於機率分佈模型的,可能不太好理解,那麼下面給個簡單的例子。

一個機率分佈模型能夠理解是在 N 維空間的一組點的分佈,而它們的分佈每每符合必定的特徵,好比組成一個特定的形狀。基於機率分佈模型的聚類問題,就是在一組對象中,找到能符合特定分佈模型的點的集合,他們不必定是距離最近的或者最類似的,而是能完美的呈現出機率分佈模型所描述的模型。

下面圖 1 給出了一個例子,對一樣一組點集,應用不一樣的聚類策略,獲得徹底不一樣的聚類結果。左側給出的結果是基於距離的,核心的原則就是將距離近的點聚在一塊兒,右側給出的基於機率分佈模型的聚類結果,這裏採用的機率分佈模型是必定弧度的橢圓。圖中專門標出了兩個紅色的點,這兩點的距離很近,在基於距離的聚類中,將他們聚在一個類中,但基於機率分佈模型的聚類則將它們分在不一樣的類中,只是爲了知足特定的機率分佈模型(固然這裏我特地舉了一個比較極端的例子)。因此咱們能夠看出,在基於機率分佈模型的聚類方法裏,核心是模型的定義,不一樣的模型可能致使徹底不一樣的聚類結果。

圖 1 基於距離和基於機率分佈模型的聚類問題

圖 1 基於距離和基於機率分佈模型的聚類問題

相關文章
相關標籤/搜索