TL;DR HW1 以 800k 年冰芯溫度資料做線性迴歸、核迴歸與簡易神經網路,先掌握三種模型的訓練與驗證方法,為接下來的分類與深度學習鋪路。
目錄
⚠️ 版本:以 CS181 2026 HW1 為主,2025/2024/2023 為備援(同樣資料、相同作業題目,只是截止日與配分略有差異)。
TL;DR
HW1 以 800,000 年冰芯溫度 (earth_temperature_sampled_train.csv / *_test.csv) 實作 三條迴歸路徑:
- 線性最小平方法 (OLS) – 直接矩陣求解
w = (XᵀX)⁻¹Xᵀy - 徑向基函數 (RBF) Kernel Regression – 以
γ控制平滑度,使用K = exp(-γ‖xᵢ-xⱼ‖²) - 簡易前饋神經網路 (MLP) – 兩層 ReLU + MSE,使用 Adam 優化
完成三題後,你會得到 三條不同曲線(線性、平滑核、非線性 NN)在同一張圖上比較,能直接看出模型複雜度對預測的影響,為 HW2 Classification 與 HW3 NN 打下基礎。
為什麼 HW1 值得單獨寫篇導讀
- 資料規模:傳統 HW0 僅兩點,HW1 把 資料量擴到 800k,讓矩陣運算與 kernel 計算的時間/記憶體成本成為真正的學習目標。
- 模型序列:CS181 設計上把 線性 → 核 → NN 作為三層遞進,每層都保留了 同樣的 MSE 目標,所以了解它們的差異的最佳方式就是「同一資料同一指標」直接比較。
- 評分標準:
HW1佔 11%(與 HW2‑HW6 同),分成 程式、報告、圖表 三塊;若在任何一條路徑上卡住,都會直接影響後續模型選擇和超參數調校。
資料簡介與取得方式
CS181 2026 HW1 把 冰芯溫度 放在
data/earth_temperature_sampled_{train,test}.csv(每行year, temperature)
train包含 1950‑2000 年的 5500 筆樣本(已抽樣),test為 5500 筆未見樣本,用於最後測試。檔案大小 ≈ 1.2 MB,可直接
wget https://raw.githubusercontent.com/harvard-ml-courses/cs181-s26-homeworks/main/hw1/data/earth_temperature_sampled_train.csv下載。數據來源:Jouzel et al. 2007 冰芯測年溫度重建(公眾資料集)。
作業題目概覽(三題)
1️⃣ 線性最小平方法(OLS)
- 建立
X為[[1, year], …](截距 + 年份) - 用 閉式解
w = (XᵀX)⁻¹ Xᵀ y計算係數 - 計算 MSE、RMSE 並畫出 預測 vs. 真值(
matplotlib) - 實作
ols_fit(X, y)、ols_predict(w, X),提交.py與pdf報告
2️⃣ 徑向基函數 Kernel Regression
- 使用 RBF kernel
K(i,j) = exp(-γ * (year_i - year_j)^2),γ由作業給定或自行搜尋(logspace(-4, 2, 7)) - 求解 核迴歸
α = (K + λI)⁻¹ y(λ為正則化) - 同樣畫出 核迴歸曲線,比較 OLS 的線性與 kernel 的平滑程度
3️⃣ 前饋神經網路(MLP)
- 建立兩層 MLP:
input → Linear(1, hidden) → ReLU → Linear(hidden, 1)(建議hidden=64) - 使用 Adam(
lr=1e-3)訓練 30 epoch,記錄 訓練 loss 與 驗證 loss(使用test作驗證) - 輸出 訓練曲線、測試 MSE,並在同圖上疊放 OLS 與 Kernel 曲線,形成三條模型的視覺對比
90 分鐘自測步驟(做完 HW1 前的「預熱」)
- 資料載入:用
pandas.read_csv讀train、test,檢查df.head()與df.describe()是否與文件說明相符。 - OLS:手寫
X,y,跑np.linalg.inv(X.T @ X) @ X.T @ y,確認 係數 與 MSE,畫圖檢查 殘差分布(殘差應該隨機、無明顯趨勢)。 - Kernel:先跑
γ=0.01、λ=1e-3,畫出 核迴歸曲線,觀察是否比 OLS 更平滑(若過度平滑,減小γ)。 - NN:跑
torch.nn.Linear(或tensorflow.keras)的 最小模型,只跑 5 epoch 看是否能下降;如果 loss 不下降,檢查 learning rate、標準化 year(year_norm = (year-mean)/std)。 - 比較:將三條曲線同圖(
matplotlib)疊加,寫下 哪條曲線在 test set 上 MSE 最低,以及 哪條模型最符合你的直覺。
小技巧:在
PythonREPL 中import seaborn as sns; sns.set_style('whitegrid')能讓圖表更好看,提交報告時直接plt.savefig('hw1-plot.png')。
與後續週的銜接
- HW2 Classification 會把 二元分類 的邏輯回歸與 Gaussian NB 交叉驗證,基礎的 特徵縮放 與 模型評估 概念都從 HW1 的 MSE / RMSE 延伸到 accuracy / ROC。
- HW3 Neural Networks 深入 CNN、RNN,在此之前已經完成 MLP 的基本訓練流程,方便直接升級到更深層結構。
- HW4 Transformers 會把 attention 視為 核函數 的高階形式,這裡的 RBF kernel 為 attention 的概念預熱。
參考資料
- CS181 2026 HW1 (GitHub)
- CS181 2025 HW1 (GitHub)(同題目)
- Jouzel et al. 2007 Ice Core Temperature Reconstructions (PDF)
- CS181 textbook – Chapter 5: Linear Regression & Kernel Methods
- MML Book – Chapter 4: Kernel Methods
- PyTorch Documentation – torch.nn.Linear, torch.optim.Adam
- NumPy Linear Algebra –
np.linalg.inv
Glossary
Loading...