Google Cloud の BigQuery ML 環境をベースにした「特徴選択と特徴量エンジニアリング」の戦略を体系的に整理します。この知識は、機械学習モデルの精度向上・計算効率の最適化・スケーラビリティの担保に不可欠です。
🧩 1. 特徴量エンジニアリングの目的
目的 | 説明 |
---|
モデル性能の向上 | 意味のある新しい特徴量の作成により、モデルの精度を高める。 |
データのスケーラビリティ | 一貫した処理・自動化されたパイプラインにより、大規模データへの対応を強化。 |
学習効率の向上 | 無駄な特徴を削減し、学習コストを下げる。 |
🔧 2. BigQuery ML における主要なエンジニアリング手法
2.1 欠損値への対応
- 方法: SQLベースで
IFNULL()
などの関数を活用
- 注意点: 欠損値処理は予測精度に直結するため、事前処理で徹底的に対策
2.2 カテゴリカルデータの変換
手法 | 概要 | 適用場面 |
---|
One-Hot Encoding | 各カテゴリを0/1の列に展開 | 少数カテゴリ |
Label Encoding | ラベルを数値に変換 | 順序付きカテゴリ |
Feature Hashing | 高カーディナリティカテゴリを効率的に表現 | 大量のユニーク値がある場合(例:郵便番号) |
🧠 3. 特徴選択(Feature Selection)
3.1 正則化による選択
- Lasso回帰(L1正則化)
- 重要でない特徴の係数をゼロにする
MODEL_TYPE='linear_reg'
, L1_REG
を指定
3.2 Feature Importance Metrics
- 方法:
ML.FEATURE_IMPORTANCE
関数で重要度を算出
- 目的: 予測精度に寄与する特徴量の可視化と選別
🧪 4. 特徴量のスケーリングと変換
処理 | BigQuery ML内での対応 | 備考 |
---|
Standard Scaling | ❌非対応 | Dataflow等で前処理が必要 |
正規化(Normalization) | ❌非対応 | 外部パイプラインで実施 |
🧬 5. 新たな特徴量の生成
- SQLによる派生特徴量の生成
- 例: 売上 = 単価 × 数量
- 実装:
CREATE MODEL
で TRANSFORM
を活用(SQLで表現可能)
- Feature Crosses
- 複数カテゴリカル特徴の掛け合わせ
- 特定の組み合わせパターンの意味合いを捉える
🤖 6. 自動化とパイプライン化
方法 | 内容 | 利点 |
---|
Dataflow + Apache Beam | 前処理パイプライン構築 | 一貫性と再現性の担保 |
Vertex AI Pipelines | 特徴量処理・モデル学習の自動化 | スケーラブルなMLワークフロー構築 |
⚠️ 7. 注意すべき非対応機能
機能名 | 状況 | 代替手段 |
---|
PCA(主成分分析) | ❌未対応 | 手動で相関の高い特徴を削除する等 |
Recursive Feature Elimination (RFE) | ❌未対応 | LassoやFeature Importanceで代替 |
ハイパーパラメータチューニング | ❌未対応 | 外部ツール(Vertex AI等)を使用 |
※ 現在のBQMLはPCAにネイティブ対応しています
- 過去(〜2022年頃まで):BQMLにはPCA(主成分分析)は未対応でした。
- 現在(2023年〜):BQMLは CREATE MODEL で MODEL_TYPE=’pca’ を指定することで、ネイティブにPCAモデルを構築可能になっています。
✅ 試験対策のためのまとめ
試験フォーカス | 警告アラート |
---|
欠損値処理・特徴量変換・SQLによる生成 | PCAやRFEは BigQuery ML に直接は存在しない |
正則化(Lasso)やFeature Importance | 正規化・スケーリングはBigQuery ML内では未サポート |
Feature Hashingや自動化パイプライン構築 | k-means は欠損値処理・次元削減には不向き |
📌 おすすめの学習順序(習得ステップ)
- SQLによる特徴量生成
- 欠損値処理とカテゴリ変換
- Lasso回帰・Feature Importanceの理解
- Feature Crosses・Feature Hashingの応用
- Dataflow/Vertex AIによる自動化