簡介
這是一篇非常重要的文章,因為它可以幫助你克服最大的心理障礙:「知道理論但從未訓練過任何模型」。本文的目標是讓您手動擬合您的第一個模型、測量結果,並了解為什麼基線始終是每個嚴肅的 ML 項目中的強制性步驟。
課程目標
- 火車首先使用 scikit-learn 建模
- 了解訓練/測試分離的工作原理
- 了解如何建立基準並與機器學習模型進行比較
1. 範例問題:預測房價
我們假設我們有由以下組成的房屋數據:
- 面積
- 房間號
- 房屋年齡
- 區
- 售價
在這個問題中:
X是特徵集y是房價
這是一個回歸問題,因為輸出是實數。
2.什麼是基線?
基線是用作地標的最簡單選項。
房價預測範例:
- 基線1:總是猜測訓練集的平均價格
- 基線 2:始終猜測中間價格
如果 ML 模型不優於基線,則沒有理由使用複雜模型。
3. 訓練/測試分割
我們將數據分為兩部分:
train: 學習模型test:評估未見過的數據
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
的意義 random_state=42 是讓你和其他人再次運行並得到相同的結果。
4. 第一個線性迴歸模型
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
df = pd.read_csv('data/raw/houses.csv')
features = ['dien_tich', 'so_phong', 'tuoi_nha']
X = df[features]
y = df['gia']
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)
mae = mean_absolute_error(y_test, pred)
print('MAE:', mae)
最重要的是要理解:
fit()是模型從訓練資料中學習的時候predict()是模型預測新資料的時間- 指標告訴我們模型有多好
5. 測量基準進行比較
baseline_pred = [y_train.mean()] * len(y_test)
baseline_mae = mean_absolute_error(y_test, baseline_pred)
print('Baseline MAE:', baseline_mae)
print('Model MAE:', mae)
如果 Model MAE < Baseline MAE,模型創造了價值。
6. 為什麼選擇MAE?
對於迴歸,常見的指標有:
- MAE
- 均方誤差
- 均方根誤差
- $R^2$
對於初學者來說,MAE 是最容易理解的指標,因為它代表問題正確單位的平均誤差。
例如:
- MAE=0.2.5億意味著平均模型偏差約為2.5億。
7.第一個模型不需要很強
許多人只是覺得線性回歸很簡單,所以他們想跳過它並切換到 XGBoost。這是錯誤的學習節奏。
開始的理由很簡單:
- 易於調試
- 易於解釋
- 易於檢測數據錯誤
- 對以下模型有思考基線
8. 檢查表正確讀取結果
訓練結束後,不要只看指標數字就下結論。問:
- 模型是否比基線更好?
- 該指標對於問題是否正確? 3.測試數據是否代表真實數據?
- 是否有色譜管洩漏?
9. 一個非常短的分類變體
如果問題是分類,則程式碼結構幾乎相同,只是模型和指標改變了。
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
clf = LogisticRegression(max_iter=300)
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
print('Accuracy:', accuracy_score(y_test, pred))
這可以幫助您了解如何將相同的工作流程應用於許多不同的問題。
練習練習
- 為回歸問題建立基線。
- 訓練線性迴歸模型。
- 比較基準和模型之間的指標。
- 寫出 3 個結論性句子:模型是否值得保留,以及為什麼。
常見錯誤
- 評估火車組本身的模型。
- 不要與基線進行比較。
- 在不理解其實際意義的情況下使用指標。
完成標準
- 自訓練第一個模型
- 創建合理的基線
- 解釋為什麼模型比基線好或更差