本文介紹了機器學習初學者需要了解的10算法,包括線性回歸、Logistic回歸、樸素貝葉斯、K近鄰算法等等。
在機器學習中,有壹個定理叫做“天下沒有免費的午餐”。簡而言之,它指出沒有壹種算法對所有問題都有效,尤其是在監督學習(即預測建模)中。
比如妳不能說神經網絡永遠比決策樹好,反之亦然。有很多因素在起作用,比如數據集的大小和結構。
因此,妳應該針對具體問題嘗試各種不同的算法,並留出壹個數據“測試集”來評估性能並選擇獲勝者。
當然,妳嘗試的算法壹定要適合妳的問題,也就是選擇合適的機器學習任務。比如,如果妳需要打掃房子,妳可能會用吸塵器、掃帚或拖把,但妳不會拿出鏟子開始挖。
大原則
但是,還有壹個普遍的原則,就是所有有監督機器學習算法的預測建模的基礎。
機器學習算法被描述為學習目標函數F,該函數將輸入變量X最佳地映射到輸出變量Y: Y = F (x)。
這是壹個常見的學習任務,我們可以根據輸入變量x的新樣本來預測Y,我們不知道函數f的外觀或形式,如果知道,我們會直接使用它,不需要使用機器學習算法從數據中學習。
最常見的機器學習算法是學習映射Y = f(X)來預測新X的Y,這被稱為預測建模或預測分析,我們的目標是盡可能做出最準確的預測。
對於想了解機器學習基礎知識的初學者,本文將概述數據科學家使用的頂級10機器學習算法。
1.線性回歸
線性回歸可能是統計學和機器學習中最知名和最容易理解的算法之壹。
預測建模主要側重於最小化模型誤差或盡可能做出最準確的預測,以犧牲可解釋性為代價。我們將借用和重用許多不同領域的算法,包括統計學,並將它們用於這些目的。
線性回歸的表示是壹個方程,通過求輸入變量的具體權重(稱為系數B)來描述壹條最能代表輸入變量X和輸出變量Y之間關系的直線。
線性回歸
例如:y = B0+B1 * x
我們會根據輸入的x來預測y,線性回歸學習算法的目標是找到系數B0和B1的值。
可以使用不同的技術從數據中學習線性回歸模型,例如普通最小二乘法和梯度下降優化的線性代數解。
線性回歸已經存在了200多年,並得到了廣泛的研究。使用這種技術的壹些經驗是盡可能去除非常相似(相關)的變量,去除噪聲。這是壹個快速簡單的技術,妳可以先試試。
2.邏輯回歸
邏輯回歸是機器學習借鑒統計學的另壹種技術。它是解決二元分類問題的首選。
Logistic回歸類似於線性回歸,目標是找到每個輸入變量的權重,即系數值。與線性回歸不同,邏輯回歸使用稱為邏輯函數的非線性函數來預測輸出。
邏輯函數看起來像個大s,可以把任意值轉換成0到1的範圍。這是非常實用的,因為我們可以指定邏輯函數的輸出值為0和1(例如,如果輸入小於0.5,則輸出為1)並預測類別值。
邏輯回歸
由於模型的學習方式,邏輯回歸的預測也可以作為給定數據實例(屬於類別0或1)的概率。這對於需要提供更多預測依據的問題很有用。
與線性回歸壹樣,邏輯回歸在刪除與輸出變量無關的屬性和非常相似(相關)的屬性時更有效。這是壹個快速學習模型,對二分類問題非常有效。
3.線性判別分析(LDA)
邏輯回歸是壹種分類算法。傳統上,它僅限於兩種分類問題。如果妳有兩個以上的類別,那麽線性判別分析是首選的線性分類技術。
LDA的表示非常簡單和直接。它由數據的統計屬性組成,並計算每個類別。單個輸入變量的LDA包括:
每個類別的平均值;
所有類別的方差。
線性判別分析
預測的方法是計算每個類別的判別值,用最大值預測類別。這種技術假設數據是高斯分布(鐘形曲線),所以最好事先刪除數據中的異常值。這是處理分類預測建模問題的壹種簡單而有力的方法。
4.分類和回歸樹
決策樹是預測建模機器學習的壹種重要算法。
決策樹模型的表示是二叉樹。這是壹個二叉樹的算法和數據結構,沒什麽特別的。每個節點代表壹個單獨的輸入變量x和變量上的壹個分割點(假設變量是壹個數字)。
決策圖表
決策樹的葉節點包含用於預測的輸出變量y。可以通過遍歷樹的分割點直到到達葉節點並輸出該節點的類別值來進行預測。
決策樹的學習速度和預測速度都很快。它們還可以解決大量的問題,不需要對數據做特別的準備。
5.樸素貝葉斯
樸素貝葉斯是壹種簡單但強大的預測建模算法。
模型由兩種概率組成,這兩種概率都可以從訓練數據中直接計算出來:1)每個類別的概率;2)給定每個x的值,每個類別的條件概率。壹旦計算完成,概率模型就可以使用貝葉斯定理來預測新數據。當妳的數據是真實的,妳通常假設壹個高斯分布(鐘形曲線),這樣妳就可以簡單地估計這些概率。
托馬斯·貝葉斯
樸素貝葉斯是樸素的,因為它假設每個輸入變量都是獨立的。這是壹個強有力的假設,真實數據並非如此,但這項技術在大量復雜問題中非常有用。
6.k最近鄰算法
KNN算法非常簡單有效。KNN的模型表示是整個訓練數據集。簡單嗎?
KNN算法在整個訓練集中搜索K個最相似的例子(鄰居),並總結這K個例子的輸出變量來預測新的數據點。對於回歸問題,這可能是平均輸出變量,對於分類問題,這可能是眾數(或最常見的)類別值。
訣竅是如何確定數據實例之間的相似性。如果屬性的度量單位相同(比如都用英寸表示),那麽最簡單的技術就是使用歐氏距離,妳可以根據每個輸入變量之間的差異直接計算出它們的值。
k最近鄰,knn
KNN需要大量內存或空間來存儲所有數據,但它只在需要預測時才執行計算(或學習)。您還可以隨時更新和管理訓練示例,以保持預測的準確性。
距離或緊性的概念可能會在非常高的維度(很多輸入變量)上崩潰,這將對算法在妳的問題上的性能產生負面影響。這就是所謂的維度災難。因此,妳最好只使用那些與預測的輸出變量最相關的輸入變量。
7.學習矢量量化
K近鄰算法的壹個缺點是需要遍歷整個訓練數據集。學習矢量量化(LVQ)是壹種人工神經網絡算法,它允許您選擇訓練樣本的數量,並準確地學習這些樣本應該是什麽樣的。
學習矢量量化
LVQ的表示是碼本向量的集合。這些是在開始時隨機選擇的,並在學習算法的多次叠代中逐漸調整以最好地總結訓練數據集。學習後,可以使用碼本向量進行預測(類似於K近鄰算法)。通過計算每個碼本向量和新數據實例之間的距離,找到最近的鄰居(最佳匹配碼本向量)。然後返回最佳匹配單元的類別值或(回歸中的實際值)作為預測。如果您重新調整數據以具有相同的範圍(例如,在0和1之間),您可以獲得最佳結果。
如果您發現KNN在您的數據集上取得了良好的效果,請嘗試使用LVQ來減少存儲整個訓練數據集的內存需求。
8.支持向量機(SVM)
支持向量機可能是最流行和最廣泛討論的機器學習算法之壹。
超平面是劃分輸入變量空間的直線。在SVM,根據輸入變量類別(類別0或類別1),選擇壹個最能劃分輸入變量空間的超平面。在二維中,妳可以把它想象成壹條線,我們假設所有的輸入點都可以被這條線完全隔開。SVM學習算法尋找能使超平面最優分割類別的系數。
支持向量機
超平面和最近的數據點之間的距離稱為區間。分隔兩個類別的最佳或理想超平面具有最大的間距。只有這些點與定義超平面和建立分類器有關。這些點稱為支持向量,支持或定義超平面。實際上,優化算法是用來尋找使區間最大化的系數的值。
SVM可能是最強大的開箱即用分類器之壹,值得壹試。
9.裝袋和隨機森林
隨機森林是最流行和最強大的機器學習算法之壹。它是壹種Bootstrap Aggregation(也稱為bagging)集成的機器學習算法。
Bootstrap是從數據樣本中估計數量的壹種強有力的統計方法。如平均值。妳從數據中抽取大量樣本,計算平均值,然後對所有平均值進行平均,以更好地估計真實平均值。
Bagging使用相同的方法,但它估計整個統計模型,最常見的是決策樹。從訓練數據中提取多個樣本,然後對每個數據樣本進行建模。當您需要預測新數據時,每個模型會預測並平均所有預測值,以便更好地估計實際輸出值。
隨機森林
隨機森林是對這種方法的壹種調整。在隨機森林方法中,通過引入隨機性而不是選擇最佳分割點來創建決策樹以促進次優分割。
因此,為每個數據樣本創建的模型將與通過其他方法獲得的模型不同,但它們仍然是準確的,盡管方法是獨特的和不同的。結合他們的預測,可以更好地估計實際產值。
如果妳用壹個方差很大的算法(比如決策樹)得到了很好的結果,妳通常可以通過bagging這個算法得到更好的結果。
10.升壓和AdaBoost
Boosting是壹種集成技術,它試圖集成壹些弱分類器來創建壹個強分類器。這是通過從訓練數據構建模型,然後創建第二個模型來嘗試糾正第壹個模型的錯誤來實現的。添加模型,直到可以完美預測訓練集,或者添加的模型數量達到最大值。
AdaBoost是第壹個真正成功的用於二進制分類的boosting算法。這是理解boosting的最好起點。現代的boosting方法是基於AdaBoost的,最值得註意的是隨機梯度提升。
adaboost算法
AdaBoost用於短決策樹。在創建了第壹個決策樹之後,該樹在每個訓練實例上的性能被用來衡量下壹個決策樹應該對每個訓練實例給予多少關註。難以預測的訓練數據被給予較大的權重,而容易預測的數據被給予較小的權重。依次創建模型,在訓練樣本上更新每個模型的權重,影響序列中下壹個決策樹的學習。在所有決策樹建立之後,預測新的數據,並通過每個決策樹在訓練數據中的準確性來評估其性能。
因為太多的註意力放在了糾正算法錯誤上,所以擁有刪除了異常值的幹凈數據是非常重要的。
摘要
面對各種機器學習算法時,初學者經常會問“我應該用哪種算法?這個問題的答案取決於很多因素,包括:(1)數據的大小、質量和特征;(2)可用的計算時間;(3)任務的緊迫性;(4)妳想用這些數據做什麽?
即使是經驗豐富的數據科學家,在嘗試不同的算法之前,也無法判斷哪種算法的性能最佳。雖然還有許多其他的機器學習算法,但本文討論的是最流行的壹種。如果妳是機器學習的新手,這將是壹個很好的起點。