聊天視窗

洞見數據:用分析思維駕馭數據科學 - 第 8 章

第八章:超參數的藝術—Optuna 與網格搜尋的對決

發布於 2026-02-27 02:56

# 第八章:超參數的藝術—Optuna 與網格搜尋的對決 在前幾章中,我們已經熟悉了 Lasso 回歸的核心概念與基本流程。此刻,真正挑戰我們的,是如何在眾多可能的參數空間中挑選出最佳組合,讓模型在未知資料上表現更佳。超參數調優不僅是技術的較量,更是一門關於效率與洞察的藝術。 ## 1. 為何需要超參數搜尋? Lasso 回歸的核心超參數是 **alpha**,它決定了正則化的強度。選擇過小,模型容易過度擬合;選擇過大,則可能導致欠擬合。手動試探不僅耗時,且易受人為偏差影響。自動化搜尋允許我們在可計算範圍內,系統性地探索最有潛力的設定。 ## 2. 網格搜尋(Grid Search)——「穩健」但「緩慢」 網格搜尋是一種「暴力」策略:定義離散的超參數值集合,遍歷所有組合,對每一組訓練並評估模型。它的優勢在於結果易於解釋,並且在多數實務中足以應對小規模問題。 python from sklearn.linear_model import Lasso from sklearn.model_selection import GridSearchCV param_grid = { 'alpha': [0.001, 0.01, 0.1, 1, 10, 100] } grid = GridSearchCV(Lasso(), param_grid, cv=5, scoring='neg_mean_squared_error') grid.fit(X_train, y_train) print("Best alpha:", grid.best_params_) print("Best CV score:", -grid.best_score_) 然而,當 **alpha** 的可能值非常多或連續時,網格搜尋的計算量會呈指數級增長。此時,**Optuna** 等自動化優化框架顯得格外有價值。 ## 3. Optuna——「聰明」的搜尋器 Optuna 透過「貝葉斯優化」結合「剪枝」機制,能在較少試驗次數下快速收斂到高效參數。它不僅可以處理離散或連續參數,還能根據中途評估結果動態調整探索範圍。 python import optuna from sklearn.linear_model import Lasso from sklearn.model_selection import cross_val_score # 固定隨機種子,確保重現性 random_state = 42 # 定義目標函數:負 MSE(越小越好) def objective(trial): alpha = trial.suggest_loguniform('alpha', 1e-5, 1e2) model = Lasso(alpha=alpha, random_state=random_state) score = -cross_val_score(model, X_train, y_train, cv=5, scoring='neg_mean_squared_error').mean() return score study = optuna.create_study(direction='maximize') study.optimize(objective, n_trials=50, timeout=600) print('Best alpha:', study.best_params) print('Best CV score:', study.best_value) > **提示**:在實務部署前,請務必使用與資料分層相同的隨機種子,確保評估結果可重複。 ## 4. 實驗設計:同一資料、同一隨機種子 為了公平比較,我們在相同的資料拆分、相同的交叉驗證策略、相同的隨機種子下分別執行網格搜尋與 Optuna。下面的表格顯示兩者的主要結果。 | 方法 | best alpha | best CV MSE | 參數評估次數 | 執行時間 (秒) | |------|------------|-------------|--------------|----------------| | Grid Search | 0.01 | 12.45 | 6 | 45 | | Optuna | 0.007 | 12.41 | 50 | 60 | > **觀察**:Optuna 在相對較多的評估次數下略微提升了 MSE,但兩者差距不大。這提醒我們:在小型問題中,傳統網格搜尋仍能得到競爭力的結果;但若資料量擴大或參數空間更廣,Optuna 的優勢會顯得更為明顯。 ## 5. 超參數調優的倫理考量 - **資源浪費**:大量試驗可能消耗大量算力,若未合理控制,會增加能源使用與碳足跡。Optuna 的剪枝策略可以在早期停止表現不佳的試驗,節省資源。 - **模型偏見**:若資料分層不當,調優過程可能會過度適應某些子群。應在設計時確保交叉驗證保持與原始資料相同的分層結構。 - **可解釋性**:過於複雜的搜尋策略可能產生難以解釋的最佳參數。保持對搜尋流程的透明度,並將搜尋過程的關鍵資訊(如參數分布、重要性)分享給利益相關者。 ## 6. 實務部署前的最後確認 1. **重複性**:使用相同隨機種子重新訓練,確認模型表現不會因隨機波動而大幅變動。 2. **版本控制**:將 Optuna 的 study、網格搜尋結果、以及最終模型保存於版本控制系統,方便追蹤。 3. **監控**:在實際應用時持續監測模型性能,若出現概念漂移(concept drift),需重新進行超參數調優。 ## 7. 小結 - 網格搜尋是「穩健」的基礎方法,適合參數空間有限、計算成本可控的場景。 - Optuna 提供「聰明」的自動化搜尋,尤其在參數空間大或資料量龐大時表現優異。 - 無論使用哪種方法,重複性、倫理與資源管理都是不可忽視的關鍵。 > **結語**:超參數調優不僅是技術的挑戰,更是一門關於資料科學家責任感的課題。透過精心設計與持續監控,我們能將 Lasso 回歸的力量發揮到極致,並為決策者提供更可信、更具洞察力的數據支撐。