作者:王抒偉
機器學習中,有一個稱為“ No Free Lunch ”的定理。簡單來說,與監(jiān)督學習特別相關的這個定理,它指出沒有萬能算法,就是用一個算法能很好地解決每個問題。
例如,不能說神經(jīng)網(wǎng)絡總是比決策樹更好,反之亦然。有許多因素在起作用,例如數(shù)據(jù)集的大小和結構。
那么,如果我遇到一個問題,首先應該嘗試多種不同的算法來解決問題,同時使用保留的“測試集”數(shù)據(jù)評估績效并選擇最優(yōu)的那個算法,然后GitHub 搜索最優(yōu)代碼修改哈哈哈哈。
當然,如果需要打掃房屋,可以使用吸塵器、掃帚或拖把。你不會用鏟子吧?
所以嘗試的算法必須適合要解決的問題,這才是選擇正確的機器學習任務的來源。
基礎
有一個通用原則是所有用于預測建模的受監(jiān)督機器學習算法的基礎。
機器學習算法被描述為學習目標函數(shù)(f),該函數(shù)最好將輸入變量(X)映射到輸出變量(Y):Y = f(X)
這是一個簡單的學習任務,我們想在給定新的輸入變量(X)的情況下,對(Y)進行預測。但是不知道函數(shù)(f)。
機器學習的最常見類型是學習映射Y = f(X)可以對新X預測到Y,目標是盡可能進行最準確的預測。
對于初入機器學習領域,沒有機器學習基礎知識的新手,我會對常用的十大機器學習算法做簡單介紹。
1.?線性回歸
線性回歸可能是統(tǒng)計和機器學習中最著名和最易理解的算法之一。
主要與最小化模型的誤差或做出盡可能準確的預測有關,但以可解釋性為代價。我們將從許多不同領域(包括統(tǒng)計數(shù)據(jù))中學習。
線性回歸的表示法是一個方程,該方程通過找到稱為系數(shù)(B),來描述輸入變量(x)與輸出變量(y)之間關系的線。
例如:y = B0 + B1 * x 臥槽,這不是一次函數(shù)嗎?哈哈
給定輸入x,我們將預測y,線性回歸學習算法的目標是找到系數(shù)B0和B1的值, 例如用于普通最小二乘法和梯度下降優(yōu)化的線性代數(shù)解。
2.?LOGISTIC回歸
邏輯回歸是機器學習從統(tǒng)計領域“借”的另一種技術。它是二分類問題(具有兩個類值的問題)的首選方法。
Logistic回歸類似于線性回歸,因為目標是找到權重每個輸入變量的系數(shù)的值。與線性回歸不同,輸出的預測使用稱為對數(shù)函數(shù)的非線性函數(shù)進行變換。
邏輯函數(shù)看起來像一個大S,它將任何值轉換為0到1的范圍。因為我們可以將規(guī)則應用于邏輯函數(shù)的輸出為0和1(例如,如果IF小于0.5,則輸出1)并預測類別值。
與線性回歸一樣,當去除與輸出變量無關的屬性以及相關的屬性時,邏輯回歸的效果更好。這是一個快速學習二進制分類問題并有效的模型
3.?線性判別分析
Logistic回歸是傳統(tǒng)上僅限于兩類分類問題的分類算法。如果是多分類,則線性判別分析算法(LDA)就是很重要的算法了。
LDA的表示非常簡單,它由數(shù)據(jù)的統(tǒng)計屬性組成,這些屬性是針對每個類別計算的。對于單個輸入變量,這包括:
每個類別的平均值。
計算所有類別的方差
通過為每個類別計算一個區(qū)分值并為具有最大值的類別進行預測來進行預測。
該算法的前提是:數(shù)據(jù)具有高斯分布(鐘形曲線),因此最好在操作之前從數(shù)據(jù)中刪除異常值。
4.?分類和回歸樹
決策樹是用于預測建模機器學習的重要算法類型。
決策樹模型的表示形式是二叉樹。這是來自算法和數(shù)據(jù)結構的二叉樹,沒有什么花哨的。每個節(jié)點代表一個輸入變量(x)和該變量的分割點(假設變量是數(shù)字)。
樹的葉節(jié)點包含用于進行預測的輸出變量(y)。通過遍歷樹的拆分直到到達葉節(jié)點并在該葉節(jié)點輸出類值來進行預測。
樹學習速度很快,做出預測的速度也非???。它們對于許多問題通常也很準確,不需要為數(shù)據(jù)做任何特殊預處理。
5-樸素貝葉斯
樸素貝葉斯(Naive Bayes)是一種簡單但功能強大的預測建模算法。
該模型由兩種類型的概率組成,可以直接從您的訓練數(shù)據(jù)中計算出:
1)每個類別的概率;
2)給定每個x值的每個類別的條件概率。
開始計算,概率模型可用于使用貝葉斯定理對新數(shù)據(jù)進行預測。當你的數(shù)據(jù)是實值時,通常會假設一個高斯分布(鐘形曲線),以便可以輕松地估計這些概率。
樸素貝葉斯之所以被稱為樸素,是因為它假定每個輸入變量都是獨立的。這是一個很強的假設,對于真實數(shù)據(jù)來說是不現(xiàn)實的,盡管如此,該技術對于大量復雜問題非常有效。
6 - K近鄰
KNN算法非常簡單且非常有效。KNN的模型表示是整個訓練數(shù)據(jù)集。簡單吧?
通過搜索整個訓練集中的K個最相似實例并匯總這K個實例的輸出變量,可以對新數(shù)據(jù)點進行預測。
對于回歸問題,這可能是平均輸出變量,對于分類問題,這可能是最常見的類別值。
訣竅在于如何確定數(shù)據(jù)實例之間的相似性。如果您的屬性都具有相同的比例(例如,都是距離數(shù)據(jù)),最簡單的方法是使用歐幾里得距離,您可以根據(jù)每個輸入變量之間的差異直接計算一個數(shù)字。
KNN可能需要大量內存或空間來存儲所有數(shù)據(jù),因為它把所有數(shù)據(jù)都遍歷了。您還可以隨著時間的訓練數(shù)據(jù),以保持預測的準確性。
距離或緊密度的概念可能會分解為非常高的維度(許多輸入變量),這可能會對問題的算法性能產生負面影響。所以對于數(shù)據(jù)的輸入就至關重要。
7- 矢量化學習
K最近的缺點是需要整個訓練數(shù)據(jù)集。學習向量量化算法(簡稱LVQ)是一種人工神經(jīng)網(wǎng)絡算法,可讓選擇要需要的訓練實例數(shù)量。
LVQ的表示形式是向量的集合。這些是在最開始開始時隨機選擇的,適用于在學習算法的多次迭代中最好地總結訓練數(shù)據(jù)集。
學習之后,可以像使用K近鄰一樣,使用數(shù)據(jù)進行預測。通過計算每個向量與新數(shù)據(jù)實例之間的距離,可以找到最相似的數(shù)據(jù)向量(最佳匹配的向量)。然后返回最佳匹配的類值作為預測。記得數(shù)據(jù)歸一化,獲得的效果更好。
8-支持向量機
支持向量機可能是最受歡迎的機器學習算法之一。
超平面是分割輸入變量空間的線。
在SVM中,選擇一個超平面以按類別(類別0或類別1)最好地分隔輸入變量空間中的點。
在二維圖中,您可以將其可視化為一條線,并假設所有輸入點都可以被這條線完全隔開。SVM學習算法找到超平面對類進行最佳分離的系數(shù)。
超平面和最近的數(shù)據(jù)點之間的距離稱為邊距??梢詫⑦@兩個類別分開的最佳或最佳超平面是邊距最大的線。
僅這些點與定義超平面和分類器的構造有關。這些點稱為支持向量。
在實踐中,使用優(yōu)化算法來找到使余量最大化的系數(shù)的值。
SVM可能是功能最強大的即用型分類器之一,使用頻率很高。
9-BAGGING和隨機森林
隨機森林是最流行,功能最強大的機器學習算法之一。這是一種稱為Bootstrap聚類或BAGGING的集成機器學習算法。
您需要對數(shù)據(jù)進行大量采樣,計算平均值,然后對所有平均值取平均值,以便更好地估算真實平均值。
在bagging中,使用相同的方法,但用于估計整個統(tǒng)計模型(最常見的是決策樹)。獲取訓練數(shù)據(jù)的多個樣本,然后為每個數(shù)據(jù)樣本構建模型。當你需要對新數(shù)據(jù)進行預測時,每個模型都將進行預測,并對預測取平均值以對真實輸出值進行更好的估計。
隨機森林是對這種方法的一種調整,在該方法中將創(chuàng)建決策樹,不是選擇最佳的拆分點。
因此,為每個數(shù)據(jù)樣本創(chuàng)建的模型與原先的模型相比,差異更大。將他們的預測結合起來可以更好地估計真實的基礎輸出值。
?
Boosting是一種集成技術,嘗試從多個弱分類器創(chuàng)建強分類器。這是通過從訓練數(shù)據(jù)構建模型,然后創(chuàng)建第二個模型來嘗試糾正第一個模型中的錯誤來完成的。添加模型,直到完美預測訓練集或添加最大數(shù)量的模型為止。
AdaBoost是為二進制分類開發(fā)的第一個真正成功的增強算法。這是了解增強的最佳起點?,F(xiàn)代的增強方法基于AdaBoost,最著名的是隨機梯度增強機.
具體細節(jié)可以看這個視頻.
AdaBoost與決策樹一起使用。
創(chuàng)建第一棵樹后,將在每個訓練實例上使用該樹的性能來加權要創(chuàng)建的下一棵樹應注意每個訓練實例的關注程度。
難以預測的訓練數(shù)據(jù)的權重更高,而易于預測的實例的權重更低。依次創(chuàng)建模型,每個模型都會更新訓練實例上的權重,這些權重會影響序列中下一棵樹執(zhí)行的學習。構建完所有樹之后,對新數(shù)據(jù)進行預測,并根據(jù)訓練數(shù)據(jù)的準確性對每棵樹的性能進行加權。
由于該算法在糾正錯誤方面投入了很多精力,因此刪除異常值和數(shù)據(jù)去噪非常重要。
編輯:黃飛
?
評論