【要約】材料データの Scaler/変換——X と y を混同しない [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
機械学習エンジニアが、外れ値を含む材料科学の表データを扱う際、前処理の選択を誤り精度を低下させる問題がある。特に、特徴量Xと目的変数yに対して、どの変換を適用すべきかの判断基準が曖昧なケースが多い。具体的には以下の課題が挙げられる。
- ・単位や桁が異なる特徴量が混在し、距離ベースのモデルが特定の軸に支配される。
- ・外れ値を含むデータに対し、平均と標準偏差を用いるStandardScalerを適用すると、インライアの分散が潰れる。
- ・残差が予測値に応じて拡大する不等分散に対し、誤ってXの変換で対処しようとする。
// Approach
筆者は、スケーリング(線形変換)と分布変換(非線形変換)を明確に分離し、適用対象をXとyで使い分けるアプローチを提唱している。モデルの特性とデータの性質に基づき、以下の手順で処理を構造化する。
- ・特徴量Xには、単位の統一と外れ値対策としてRobustScalerを第一候補とする。
- ・目的変数yには、残差の安定化を目的にlog1pやBox-Coxなどの非線形変換を適用する。
- ・モデルの特性に応じた使い分けを行う。距離・正則化を用いるモデル(kNN, SVM等)ではスケーリングが必須だが、木系モデル(RF, GBDT)では原則不要とする。
- ・評価時には、変換したyを必ず元の単位に戻してRMSE等を算出する。
// Result
擬似データを用いた検証により、外れ値が存在する条件下でのkNNにおいて、StandardScalerは未処理よりもRMSEが悪化(35 $\rightarrow$ 86)することが示された。一方で、RobustScalerを用いることでRMSEを34まで改善できる。また、目的変数yにlog変換を適用し、予測後に逆変換を行うことで、RMSEを3.51から0.44へと劇的に改善できることが実証された。
Senior Engineer Insight
> 実務において「とりあえずStandardScaler」という慣習は、外れ値を含む実データでは極めて危険である。特に距離計算を伴うモデルでは、スケーリングの失敗がモデルの構造的欠陥に直結する。計算コストの観点ではRobustScalerの優位性は高い。また、データリークを防ぐため、必ずPipelineを用いてCVの各fold内でfitを行う設計を徹底すべきである。