
干貨 | 上手機器學習,從搞懂這十大經(jīng)典算法開始
在機器學習領域,“沒有免費的午餐”是一個不變的定理。簡而言之,沒有一種算法是完美的,可以作為任何問題的最佳解決方案。認清這一點,對于解決監(jiān)督學習問題(如預測建模問題)尤其重要。
我們不能總說神經(jīng)網(wǎng)絡就是比決策樹好,反之亦然。影響算法性能的因素有很多,比如數(shù)據(jù)集的大小和結構。
因此,對于自己的問題,要嘗試多種不同的算法,并使用測試數(shù)據(jù)集來評估各個算法的性能,以選出效果最優(yōu)的那一個。
當然,前面所嘗試的算法必須要適合自己的問題,這也正是你要選對正確的機器學習任務的地方。比如,需要打掃房子的時候,你會使用真空吸塵器、掃帚或拖把,但絕不應該用鏟子在屋內挖坑。
重要的原則
話雖如此,但所有用于預測建模的有監(jiān)督機器學習算法卻有一個共同的原則:
機器學習算法的本質是找到一個目標函數(shù)(f),使其成為輸入變量(X)到輸出變量(Y)之間的最佳映射:Y = f(X)
這是最常見的學習任務,給定任意新的輸入變量(X),我們就能預測出輸出變量(Y)的值。因為我們不知道目標函數(shù)(f)的形式或樣子,所以才要機器去把它找出來。不然的話,我們就可以直接用目標函數(shù)來進行預測了,而非還要用機器學習算法來學習數(shù)據(jù)了。
最常見的機器學習類型就是找到最佳映射Y = f(X),并以此來預測新X所對應的Y值。這一過程被稱為預測建?;蝾A測分析,目標是盡可能到出最為準確的預測。
對于渴望理解機器學習基本概念的各位新手,我們特地整理出數(shù)據(jù)科學家最常用的十大機器學習算法,便于大家快速上手。
1- 線性回歸
線性回歸可能是統(tǒng)計學和機器學習中最為知名、最易于理解的一個算法。
預測建模主要關注的是如何最小化模型的誤差,或是如何在一個可解釋性代價的基礎上做出最為準確的預測。我們將借用、重用和竊取包括統(tǒng)計學在內的多個不同領域的算法,并將其用于這些目的。
線性回歸所表示的是描述一條直線的方程,通過輸入變量的特定權重系數(shù)(B)來找出輸入變量(x)和輸出變量(y)之間最適合的映射關系。
例如:y = B0 + B1 * x
給定輸入x,我們可以預測出y的值。線性回歸學習算法的目標是找到系數(shù)B0和B1的值。
找出數(shù)據(jù)的線性回歸模型有多種不同的技巧,例如將線性代數(shù)解用于普通最小二乘法和梯度下降優(yōu)化問題。
線性回歸業(yè)已存在200多年,并已被廣泛研究過。使用該算法的一些竅門,是盡可能地去除非常相似的相關變量以及數(shù)據(jù)中的噪聲。這是一個快速、簡單而又好用的算法。
2 - 邏輯回歸
邏輯回歸是機器學習借自統(tǒng)計領域的另一項技術,用于解決二元分類問題(有兩個類值的問題)。
邏輯回歸就像線性回歸,因為它的目標是找出每個輸入變量的加權系數(shù)值。與線性回歸不同的是,邏輯回歸預測輸出值的函數(shù)是非線性的,也被稱為邏輯函數(shù)。
邏輯回歸的函數(shù)圖像看起來是一個大的S形,并將任何值轉換至0到1的區(qū)間。這種形式非常有用,因為我們可以用一個規(guī)則把邏輯函數(shù)的值轉化成0和1(例如,如果函數(shù)值小于0.5,則輸出1),從而預測類別。
基于模型學習的方式,邏輯回歸的輸出值也可以用來預測給定數(shù)據(jù)實例屬于類別0和類別1的概率。當你的預測需要更多依據(jù)時,這一點會非常有用。
跟線性回歸一樣,當你剔除與輸出變量無關或與之除非常相似(相關)的屬性后,邏輯回歸的效果會更好。對于二元分類問題,它是一個易于上手、快速而又有效的模型。
3 - 線性判別分析
一般說,邏輯回歸僅限于二元分類問題。 但如果分類類別超過兩個,線性判別分析就成為你首選的線性分類算法。
線性判別分析的表達式非常簡單。 它由數(shù)據(jù)的統(tǒng)計屬性組成,并計算每個類別的屬性值。對于單個輸入變量,它包括:
每個類別的平均值。
所有類別的方差。
線性判別分析
線性判別分析通過計算每個類別的差別值,并對擁有最大值的類別進行預測。 該方法假定數(shù)據(jù)服從高斯分布(鐘形曲線),因此預測前從數(shù)據(jù)中移除異常值會是一個很好的習慣。對于分類預測問題來說,它是一個簡單而又強大的方法。
4 - 分類和回歸樹
決策樹模型的表現(xiàn)形式為二叉樹,也就是來自算法和數(shù)據(jù)結構方面的二叉樹,沒有什么特別。樹上每個節(jié)點代表一個輸入變量(x)與一個基于該變量的分離點(假定這個變量是數(shù)字)。
葉節(jié)點包含了用于預測的輸出變量(y)。預測是通過遍歷樹的分離點開始,直到抵達每一個葉節(jié)點,并輸出該葉節(jié)點的分類值。
決策樹算法學習起來很快,預測速度也很快。決策樹對于各種各樣的問題都能做出準確的預測,并且無需對數(shù)據(jù)做任何特殊的預處理。
5 - 樸素貝葉斯
樸素貝葉斯是一種簡單而又強大的預測建模算法。
該模型由兩種概率組成,它們都能從訓練數(shù)據(jù)中直接計算出來:1)每個類別的概率; 2)對于給定的x值,每個類別的條件概率。 一旦計算出來,概率模型就可以用于使用貝葉斯定理對新的數(shù)據(jù)進行預測。 當你的數(shù)據(jù)是實值時,通常會假定一個高斯分布(鐘形曲線),這樣你就很容易計算出這些數(shù)據(jù)的概率。
樸素貝葉斯假定每個輸入變量都是獨立,所以被稱為“樸素的”。這是一個強假設,對真實數(shù)據(jù)而言有點不切實際,但該方法在大范圍的復雜問題上非常有效。
6 - K-最近鄰算法
K-最近鄰算法是一種非常簡單和有效。它的模型所表示是整個訓練數(shù)據(jù)集,看上去很簡單,對吧?
對于給定的訓練數(shù)據(jù),通過搜索整個數(shù)據(jù)集中K個最相似的實例(鄰居),匯總這K個實例的輸出變量可以預測新的數(shù)據(jù)點。對于回歸問題,它可能是輸出變量的平均值;對于分類問題,它可能是模式(或最常見的)類別值。
使用K-最近鄰算法的訣竅,是在于如何確定數(shù)據(jù)實例之間的相似性。最簡單的方法,如果你的屬性在歐幾里德距離上尺度相同(例如均以英寸為單位),那么基于每個輸入變量之間的差異,你就可以直接計算其數(shù)值來確定相似性。
K-最近鄰算法可能需要大量的內存或存儲空間來儲存所有數(shù)據(jù),但只有在預測時才會執(zhí)行計算(或學習)。你也可以隨時更新和管理你的訓練實例,以保持預測的準確性。
距離或緊密度的概念在非常高的維度(大量的輸入變量)中可能會失效,因為輸入變量的數(shù)量對于算法性能有著很大的負面影響。這就是維度災難。這就要求你只使用那些與預測輸出變量最相關的輸入變量。
7 - 學習向量量化
K-最近鄰算法的一個缺點是你需要使用整個訓練數(shù)據(jù)集。而作為人工神經(jīng)網(wǎng)絡,學習向量量化算法(簡稱LVQ)允許你選擇訓練實例的數(shù)量,并能準確地學習這些實例所應有的特征。
學習向量量化
學習向量量化算法所表示的是碼本向量的集合。這些向量在初始化的時候隨機選擇出來,并在學習算法的多次迭代中優(yōu)化成最能概括訓練數(shù)據(jù)集的集合。在學習完成后,碼本向量可以像K-最近鄰算法一樣進行預測。通過計算每個碼本向量和新數(shù)據(jù)實例之間的距離來找到最相似的鄰居(最佳匹配碼本向量),然后返回最佳匹配單元的類別值或(在回歸情況下的實際值)作為預測。如果能重新調整數(shù)據(jù)使其處于相同的區(qū)間(如0到1之間),則可以獲得最佳的預測結果。
如果K-最近鄰算法在你的數(shù)據(jù)集上已經(jīng)給出了很好的預測結果,那么可以嘗試用學習向量量化算法來減少整個訓練數(shù)據(jù)集的內存存儲需求。
8 - 支持向量機
超平面是輸入變量空間內的一條分割線。在支持向量機中,超平面可以通過類別(0類或1類)最佳分割輸入變量空間。在二維空間內,超平面可被視為一條線,我們假設所有的輸入點都可以被該線完全分開。支持向量機的目標是找到一個分離系數(shù),讓一個超平面能夠對不同類別的數(shù)據(jù)進行最佳分割。
超平面與最近的數(shù)據(jù)點之間的距離被稱為邊距。在分離兩個類上具有最大邊距的超平面被稱為最佳超平面。超平面的確定只跟這些點及分類器的構造有關。這些點被稱為支持向量,它們支持并定義超平面。在實踐中,可以使用優(yōu)化算法來找到能夠最大化邊距的系數(shù)。
支持向量機可能是最為強大的“開箱即用”分類器之一,值得你嘗試。
9 - bagging算法和隨機森林
隨機森林是最流行、最強大的機器學習算法之一。它是一種被稱為Bootstrap Aggregation或Bagging的機器學習集成算法。
Bootstrap是一種從數(shù)據(jù)樣本中估算數(shù)量的強大統(tǒng)計方法。換句話說,你需要抽取大量的數(shù)據(jù)樣本、計算平均值,然后再計算所有均值的平均,以便更好地估計整體樣本的真實平均值。
bagging算法也使用相同的方式,但用于估計整個統(tǒng)計模型的最常見方法是決策樹。訓練數(shù)據(jù)中的多個樣本將被取樣,然后對每個數(shù)據(jù)樣本建模。對新數(shù)據(jù)進行預測時,每個模型都會進行預測,并對每個預測結果進行平均,以更好地估計真實的輸出值。
隨機森林是對bagging算法的一種調整,它不是選擇最佳分割點來創(chuàng)建決策樹,而是通過引入隨機性來得到次優(yōu)分割點。
因此,針對每個數(shù)據(jù)樣本所創(chuàng)建的模型,會與其他方式有所不同,但仍能以其獨特和不同的方式準確預測。結合所有模型的預測,可以更好地估計潛在的真實輸出。
如果用方差較高的算法(如決策樹)能夠獲得較好的結果,那么通過bagging算法通常可以獲得更好的結果。
10 - Boosting和AdaBoost算法
Boosting是一項從多個弱分類器中構建強分類器的集成預測技術。它從訓練數(shù)據(jù)中構建模型,然后通過修正前一個模型的錯誤創(chuàng)造出第二個模型。以此類推,模型不斷疊加,直至能夠完美預測訓練數(shù)據(jù)集,或達到可添加的模型的數(shù)量上限。
在針對二元分類所開發(fā)的boosting算法中,AdaBoost是第一個成功的。它是理解boosting算法的最佳起點?,F(xiàn)代boosting方法基于AdaBoost而構建,最典型的例子是隨機梯度加速器。
通常,AdaBoost算法與決策樹一起工作。第一個決策樹創(chuàng)建后,決策樹在每個訓練實例上的性能,都被用來衡量下一個決策樹針對該實例所應分配的關注程度。難以預測的訓練數(shù)據(jù)被賦予更大的權重,而容易預測的數(shù)據(jù)則被賦予更小的權重。模型依次被創(chuàng)建,每次更新訓練實例的權重,都會影響到序列中下一個決策樹學習性能。所有決策樹完成后,即可對新輸入的數(shù)據(jù)進行預測,而每個決策樹的性能將由它在訓練數(shù)據(jù)上的準確度所決定。
由于模型注意力都集中于糾正上一個算法的錯誤,所以必須確保數(shù)據(jù)是干凈無異常的。
▌ 最后的建議
初學者常常會被眼花繚亂的機器學習算法所困擾,提出“我該使用哪種算法?”這樣的問題。
此問題的答案取決于許多因素,包括:
(1)數(shù)據(jù)的大小、質量和性質;
(2)可用的計算時間;
(3)任務的緊迫性;
(4)你想要用數(shù)據(jù)來做什么。
即使是一位經(jīng)驗豐富的數(shù)據(jù)科學家,在嘗試不同的算法之前,也無法回答哪種算法的性能會是最好的。機器學習的算法還有很多,但以上這些是最受歡迎的算法。如果你剛入門機器學習,這將是一個很好的學習起點。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉換:從基礎用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結構數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結構數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結構數(shù)據(jù)特征價值的專業(yè)核心 表結構數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結構化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結構數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結構數(shù)據(jù)(以 “行 - 列” 存儲的結構化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結構數(shù)據(jù)價值的核心操盤手 表格結構數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10