1. 機器學習基本概念
1.1 什么是機器學習
機器學習(Machine Learning)是一種基本數據的學習,是人工智能(AI, artificial intelligence) 領域中與算法相關的一個子領域,它允許計算不斷地根據一定的模型進行學習。通常來說, 這相當于將一組數據(通常說樣本)傳遞給算法,并由算法推斷出與這些數據屬性相關的一 些信息—借助這些信息,算法就能夠預測出未來可能會出現的其他數據。這種預測是完全有可能的,因為幾乎所有的隨機數當中,都包含一些這樣或那樣的模式(規律),這些模式的 存在使機器能夠據此進行歸納。為了實現歸納,機器會利用它所認定的出現于數據中的重要特征對數據進行“訓練”,并借此得到一個模型。這個過程就叫機器學習的過程,機器學習的一般流程如下圖1所示。
目前,機器學習已經滲入到多個領域,包括用戶分類、網頁聚類分類、廣告點擊率預測、精 準營銷等。其中,精準營銷是目前使用較廣泛的領域,它能夠幫助商家較準確地推斷出用戶 需求及喜好,及時作出精準的推銷方案。在精準營銷模型中,通常使用聚類算法將用戶進行分類,k-means 是較常用的分類算法。
本篇我們首先給大家介紹下機器學習的基礎知識,然后給大家介紹下用 spark ML(spark 做 機器學習模型)的相關知識,最后分享一個比較常用的非監督學習算法—k-means 聚類算法。
1.2 機器學習算法分類
一般來說,從機器學習輸入樣本的類型以及要求訓練的結果來看,機器學習分為非監督學習、 監督學習、半監督學習和強化學習。其中非監督學習和監督學習使用的場景較多,而半監督學習由于對要求的樣本特征比較嚴格,所以使用較少,強化學習則是主要用在機器人控制領域。因此,下面我們主要來介紹下非監督學習和監督學習。機器學習算法的分類如下圖2所示。
1.2.1 非監督學習
非監督學習是沒有明確的目標訓練結果。它是通過對一些無標注的樣本集,通過某一種訓練模型找出這些樣本集之間的內在聯系的一種學習模式。 常見的應用場景包括關聯規則的學習以及聚類。這類算法并沒法制定訓練結果模型是神馬樣子的,而是找到訓練數據相互的近似關系。非監督學習包括聚類分析,非負矩陣因式分解和自組織映射等。非監督學習的常見組成類別如下圖3所示。
聚類是非監督學習的一個最常見的例子,聚類算法往往是對當前訓練數據集中的數據點進行相似度計算,將相似的數據點聚在一起。聚類算法模型如下圖 4 所示。圖中,根據一定的相似度算法,將各個輸入的離散樣本點聚集成三個簇,每個簇內各個點的相似度較高。
因為非監督學習使用的是事先沒有分類的樣本,這樣可能出現更加好的分類,因為有時候我們自己擬定的分類也不一定是最佳的,因此非監督學習模型存在一定靈活性。它可以為我們提供更好的、更多樣的分類策略。
1.2.2 監督學習
監督學習更多的是用來訓練給定的算法模型的。它是需要同時有輸入和輸出的,輸入要求有標記的要本,而輸出是根據標記樣本和模型推斷的結果。它的大致過程就如下圖 5:
圖的上部分,藍色箭頭所示流程是離線訓練流程,而下面的綠色部分為對訓練出的模型預估的流程。詳細步驟如下:
(1) 離線訓練:首先對數據進行數據篩選和清洗,后進行特征抽取,后根據一定的監督學習算法訓練出一個算法模型。
(2) 模型預估:首先對需要預估的數據,進行特征提取后,將其輸入到離線訓練出的模型中,輸出預估的結果。
2. spark ML 簡介
2.1為什么spark適合機器學習
Spark 在機器學習方面之所以有如此大的優勢,是因為 spark 有如下特征:
(1) 方便使用,支持多種語言及算法庫。支持的語言主要由 scala、java、python 和 R,同時 支持多個算法庫,即 SparkR 等,還能與多種數據源進行交互,即 hdfs、hbase、cassandra
等等。
(2) Spark 采用基于內存的計算,計算速度大大高于 hadoop,而機器學習的模型一般需要重復多次計算,而且模型訓練需要較大的樣本集,因此針對大數據的快速計算的 spark 相 對于 hadoop 當然就更適合機器學習,如下圖 6 所示,對于相同的數據集,spark 要比 hadoop 的執行速度快上 100 倍。
(3) 易于部署,可運行在多種分布式集群上,主要的部署模式有 standalone、hadoop yarn 和 mesos 等。三種主要的部署模式以及區別將在后續的文章《spark集群部署》中講解。
由于 spark 有上述諸多優勢,因此現在被廣泛地用于機器學習中。spark框架中也單獨提供了對機器學習的支持庫spark MLib。spark的體系結構如下圖7所示。
spark MLib支持的算法庫
spark Mlib 庫目前支持 4 種常見的機器學習問題,包括分類、回歸、聚類和協同過濾。Spark MLib 庫目前支持的機器學習算法如圖 8所示:
3. k-means 聚類算法
所謂聚類,顧名思義就是將給定的樣本根據各個 樣本點之間的相似度分成多個群組。k-means 算法屬于非監督學習中的一種聚類算法,也是較常用的一種聚類算法,因 此,這里我們介紹下 k-means 算法的實現。
3.1 k-means 算法介紹
3.1.1 k-means算法原理
k-means算法原理用下圖 9 表示:
從上圖中,我們可以看到,A,B,C,D,E 是五個在圖中點。而灰色的點是我們的種子點, 也就是我們用來找點群的點。有兩個種子點,所以 K=2。然后,K-Means 的算法如下:
(1) 隨機在圖中取 K(這里 K=2)個種子點。
(2) 然后對圖中的所有點求到這 K 個種子點的距離,假如點 A 離種子點 K1 最近,那么 A 屬于 K1 點群。(上圖中,我們可以看到 A,B 屬于上面的種子點,C,D,E 屬于下面中部的種子點)
(3) 接著,我們要移動種子點到屬于他的“點群”的中心。
(4) 然后重復第 2)和第 3)步,直到,種子點沒有移動(我們可以看到圖中的第四步上面的種子點聚合了 A,B,C,下面的種子點聚合了 D,E)。
3.1.2 k-means算法流程
根據上述步驟,畫出算法的執行流程如下圖10所示。圖中,(1) 到(4)步分別對應上面的(1) 到(4)。整個計算流程如下:
(1) 確定樣本集,然后根據需要分成的類別數k,隨機選取k個中心點
(2) 分組,將樣本點X1...Xn分給離它們最近的中心點,并計算每個中心點到樣本點的距離和,作為(4)判斷中心點是否變動的依據。
(3) 重新選取中心點,用新的簇的均值最為新的中心點
(4) 重新計算每個樣本點到中心點的距離和,與(2)中算出的距離和對比,判斷中心點是否改變,即算法是否收斂。
由上述流程可看出,流程中最關鍵的為最后三個步驟。下面我們用公式來表示后面三步所執行的操作。
公式中,樣本為從??1...????的點,??1...????為樣本的中心點, ??i為分類后單個簇中的一個樣本點。表示上圖中最后的三個關鍵步驟的公式如下:
(1) 分組,計算每個樣本點到每個中心點的距離和: 將樣本分配給距離它們最近的中心向量,并使目標函數值減小,目標函數值計算公式為:
其中,min 右側公式是為了尋找單個樣本點到所有的中心點中距離最小的那個 中心點,即計算樣本點和中心點的相似度,根據樣本數據的不同,可選擇多種相似度計算方法。下面兩節會介紹比較常用的兩種相似度計算方法。
(2) 重新確定新的中心點,即計算每個簇的平均值作為新的中心點,計算公式為:
(3) 確定準則函數 E:計算各個簇中的樣本點到每個新的中心點的距離之和
第三步獲得準則函數E(第一輪分類后的距離和)的值后,與第一步計算的距離和相比,可看出距離和是否在減小,如在減小,回到第一步重新計算。直到第三步的準則函數值與第一步的距離和相等,算法收斂,即模型訓練結束。
從 k-means 聚類算法中可以看出,其中最主要的是計算兩個樣本點之間的相似度,將相似度最大的點聚集到一起,因此,如何選擇相似度計算公式以及選擇何種相似度計算公式就成為該聚集算法的關鍵了。常見的相似度算法有歐幾里德距離和皮爾遜相似度系數。下面我們簡要介紹下這兩種相似度算法。
3.2 歐幾里德距離
歐幾里德距離是一個非常簡單的計算相似度評價值的方法。它以經過人們一致評價的物品為坐標軸,然后將參與評價的人繪制到圖上,并考查他們彼此間的距離遠近。如圖 11:
該圖顯示了處于“偏好空間”中用戶的分布狀況。Toby 在 Snakes 軸線和 Dupree 軸線上所標 示的數值分別是 4.5 和 1.0。兩人在“偏好空間”中的距離越近,他們的興趣偏好就越相似。 因為這張圖是二維的,所以在同一時間內你只能看到兩項評分,但是這一規則對于更多數量 的評分項而言也是同樣適用的。
為了計算圖上 Toby 和 LaSalle 之間的距離,我們可以計算出每一軸向上的差值,求平方后再相加,最后對總和取平方根。得出的這個值即為歐幾里德距離。設 Toby 的一般距離坐標用(x1,y1)表示,LaSalle 的距離坐標用(x2,y2)表示,則兩人在二維坐標點上的歐幾里得距離為 :
(注:此處用 1 除是為了讓相似度與距離成正比,即距離越小,相似度越高)
3.3 皮爾遜相關度系數
除了歐幾里得距離外,還有一種相對較復雜的方法來判斷兩個物品之間的相似度,它在數據不是很規范的時候會給出更好的結果。如下圖 12 所示,我們以 Gene Seymour 和 Mick LaSalle 兩人為《superman》電影的打分為例來介紹皮爾遜相關度算法原理。
圖中,Mick LaSalle 為《superman》打了 3 分,而 Gene Seymour 打了 5 分,因此該影片被定位在圖(3,5)的位置。我們可以看到一條直線,因它的繪制原則盡可能地靠近圖中的所有坐標點,而被稱為最佳擬合線。如果兩個人對影片的評分都相同,則這條線將成為對角線,并且與圖上所有的坐標點都相交,從而得到一個結果為 1(相關系數)的理想相關度評價。而此圖中的相關度系數大概為 0.4 左右,由此可見,相關度系數越大,兩者的相似度越高,完全相同則為 1。
假設有兩個變量 X、Y,那么兩變量間的皮爾遜相關系數可通過以下公式計算:
其中 E 是數學期望,cov 表示協方差,σ是標準差。