- 機(jī)器學(xué)習(xí)算法分類:監(jiān)督學(xué)習(xí)弓柱、無監(jiān)督學(xué)習(xí)、強(qiáng)化學(xué)習(xí)
- 基本的機(jī)器學(xué)習(xí)算法:線性回歸侧但、支持向量機(jī)(SVM)矢空、最近鄰居(KNN)、邏輯回歸禀横、決策樹屁药、k平均、隨機(jī)森林柏锄、樸素貝葉斯酿箭、降維、梯度增強(qiáng)
機(jī)器學(xué)習(xí)算法大致可以分為三類:
- 監(jiān)督學(xué)習(xí)算法 (Supervised Algorithms):在監(jiān)督學(xué)習(xí)訓(xùn)練過程中趾娃,可以由訓(xùn)練數(shù)據(jù)集學(xué)到或建立一個(gè)模式(函數(shù) / learning model)缭嫡,并依此模式推測(cè)新的實(shí)例。該算法要求特定的輸入/輸出抬闷,首先需要決定使用哪種數(shù)據(jù)作為范例妇蛀。例如,文字識(shí)別應(yīng)用中一個(gè)手寫的字符饶氏,或一行手寫文字讥耗。主要算法包括神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)疹启、最近鄰居法古程、樸素貝葉斯法、決策樹等喊崖。
- 無監(jiān)督學(xué)習(xí)算法 (Unsupervised Algorithms):這類算法沒有特定的目標(biāo)輸出挣磨,算法將數(shù)據(jù)集分為不同的組雇逞。
- 強(qiáng)化學(xué)習(xí)算法 (Reinforcement Algorithms):強(qiáng)化學(xué)習(xí)普適性強(qiáng),主要基于決策進(jìn)行訓(xùn)練茁裙,算法根據(jù)輸出結(jié)果(決策)的成功或錯(cuò)誤來訓(xùn)練自己塘砸,通過大量經(jīng)驗(yàn)訓(xùn)練優(yōu)化后的算法將能夠給出較好的預(yù)測(cè)。類似有機(jī)體在環(huán)境給予的獎(jiǎng)勵(lì)或懲罰的刺激下晤锥,逐步形成對(duì)刺激的預(yù)期掉蔬,產(chǎn)生能獲得最大利益的習(xí)慣性行為。在運(yùn)籌學(xué)和控制論的語境下矾瘾,強(qiáng)化學(xué)習(xí)被稱作“近似動(dòng)態(tài)規(guī)劃”(approximate dynamic programming女轿,ADP)。
基本的機(jī)器學(xué)習(xí)算法:
- 線性回歸算法 Linear Regression
- 支持向量機(jī)算法 (Support Vector Machine,SVM)
- 最近鄰居/k-近鄰算法 (K-Nearest Neighbors,KNN)
- 邏輯回歸算法 Logistic Regression
- 決策樹算法 Decision Tree
- k-平均算法 K-Means
- 隨機(jī)森林算法 Random Forest
- 樸素貝葉斯算法 Naive Bayes
- 降維算法 Dimensional Reduction
- 梯度增強(qiáng)算法 Gradient Boosting
1. 線性回歸算法 Linear Regression
回歸分析(Regression Analysis)是統(tǒng)計(jì)學(xué)的數(shù)據(jù)分析方法壕翩,目的在于了解兩個(gè)或多個(gè)變量間是否相關(guān)蛉迹、相關(guān)方向與強(qiáng)度,并建立數(shù)學(xué)模型以便觀察特定變量來預(yù)測(cè)其它變量的變化情況放妈。
線性回歸算法(Linear Regression)的建模過程就是使用數(shù)據(jù)點(diǎn)來尋找最佳擬合線北救。公式,y = mx + c芜抒,其中 y 是因變量珍策,x 是自變量,利用給定的數(shù)據(jù)集求 m 和 c 的值挽绩。
線性回歸又分為兩種類型膛壹,即 簡(jiǎn)單線性回歸(simple linear regression),只有 1 個(gè)自變量唉堪;多變量回歸(multiple regression)*,至少兩組以上自變量肩民。
下面是一個(gè)線性回歸示例:基于 Python scikit-learn 工具包描述唠亚。
from sklearn import linear_model, datasets
#digit dataset from sklearn
digits = datasets.load_digits()
#create the LinearRegression model
clf = linear_model.LinearRegression()
#set training set
x, y = digits.data[:-1], digits.target[:-1]
#train model
clf.fit(x, y)
#predict
y_pred = clf.predict([digits.data[-1]])
y_true = digits.target[-1]
print(y_pred)
print(y_true)
2. 支持向量機(jī)算法(Support Vector Machine,SVM)
支持向量機(jī)/網(wǎng)絡(luò)算法(SVM)屬于分類型算法。SVM模型將實(shí)例表示為空間中的點(diǎn)持痰,將使用一條直線分隔數(shù)據(jù)點(diǎn)毒费。需要注意的是宗雇,支持向量機(jī)需要對(duì)輸入數(shù)據(jù)進(jìn)行完全標(biāo)記,僅直接適用于兩類任務(wù),應(yīng)用將多類任務(wù)需要減少到幾個(gè)二元問題脯爪。
from sklearn import svm, datasets
#digit dataset from sklearn
digits = datasets.load_digits()
#create the Support Vector Classifier
clf = svm.SVC(gamma = 0.001, C = 100)
#set training set
x, y = digits.data[:-1], digits.target[:-1]
#train model
clf.fit(x, y)
#predict
y_pred = clf.predict([digits.data[-1]])
y_true = digits.target[-1]
print(y_pred)
print(y_true)
3. 最近鄰居/k-近鄰算法 (K-Nearest Neighbors,KNN)
KNN算法是一種基于實(shí)例的學(xué)習(xí),或者是局部近似和將所有計(jì)算推遲到分類之后的惰性學(xué)習(xí)拾因。用最近的鄰居(k)來預(yù)測(cè)未知數(shù)據(jù)點(diǎn)捏萍。k 值是預(yù)測(cè)精度的一個(gè)關(guān)鍵因素,無論是分類還是回歸淹仑,衡量鄰居的權(quán)重都非常有用丙挽,較近鄰居的權(quán)重比較遠(yuǎn)鄰居的權(quán)重大肺孵。
KNN 算法的缺點(diǎn)是對(duì)數(shù)據(jù)的局部結(jié)構(gòu)非常敏感。計(jì)算量大颜阐,需要對(duì)數(shù)據(jù)進(jìn)行規(guī)范化處理平窘,使每個(gè)數(shù)據(jù)點(diǎn)都在相同的范圍。
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
#digit dataset from sklearn
digits = datasets.load_digits()
#create the KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=6)
#set training set
x, y = digits.data[:-1], digits.target[:-1]
#train model
clf.fit(x, y)
#predict
y_pred = clf.predict([digits.data[-1]])
y_true = digits.target[-1]
print(y_pred)
print(y_true)
延伸:KNN 的一個(gè)缺點(diǎn)是依賴于整個(gè)訓(xùn)練數(shù)據(jù)集凳怨,學(xué)習(xí)向量量化(Learning Vector Quantization瑰艘,LVQ)是一種監(jiān)督學(xué)習(xí)的人神經(jīng)網(wǎng)絡(luò)算法,允許你選擇訓(xùn)練實(shí)例肤舞。LVQ 由數(shù)據(jù)驅(qū)動(dòng)磅叛,搜索距離它最近的兩個(gè)神經(jīng)元,對(duì)于同類神經(jīng)元采取拉攏萨赁,異類神經(jīng)元采取排斥弊琴,最終得到數(shù)據(jù)的分布模式。如果基于 KNN 可以獲得較好的數(shù)據(jù)集分類效果杖爽,利用 LVQ 可以減少存儲(chǔ)訓(xùn)練數(shù)據(jù)集存儲(chǔ)規(guī)模敲董。典型的學(xué)習(xí)矢量量化算法有LVQ1、LVQ2和LVQ3慰安,尤以LVQ2的應(yīng)用最為廣泛腋寨。
4. 邏輯回歸算法 Logistic Regression
邏輯回歸算法(Logistic Regression)一般用于需要明確輸出的場(chǎng)景,如某些事件的發(fā)生(預(yù)測(cè)是否會(huì)發(fā)生降雨)化焕。通常萄窜,邏輯回歸使用某種函數(shù)將概率值壓縮到某一特定范圍。
例如撒桨,Sigmoid 函數(shù)(S 函數(shù))是一種具有 S 形曲線查刻、用于二元分類的函數(shù)。它將發(fā)生某事件的概率值轉(zhuǎn)換為 0, 1 的范圍表示凤类。
Y = E ^(b0+b1 * x)/(1 + E ^(b0+b1 * x ))
以上是一個(gè)簡(jiǎn)單的邏輯回歸方程穗泵,B0,B1是常數(shù)谜疤。這些常數(shù)值將被計(jì)算獲得佃延,以確保預(yù)測(cè)值和實(shí)際值之間的誤差最小。
5. 決策樹算法 Decision Tree
決策樹(Decision tree)是一種特殊的樹結(jié)構(gòu)夷磕,由一個(gè)決策圖和可能的結(jié)果(例如成本和風(fēng)險(xiǎn))組成履肃,用來輔助決策。機(jī)器學(xué)習(xí)中坐桩,決策樹是一個(gè)預(yù)測(cè)模型尺棋,樹中每個(gè)節(jié)點(diǎn)表示某個(gè)對(duì)象,而每個(gè)分叉路徑則代表某個(gè)可能的屬性值撕攒,而每個(gè)葉節(jié)點(diǎn)則對(duì)應(yīng)從根節(jié)點(diǎn)到該葉節(jié)點(diǎn)所經(jīng)歷的路徑所表示的對(duì)象的值陡鹃。決策樹僅有單一輸出烘浦,通常該算法用于解決分類問題。
一個(gè)決策樹包含三種類型的節(jié)點(diǎn):
- 決策節(jié)點(diǎn):通常用矩形框來表示
- 機(jī)會(huì)節(jié)點(diǎn):通常用圓圈來表示
- 終結(jié)點(diǎn):通常用三角形來表示
簡(jiǎn)單決策樹算法案例萍鲸,確定人群中誰喜歡使用信用卡闷叉。考慮人群的年齡和婚姻狀況脊阴,如果年齡在30歲或是已婚握侧,人們更傾向于選擇信用卡,反之則更少嘿期。
通過確定合適的屬性來定義更多的類別品擎,可以進(jìn)一步擴(kuò)展此決策樹。在這個(gè)例子中备徐,如果一個(gè)人結(jié)婚了,他超過30歲蜜猾,他們更有可能擁有信用卡(100% 偏好)秀菱。測(cè)試數(shù)據(jù)用于生成決策樹。
注意:對(duì)于那些各類別樣本數(shù)量不一致的數(shù)據(jù)蹭睡,在決策樹當(dāng)中信息增益的結(jié)果偏向于那些具有更多數(shù)值的特征衍菱。
6. k-平均算法 K-Means
k-平均算法(K-Means)是一種無監(jiān)督學(xué)習(xí)算法,為聚類問題提供了一種解決方案肩豁。
K-Means 算法把 n 個(gè)點(diǎn)(可以是樣本的一次觀察或一個(gè)實(shí)例)劃分到 k 個(gè)集群(cluster)脊串,使得每個(gè)點(diǎn)都屬于離他最近的均值(即聚類中心,centroid)對(duì)應(yīng)的集群清钥。重復(fù)上述過程一直持續(xù)到重心不改變琼锋。
7. 隨機(jī)森林算法 Random Forest
隨機(jī)森林算法(Random Forest)的名稱由 1995 年由貝爾實(shí)驗(yàn)室提出的random decision forests 而來,正如它的名字所說的那樣循捺,隨機(jī)森林可以看作一個(gè)決策樹的集合斩例。
隨機(jī)森林中每棵決策樹估計(jì)一個(gè)分類,這個(gè)過程稱為“投票(vote)”从橘。理想情況下,我們根據(jù)每棵決策樹的每個(gè)投票础钠,選擇最多投票的分類恰力。
8. 樸素貝葉斯算法 Naive Bayes
樸素貝葉斯算法(Naive Bayes)基于概率論的貝葉斯定理,應(yīng)用非常廣泛旗吁,從文本分類踩萎、垃圾郵件過濾器、醫(yī)療診斷等等很钓。樸素貝葉斯適用于特征之間的相互獨(dú)立的場(chǎng)景香府,例如利用花瓣的長(zhǎng)度和寬度來預(yù)測(cè)花的類型董栽。“樸素”的內(nèi)涵可以理解為特征和特征之間獨(dú)立性強(qiáng)企孩。
與樸素貝葉斯算法密切相關(guān)的一個(gè)概念是最大似然估計(jì)(Maximum likelihood estimation)锭碳,歷史上大部分的最大似然估計(jì)理論也都是在貝葉斯統(tǒng)計(jì)中得到大發(fā)展。例如勿璃,建立人口身高模型擒抛,很難有人力與物力去統(tǒng)計(jì)全國(guó)每個(gè)人的身高,但是可以通過采樣补疑,獲取部分人的身高歧沪,然后通過最大似然估計(jì)來獲取分布的均值與方差。
Naive Bayes is called naive because it assumes that each input variable is independent.
9. 降維算法 Dimensional Reduction
在機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)領(lǐng)域莲组,降維是指在限定條件下诊胞,降低隨機(jī)變量個(gè)數(shù),得到一組“不相關(guān)”主變量的過程锹杈,并可進(jìn)一步細(xì)分為特征選擇和特征提取兩大方法撵孤。
一些數(shù)據(jù)集可能包含許多難以處理的變量。特別是資源豐富的情況下嬉橙,系統(tǒng)中的數(shù)據(jù)將非常詳細(xì)早直。在這種情況下,數(shù)據(jù)集可能包含數(shù)千個(gè)變量市框,其中大多數(shù)變量也可能是不必要的霞扬。在這種情況下,幾乎不可能確定對(duì)我們的預(yù)測(cè)影響最大的變量枫振。此時(shí)喻圃,我們需要使用降維算法,降維的過程中也可能需要用到其他算法粪滤,例如借用隨機(jī)森林斧拍,決策樹來識(shí)別最重要的變量。
10. 梯度增強(qiáng)算法 Gradient Boosting
梯度增強(qiáng)算法(Gradient Boosting)使用多個(gè)弱算法來創(chuàng)建更強(qiáng)大的精確算法杖小。它與使用單個(gè)估計(jì)量不同肆汹,而是使用多個(gè)估計(jì)量創(chuàng)建一個(gè)更穩(wěn)定和更健壯的算法。梯度增強(qiáng)算法有幾種:
- XGBoost? — 使用線性和樹算法
- LightGBM? — 只使用基于樹的算法
梯度增強(qiáng)算法的特點(diǎn)是精度較高予权。此外昂勉,LightGBM 算法具有令人難以置信的高性能。
擴(kuò)展閱讀:《The Machine Learning Master》
- Machine Learning(一):基于 TensorFlow 實(shí)現(xiàn)寵物血統(tǒng)智能識(shí)別
- Machine Learning(二):寵物智能識(shí)別之 Using OpenCV with Node.js
- Machine Learning:機(jī)器學(xué)習(xí)項(xiàng)目
- Machine Learning:機(jī)器學(xué)習(xí)算法
- Machine Learning:機(jī)器學(xué)習(xí)書單
- Machine Learning:人工智能媒體報(bào)道集
- Machine Learning:機(jī)器學(xué)習(xí)技術(shù)與知識(shí)產(chǎn)權(quán)法
- Machine Learning:經(jīng)濟(jì)學(xué)家談人工智能
- 數(shù)據(jù)可視化(三)基于 Graphviz 實(shí)現(xiàn)程序化繪圖