機器學習筆記(1)

1、機器學習的主要任務是通過樣本的特徵進行分類,一般有兩套獨立的樣本集:訓練數據和測試數據。其中特徵和屬性通常是訓練集樣本的列,是獨立測得結果,而測試數據集在測試階段只輸入特徵,通過分類器來進行類別的標記,並與真值比較,得到分類器的精度。

2、機器學習跟模式識別、統計學習、數據挖掘、計算機視覺、語音識別和自然語言處理等領域有深刻的聯繫。從研究內容來說,機器學習與模式識別、統計學習、數據挖掘有很大的類似點,同時,機器學習與其他領域的處理技術結合,形成了計算機視覺、語音識別、自然語言處理等交叉學科。
3、機器學習、數據挖掘經典算法歸類:
(1)、分類算法
分類算法是機器學習的主要內容,即通過對已知類別的樣本進行學習,得到一種分類器,然後對未知類別的測試數據進行分類處理。
#1. C4.5算法
是機器學習中的一種分類決策樹算法,是基於ID3算法進行改進後的一種重要算法。改進之處主要有:
  • 用信息增益率來選擇屬性。ID3使用的是熵的變化值,而C4.5運用的是信息增益率;
  • 在決策樹構造過程中進行剪枝,避免某些具有很少元素的結點使構造出的決策樹Overfitting;
  • 對非離散數據也能處理;
  • 能夠對不完整數據進行處理。


#2.  CART(Classification and Regression Tree)算法
分類與迴歸樹(CART)也是典型的非參數分類和迴歸方法,與ID3算法和C4.5算法類似,與他們的不同之處在於:
  • CART分類最後形成的樹是一個二叉樹,每個節點會分爲左孩子和右孩子兩個節點,所以CART算法在所選定的屬性中又要劃分出最佳的屬性劃分值,即在選定了的劃分屬性中確定按照拿個值作爲二元劃分;
  • CART算法對於屬性的值採用的是基於Gini係數值的方式做比較;
  • CART算法在數據進行分類後,爲防止模型的過擬合,會對樹進行一個剪枝,即除去不必要的多餘分枝

#3.  KNN(K-Nearest Neighbor algorithm)算法
K近鄰算法與K-means聚類算法在思想上比較類似。目前理解來看,K近鄰訓練的是帶標記的樣本,也就是監督學習,而K-means聚類算法則是對無標記物體進行聚類,也就是無監督學習。簡單來都是物以類聚人以羣分,即找最相似特徵的樣本入夥。主要思路爲:如果一個樣本與特徵空間中的K個訓練樣本最相似,而這K個樣本中的大多數屬於某個類別,則該測試樣本也屬於該類別。下面用維基百科上的一幅圖來簡單說明問題:

在上圖中,藍色正方體和紅色三角形是兩類訓練樣本,綠色圓圈則是待分類的數據。現在的問題就是綠色圓圈究竟屬於哪一類。
  • 如果K=3,我們可以看到,3個物體中,兩個紅色三角>一個藍色正方體,則該測試樣本屬於紅色三角類。
  • 如果K=5,情況則不一樣了,5個類物體中,有三個藍色正方形,則該測試樣本屬於藍色正方體。
從這,我們也可以看出,K近鄰的分類效果與選取的K值有很大的關係,而且樣本直接的距離定義也有不同的方式,這將在後續每個算法的詳細實現中進行介紹。

#4.  Naive Bayes算法 
樸素貝葉斯算法(NBC)是以概率論模型爲理論依據的分類算法,有充分的理論依據和堅實的數學基礎,在機器視覺中有着廣泛的應用。貝葉斯理論的核心思想就是通過選取測試數據的最高概率來決定測試數據的類別。
貝葉斯模型的最終目的是求條件概率P(c|w),即測試數據具有w特徵,屬於某個類別c的概率是多少,其中,概率最高的就是該數據所屬的類別。這涉及到條件概率以及諸多解釋,將在後續每個算法的研究中進行解釋。

#5.  SVM(Support vector machines)算法
支持向量機(SVM)是一種監督式的二分類學習算法,廣泛應用於統計分類以及迴歸分析中。支持向量機在解決小樣本、非線性的高維模式識別中有許多優勢。下面用一個簡單的動態圖來進行說明:

由上圖我們可以看出,最初的兩個訓練樣本在二維平面是線性不可分的,通過將其映射到三維空間,我們可以看到數據是可以通過分割平面進行分類的。同理,對於N-1維數據,如果在該維度是線性不可分的,我們可以通過核函數將其映射到更高的維度進行分類。

#6.  EM算法
最大期望(EM, Expectation-Maximization)算法是一種概率模型算法,EM算法是尋找最大似然估計的算法,模型主要是通過觀測值來確定模型的參數。

(2)、關聯規則
關聯規則簡單來說就是從大量數據中挖掘出有價值的數據項之間的相關關係,例如:在商場購物中,如果消費者購買了產品A,那他還有多大的機率購買產品B?這就可以通過分析大多數的購買情況來進行推測,併合理的將相關產品放在相同的位置。
#7.  Apriori算法
Apriori算法是一種挖掘關聯規則的頻繁項集算法,其核心思想是通過候選集生成和情節的向下封閉檢測兩個階段來挖掘頻繁項集。通過上述的商品購買問題,我們來看看Apriori算法的具體步驟:

通過上述分析我們可以看出Apriori算法簡單、易理解、數據要求低。但是每次循環產生的組合過多,沒排除不該參與組合的元素,導致每次遍歷時需要大量的計算,對於大型數據的開銷太大。

#8.  FP樹算法
針對上述Apriori算法的性能瓶頸問題(大量候選集和重複掃描數據庫),提出了基於FP樹生成頻繁項集的FP-growth算法。該算法只進行2次數據庫掃描且它不使用候選集,直接壓縮數據庫成一個頻繁模式樹,最後通過樹生成關聯規則。

(3)連接分析
連接分析簡單來說就是通過數據之間的相互聯繫來對數據進行排名。主要是應用在網頁搜索、論文檢索和社交網絡方面。
#9.  PageRank算法
谷歌專有算法,用於衡量特定網頁相對於搜索引擎索引中的其他網頁而言的重要程度,實現了將連接價值概念作爲排名的因素。PageRank關注的是鏈接的入度和出度,即本網頁與其他網頁的關係,計算出一個PR值,由此來判斷網頁的重要程度,並以此對網頁進行排序。

#10. HITS算法
 PageRank算法考慮的是網頁的一維重要信息,即值計算網頁的關注度。HITS算法則考慮了網頁的二維重要信息:
  • 權威頁:某些網頁提供某個主題的信息,而且具有非常重要的信息,這些網頁被稱爲權威頁;
  • 導航頁:某些網頁不提供主題信息,但可以找到有關該主題的網頁信息,這樣的網頁稱爲導航頁。

如上圖所示,該網頁是斯坦福大學計算語言學研究組維護的頁面,這個網頁蒐集了與統計自然處理相關的高質量資源,包括一些著名的開源軟件包和語料庫等,並通過連接的方式指向這些資源頁面。這個頁面就是一個導航頁(Hub頁面),而它指向的資源頁面,大部分是高質量的權威頁(Authority頁面)。

(4)聚類算法
聚類算法是典型的無監督學習算法,聚類的訓練數據都是不帶標籤的,算法的目的就是通過訓練數據的特徵將相似樣本進行歸類,並推測這些樣本的標籤。
#11.  K-Means算法
K-Means聚類算法是很容易理解的基礎聚類方法。其核心思想是初始隨機給的K個簇中心,按照最近鄰原則把待分類的樣本點分類到各個簇。下面以K=2聚類算法爲簡例進行說明:
  • 未聚類的初始樣本點;
  • 隨機選取的兩個點作爲聚類中心;
  • 計算每個點到聚類中心的距離,並將每個點聚類到離該點最近的類中;
  • 重新計算每個聚類中所有點的平均值,並將該值定義爲聚類的新中心;
  • 重複計算每個點到新的聚類中心的距離,根據距離進行新的聚類,並再次計算聚類的新的中心,直到中心不在改變,聚類結束。

通過上述計算流程,我們可以看出K-means聚類算法的一些缺點:
  • 最終簇的類別數目K不一定事先已知,如上圖最佳K值是2,但人爲定義可能是3,這就導致分類出現較大偏差,所以如何選一個合適的K值是一個問題;
  • 最開始的種子點的選擇會影響到聚類的效果;
  • 對噪聲和離羣點敏感。

#12.  BIRCH算法
利用層次方法的平衡迭代約減和聚類(BIRCH,Balanced Iterative Reducing and Hierarchis)是採用B-樹實現的聚類算法。該算法的優點有:
  • 只需要一次訪問數據庫,速度快;
  • 相似數據在很大程度上得到壓縮,節省了存儲空間;
  • 不需要大量遞歸運算。

(5)集成學習
所謂集成學習,就是用多重或多個弱分類器結合爲一個強分類器,從而達到提升分類方法效果。嚴格來說,集成學習並不算一種分類器,而是一種分類器結合的方法。
#13.  Adaboost算法
Adaboost是一種迭代算法,源起於PAC模型,其核心思想是針對同一個訓練集訓練不同的分類器,即弱分類器,然後把弱分類器集合起來,構造一個更強的強分類器。
  • 弱學習算法:識別錯誤率小於1/2,即準確率僅比隨機猜測略高的學習算法;
  • 強學習算法:識別準確率很高並能夠在多項式時間內完成的算法。
我們通過下圖來簡單瞭解Adaboost算法的思想:
  • 最左側爲待分類數據,“+”和“-”分別表示不同的類別;
  • 先給所有樣本相同的權重1/10(10個樣本),並找到最佳的單層決策樹,我們可以看到第一次分類後錯誤率爲0.3(0.1+0.1+0.1),然後增加錯誤分類樣本的權重,並降低正確分類的權重;
  • 迭代上述操作,指導總的錯誤率滿足要求。


(6)、序列模式分析
序列模式挖掘是指挖掘相對時間或其他模式出現頻率高的模式,簡單來說就是找出所有的頻繁子序列。個人感覺與關聯規則有一定的相似之處。
#14.  GSP算法
GSP(Generalized Sequential patterns)算法類似前文提到的Apriori算法,大體可以分爲候選集產生、候選集計數以及擴展分類三個階段。

#15.  PrefixSpan算法
與GSP算法相比,不產生任何候選集,但也可以挖掘出滿足閾值的所有序列模式。

(7)整合挖掘
#16.  CBA算法
CBA(Classification Based on Association)關聯分類算法是將分類規則和關聯規則整合後的算法。

(8)粗糙集約減算法
#17.  finding reduct算法

(9)圖挖掘
這裏所說的圖即圖論,是通過事物之間的聯繫建立的圖模型。基於圖挖掘的算法可以進行社區網絡分析、圖分類、圖聚類等。
#18.  gSpan算法

算法來源:http://www.cs.uvm.edu/~icdm/algorithms/CandidateList.shtml。最後幾種算法還沒看過,本方向也較少涉及,就沒再研究了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章