人工智能 之 機器學習常用算法總結 及 各個常用分類算法精確率對比

1、簡介

本文講解了機器學習常用算法總結和各個常用分類算法精確率對比。收集了現在比較熱門的TensorFlow、Sklearn,借鑑了Github和一些國內外的文章。

機器學習的知識樹,這個圖片是Github上的,有興趣的可以自己去看一下:
地址:https://github.com/trekhleb/homemade-machine-learning
在這裏插入圖片描述

簡單的翻譯一下這個樹:

英文 中文
Machine Learning 機器學習
Supervised Learning 監督學習
Unsupervised Learning 非監督學習
Reinforcement Learning 強化學習
Neural Networks and Deep Learning 神經網絡與深度學習
Ensemble Learning 集成學習

以下是一部分算法的概念和應用,僅供大家參考

2、監督學習

監督學習可以看作是原先的預測模型,有基礎的訓練數據,再將需要預測的數據進行輸入,得到預測的結果(不管是連續的還是離散的)

2.1、決策樹(Decision Tree,DT)

決策樹是一種樹形結構,爲人們提供決策依據,決策樹可以用來回答yes和no問題,它通過樹形結構將各種情況組合都表示出來,每個分支表示一次選擇(選擇yes還是no),直到所有選擇都進行完畢,最終給出正確答案。

決策樹(decision tree)是一個樹結構(可以是二叉樹或非二叉樹)。在實際構造決策樹時,通常要進行剪枝,這時爲了處理由於數據中的噪聲和離羣點導致的過分擬合問題。剪枝有兩種:

先剪枝——在構造過程中,當某個節點滿足剪枝條件,則直接停止此分支的構造。
後剪枝——先構造完成完整的決策樹,再通過某些條件遍歷樹進行剪枝。

在這裏插入圖片描述

2.2、樸素貝葉斯分類器(Naive Bayesian Model,NBM)

樸素貝葉斯分類器基於貝葉斯定理及其假設(即特徵之間是獨立的,是不相互影響的),主要用來解決分類和迴歸問題。

具體應用有:
標記一個電子郵件爲垃圾郵件或非垃圾郵件;
將新聞文章分爲技術類、政治類或體育類;
檢查一段文字表達積極的情緒,或消極的情緒;
用於人臉識別軟件。

學過概率的同學一定都知道貝葉斯定理,這個在250多年前發明的算法,在信息領域內有着無與倫比的地位。貝葉斯分類是一系列分類算法的總稱,這類算法均以貝葉斯定理爲基礎,故統稱爲貝葉斯分類。樸素貝葉斯算法(Naive Bayesian) 是其中應用最爲廣泛的分類算法之一。樸素貝葉斯分類器基於一個簡單的假定:給定目標值時屬性之間相互條件獨立。

2.3、最小二乘法(Least squares)

你可能聽說過線性迴歸。最小均方就是用來求線性迴歸的。如下圖所示,平面內會有一系列點,然後我們求取一條線,使得這條線儘可能擬合這些點分佈,這就是線性迴歸。這條線有多種找法,最小二乘法就是其中一種。最小二乘法其原理如下,找到一條線使得平面內的所有點到這條線的歐式距離和最小。這條線就是我們要求取得線。
在這裏插入圖片描述

2.4、邏輯迴歸(Logistic Regression)

邏輯迴歸模型是一個二分類模型,它選取不同的特徵與權重來對樣本進行概率分類,用一個log函數計算樣本屬於某一類的概率。即一個樣本會有一定的概率屬於一個類,會有一定的概率屬於另一類,概率大的類即爲樣本所屬類。用於估計某種事物的可能性。

邏輯迴歸

2.5、支持向量機(Support Vector Machine)

支持向量機(support vector machine)是一個二分類算法,它可以在N維空間找到一個(N-1)維的超平面,這個超平面可以將這些點分爲兩類。也就是說,平面內如果存在線性可分的兩類點,SVM可以找到一條最優的直線將這些點分開。SVM應用範圍很廣。

在這裏插入圖片描述

要將兩類分開,想要得到一個超平面,最優的超平面是到兩類的margin達到最大,margin就是超平面與離它最近一點的距離,如下圖,Z2>Z1,所以綠色的超平面比較好。

在這裏插入圖片描述

2.6、K最近鄰算法(KNN,K-NearestNeighbor)

鄰近算法,或者說K最近鄰(KNN,K-NearestNeighbor)分類算法是數據挖掘分類技術中最簡單的方法之一。KNN算法的核心思想是如果一個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。 KNN方法在類別決策時,只與極少量的相鄰樣本有關。由於KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更爲適合。
在這裏插入圖片描述

主要應用領域是對未知事物的識別,即判斷未知事物屬於哪一類,判斷思想是,基於歐幾里得定理,判斷未知事物的特徵和哪一類已知事物的的特徵最接近。如上圖,綠色圓要被決定賦予哪個類,是紅色三角形還是藍色四方形?如果K=3,由於紅色三角形所佔比例爲2/3,綠色圓將被賦予紅色三角形那個類,如果K=5,由於藍色四方形比例爲3/5,因此綠色圓被賦予藍色四方形類。由此也說明了KNN算法的結果很大程度取決於K的選擇。

2.7、集成學習(Ensemble Learning)

集成學習就是將很多分類器集成在一起,每個分類器有不同的權重,將這些分類器的分類結果合併在一起,作爲最終的分類結果。最初集成方法爲貝葉斯決策。
在這裏插入圖片描述

集成算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體預測。集成算法的主要難點在於究竟集成哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的算法,同時也非常流行。

 常見的算法包括:
 Boosting, Bootstrapped Aggregation(Bagging),
 AdaBoost,堆疊泛化(Stacked Generalization, Blending),
 梯度推進機(Gradient Boosting Machine, GBM),隨機森林(Random Forest)。

那麼集成方法是怎樣工作的,爲什麼他們會優於單個的模型?
他們拉平了輸出偏差:如果你將具有民主黨傾向的民意調查和具有共和黨傾向的民意調查取平均,你將得到一箇中和的沒有傾向一方的結果。
它們減小了方差:一堆模型的聚合結果和單一模型的結果相比具有更少的噪聲。在金融領域,這被稱爲多元化——多隻股票的混合投資要比一隻股票變化更小。這就是爲什麼數據點越多你的模型會越好,而不是數據點越少越好。
它們不太可能產生過擬合:如果你有一個單獨的沒有過擬合的模型,你是用一種簡單的方式(平均,加權平均,邏輯迴歸)將這些預測結果結合起來,然後就沒有產生過擬合的空間了。

3、無監督學習

3.1、聚類算法

聚類算法就是將一堆數據進行處理,根據它們的相似性對數據進行聚類。

聚類,就像迴歸一樣,有時候人們描述的是一類問題,有時候描述的是一類算法。聚類算法通常按照中心點或者分層的方式對輸入數據進行歸併。所以的聚類算法都試圖找到數據的內在結構,以便按照最大的共同點將數據進行歸類。常見的聚類算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。

聚類算法有很多種,具體如下:中心聚類、關聯聚類、密度聚類、概率聚類、降維、神經網絡/深度學習。
在這裏插入圖片描述
在這裏插入圖片描述

3.2、K-均值算法(K-Means)

K-means算法是硬聚類算法,是典型的基於原型的目標函數聚類方法的代表,它是數據點到原型的某種距離作爲優化的目標函數,利用函數求極值的方法得到迭代運算的調整規則。K-means算法以歐式距離作爲相似度測度,它是求對應某一初始聚類中心向量V最優分類,使得評價指標J最小。算法採用誤差平方和準則函數作爲聚類準則函數。K-means算法是很典型的基於距離的聚類算法,採用距離作爲相似性的評價指標,即認爲兩個對象的距離越近,其相似度就越大。該算法認爲簇是由距離靠近的對象組成的,因此把得到緊湊且獨立的簇作爲最終目標。

在這裏插入圖片描述

通常,人們根據樣本間的某種距離或者相似性來定義聚類,即把相似的(或距離近的)樣本聚爲同一類,而把不相似的(或距離遠的)樣本歸在其他類。

3.3、主成分分析(Principal Component Analysis,PCA)

主成分分析是利用正交變換將一些列可能相關數據轉換爲線性無關數據,從而找到主成分。PCA方法最著名的應用應該是在人臉識別中特徵提取及數據降維。
在這裏插入圖片描述

PCA主要用於簡單學習與可視化中數據壓縮、簡化。但是PCA有一定的侷限性,它需要你擁有特定領域的相關知識。對噪音比較多的數據並不適用。

3.4、SVD矩陣分解(Singular Value Decomposition)

也叫奇異值分解(Singular Value Decomposition),是線性代數中一種重要的矩陣分解,是矩陣分析中正規矩陣酉對角化的推廣。在信號處理、統計學等領域有重要應用。SVD矩陣是一個複雜的實復負數矩陣,給定一個m行、n列的矩陣M,那麼M矩陣可以分解爲M = UΣV。U和V是酉矩陣,Σ爲對角陣。

在這裏插入圖片描述

PCA實際上就是一個簡化版本的SVD分解。在計算機視覺領域,第一個臉部識別算法就是基於PCA與SVD的,用特徵對臉部進行特徵表示,然後降維、最後進行面部匹配。儘管現在面部識別方法複雜,但是基本原理還是類似的。

3.5、獨立成分分析(ICA)

獨立成分分析(Independent Component Analysis,ICA)是一門統計技術,用於發現存在於隨機變量下的隱性因素。ICA爲給觀測數據定義了一個生成模型。在這個模型中,其認爲數據變量是由隱性變量,經一個混合系統線性混合而成,這個混合系統未知。並且假設潛在因素屬於非高斯分佈、並且相互獨立,稱之爲可觀測數據的獨立成分。

640 (5)

ICA與PCA相關,但它在發現潛在因素方面效果良好。它可以應用在數字圖像、檔文數據庫、經濟指標、心裏測量等。

在這裏插入圖片描述

上圖爲基於ICA的人臉識別模型。實際上這些機器學習算法並不是全都像想象中一樣複雜,有些還和高中數學緊密相關。

4、強化學習

4.1、Q-Learning算法

Q-learning要解決的是這樣的問題:一個能感知環境的自治agent,怎樣通過學習選擇能達到其目標的最優動作。

強化學習目的是構造一個控制策略,使得Agent行爲性能達到最大。Agent從複雜的環境中感知信息,對信息進行處理。Agent通過學習改進自身的性能並選擇行爲,從而產生羣體行爲的選擇,個體行爲選擇和羣體行爲選擇使得Agent作出決策選擇某一動作,進而影響環境。增強學習是指從動物學習、隨機逼近和優化控制等理論發展而來,是一種無導師在線學習技術,從環境狀態到動作映射學習,使得Agent根據最大獎勵值採取最優的策略;Agent感知環境中的狀態信息,搜索策略(哪種策略可以產生最有效的學習)選擇最優的動作,從而引起狀態的改變並得到一個延遲迴報值,更新評估函數,完成一次學習過程後,進入下一輪的學習訓練,重複循環迭代,直到滿足整個學習的條件,終止學習。

Q-Learning是一種無模型的強化學習技術。具體來說,可以使用Q學習來爲任何給定的(有限的)馬爾可夫決策過程(MDP)找到最優的動作選擇策略。它通過學習一個動作價值函數,最終給出在給定狀態下采取給定動作的預期效用,然後遵循最優策略。一個策略是代理在選擇動作後遵循的規則。當這種動作值函數被學習時,可以通過簡單地選擇每個狀態中具有最高值的動作來構建最優策略。 Q-learning的優點之一是能夠比較可用操作的預期效用,而不需要環境模型。此外,Q學習可以處理隨機過渡和獎勵的問題,而不需要任何適應。已經證明,對於任何有限的MDP,Q學習最終找到一個最優策略,從總體獎勵的預期值返回到從當前狀態開始的所有連續步驟是最大可實現的意義。

5、機器學習常用Python包

5.1、sklearn

開源機器學習模塊,包括分類、迴歸、聚類系列算法,主要算法有SVM、邏輯迴歸、樸素貝葉斯、Kmeans、DBSCAN等;也提供了一些語料庫。
學習地址:https://scikit-learn.org/stable/modules/classes.html

5.2、numpy

Python的語言擴展,定義了數字的數組和矩陣。提供了存儲單一數據類型的多維數組(ndarray)和矩陣(matrix)。
學習地址:http://www.numpy.org/

5.3、scipy

其在numpy的基礎上增加了衆多的數學、科學以及工程計算中常用的模塊,例如線性代數、常微分方程數值求解、信號處理、圖像處理、稀疏矩陣等等。
學習地址:https://www.scipy.org/

5.4、pandas

直接處理和操作數據的主要package,提供了dataframe等方便處理表格數據的數據結構
學習地址:http://pandas.pydata.org/

5.5、statsmodels

統計和計量經濟學的package,包含了用於參數評估和統計測試的實用工具
學習地址:https://pypi.org/project/statsmodels/

5.6、matplotlib、pyplot、pylab

用於生成統計圖。pyplot 和 pylab屬於matplotlib的子模塊,所以只需安裝matplotlib,就會有pyplot和pylab的了。
學習地址:https://matplotlib.org/

5.7、jieba

中文分詞工具。
學習地址:https://github.com/fxsjy/jieba

5.8、Pattern

此庫更像是一個“全套”庫,因爲它不僅提供了一些機器學習算法,而且還提供了工具來幫助你收集和分析數據。數據挖掘部分可以幫助你收集來自谷歌、推特和維基百科等網絡服務的數據。它也有一個Web爬蟲和HTML DOM解析器。“引入這些工具的優點就是:在同一個程序中收集和訓練數據顯得更加容易。
學習地址:https://github.com/clips/pattern

6、各個算法精確率對比

此次算精確率對比,總語料樣本21282條,分類標籤911個,語料是企業的語料集,不對外公開。精準率是把整體樣本按照8:2的比例,分爲80%的訓練集,20%的測試集來算的,實驗流程在每篇文章中都有詳細記載。數據量低於21282的是取了總樣本的部分數據做的實驗,效果統計如下:

6.1、支持向量機(SupportVectorMachine)

6.1.1、升級版sklearn

機器學習 之 支持向量機(SupportVectorMachine)文本算法的精確率——升級版sklearn
在這裏插入圖片描述

6.1.2、Liblinear

機器學習 之 Liblinear中的支持向量機(SupportVectorMachine)文本算法的精確率
在這裏插入圖片描述

6.1.3、sklearn

機器學習 之 sklearn中的支持向量機(SupportVectorMachine)文本算法的精確率
在這裏插入圖片描述

6.2、隨機森林(Random Forest)

機器學習 之 隨機森林(Random Forest)文本算法的精確率
在這裏插入圖片描述

6.3、樸素貝葉斯(Naive Bayesian Model)

機器學習 之 樸素貝葉斯(Naive Bayesian Model)文本算法的精確率
在這裏插入圖片描述

6.4、K近鄰(K-NearestNeighbor)

機器學習 之 K近鄰(K-NearestNeighbor)文本算法的精確率
在這裏插入圖片描述

6.5、邏輯迴歸(LogisticRegression)

機器學習 之 邏輯迴歸(LogisticRegression)文本算法的精確率
在這裏插入圖片描述

6.6、決策樹(Decision Tree)

機器學習 之 決策樹(Decision Tree)文本算法的精確率
在這裏插入圖片描述
看完本文實屬不易,寫本文也耗費了我很多時間和精力,希望大家有錢場捧個錢場,有人場捧個人場,謝謝~

7、推薦

無意中發現了一個巨牛的人工智能教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看小說一樣!覺得太牛了,所以分享給大家。點這裏可以跳轉到教程。

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