本篇筆記中涵蓋了機器學習的核心概念與常見演算法。機器學習的目標是透過演算法從資料中學習規律,並利用這些規律對新資料進行預測與分類。選擇合適的演算法需考量多種因素,包括資料的類型、大小與品質、運算時間以及任務的急迫性。
一、機器學習的基礎
-
預測建模:機器學習最常見的應用是預測建模 (Predictive Modeling) 或 預測分析 (Predictive Analytics)。其目標是學習一個映射函數
y = f(x)
,讓模型能根據新的輸入變數 x
精確預測出輸出變數 y
。
-
模型精確性:理想的機器學習演算法能夠找到最佳的目標函數
f
來最小化模型誤差,並最大化預測的準確度。
二、常用機器學習演算法
-
線性迴歸 (Linear Regression)
-
概念:這是最廣為人知的統計和機器學習演算法之一。它透過找到一組特定的係數來建立一個線性方程式,以最佳地表示輸入變數
x
與輸出變數 y
之間的關係。
-
優勢:有超過 200 年的歷史,已廣泛被研究。它能有效去除資料中的雜訊並處理相似資料,是一種快速且簡潔的首選演算法。
-
邏輯迴歸 (Logistic Regression)
-
概念:另一種從統計學借鑒而來的演算法。與線性迴歸相似,它也透過找出輸入變數的對應參數值來建立模型。然而,其輸出會經過一個非線性的 logistic 函數,將值轉換到 0 和 1 之間,特別適合用來處理二分類問題。
-
優勢:當需要提供預測的機率值或處理二分類問題時,邏輯迴歸是一種快速且高效的模型。
-
線性判別分析 (Linear Discriminant Analysis, LDA)
-
概念:LDA 是一種比邏輯迴歸更優越的線性分類方法,特別適用於多個類別的分類任務。它透過分析每個類別的統計特性(例如類內均值和整體變量)來建立模型,並根據判別值來進行預測。
-
優勢:LDA 假設資料符合常態分佈,這使其能夠有效地提前去除資料中的離群值。
-
決策樹 (Decision Tree)
-
概念:決策樹是一種重要的預測建模演算法,以二叉樹的結構來表示。每個內部節點代表一個輸入變數和其分支點,而樹的葉節點則包含預測的輸出變數
y
。
-
優勢:其結構簡單易懂,且學習和預測速度都很快。
-
單純貝氏 (Naive Bayes)
-
概念:這是一種簡單但功能強大的預測建模演算法,基於貝氏定理運作。其核心假設是所有輸入變數都是獨立的,雖然這個假設在現實中很少成立,但對於許多複雜問題而言,這種方法依然非常有效。
-
優勢:運算速度快,特別適合處理當輸入資料是實數且符合常態分佈時的機率預測。
-
K-近鄰演算法 (K-Nearest Neighbors, KNN)
-
概念:KNN 是一種極其簡單有效的演算法。它不建立模型,而是將整個訓練資料集作為模型本身。對新的資料點進行預測時,它會找出訓練資料集中最相似的 K 個鄰居,並根據這些鄰居的輸出變數來進行預測(例如,分類問題取眾數,迴歸問題取平均值)。
-
優勢:直觀且易於理解。
-
缺點:需要儲存整個訓練資料集,當資料集很大時會佔用大量儲存空間。
-
學習向量量化 (Learning Vector Quantization, LVQ)
-
概念:LVQ 是一種人工神經網路演算法,可以被視為一組碼向量的集合。它透過學習的方式選擇並保留最有代表性的訓練樣本,並將這些樣本視為不同模式的代表。
-
優勢:可以透過減少儲存的訓練樣本來解決 KNN 演算法的空間依賴性問題。
-
支援向量機 (Support Vector Machine, SVM)
-
概念:SVM 是一種非常常用且強大的分類器。它透過找到一個能最大化「超平面」與最近資料點之間距離的最佳超平面,將資料劃分為不同的類別。定義超平面的這些點被稱為支援向量。
-
優勢:SVM 是一種強大的分類演算法,特別適用於解決二分類問題。
-
隨機森林 (Random Forest)
-
概念:這是一種強大的組合式學習 (Ensemble Learning) 演算法,也稱作自舉匯聚 (Bagging)。它透過從訓練資料中隨機抽取多個樣本,並針對每個樣本建立獨立的模型(通常是決策樹)。對新資料進行預測時,它會將所有模型的預測結果進行平均或投票,以得到更準確的最終預測。
-
優勢:隨機森林在創建樹的過程中加入了隨機性,使得每個模型都獨特且準確。結合多個模型的預測可以獲得比單一模型更好的結果。
-
Boosting
-
概念:Boosting 是一種組合方法,它透過結合多個弱分類器來創建一個強分類器。它會循序建立模型,每個新模型都會試圖修正前一個模型的誤差,直到達到滿意的預測效果。
-
AdaBoost:是Boosting演算法中一個成功的範例,特別適用於二分類問題。它與弱決策樹一起使用,會根據每個訓練樣本的預測性能來調整其權重,難以預測的樣本將被賦予更高的權重,以確保後續的模型能更專注於這些樣本,從而提升整體性能。由於它重點關注修正錯誤,因此在處理資料前移除離群值非常重要。