Applied Predictive Modeling

Max KuhnとKjell Johnsonによる"Applied Predictive Modeling"が届きました.一通りパラパラ読んだ段階ですが,現時点での感想を記しておきます.

Applied Predictive Modeling

Applied Predictive Modeling

著者について

著者の一人であるMax Kuhnは米ファイザーのR&D部門に勤務する研究者で,Rのcaretパッケージを開発しています.Rでランダムフォレスト,サポートベクタマシン(SVM),ブースティングなどのアルゴリズムを実行して予測モデルを構築しようとすると,ハイパーパラメータの最適化,属性選択などのタスクをアルゴリズムごとに実行することが必要で,非常に面倒です.こうした問題点を解決するために,caretパッケージではこれらのタスクを統一的なフレームワークによって実行する機能を提供しています.

本書の構成と内容について

本書は大きく4部から構成されています.

第1部では,予測モデルを構築するプロセスについて一通りの説明がされています.データの前処理(属性の選択・除去や離散化,欠損値の扱いなど)や過学習を防ぐためのモデルチューニング等が扱われています.

第2部では,回帰モデルが説明されています.まず,モデル評価について R^2やRMSE等の評価指標などが紹介されています.バイアス-バリアンスのトレードオフについても若干ではありますが,触れられています.その後,PLSやリッジ回帰等を含む線形回帰,ニューラルネットワークSVM・k-近傍法などの非線形回帰,回帰木・ランダムフォレスト・ブースティング・バギングなどの各種手法について説明があります.末尾には,コンクリートの成分比率から圧縮強度を推定する予測モデルを構築する例が載っており,モデル構築を追体験できることでしょう.

第3部では,分類モデルが説明されています.2章と同様に,モデル評価の考え方に始まり,その後,各種の手法の説明があります.16章"Remedies for Severe Class Imbalance"で扱われている不均衡データへの対処は,他書ではなかなかお目にかかれないでしょう.コスト考慮型学習(cost-sensitive learning, 本書中ではcost-sensitive training),オーバーサンプリング,アンダーサンプリング,SMOTEアルゴリズムなどが扱われています.

第4部では,その他の話題が取り上げられています.属性の重要度や選択などです.

caretパッケージでは,第2部と第3部がtrain関数を用いたハイパーパラメータ最適化とモデル評価,第4部がハイパーパラメータ最適化 + 属性選択とモデル評価に該当します.しかし,単にcaretパッケージの紹介にとどまらず,予測モデルを構築するときに検討すべきポイントを豊富な例とともに丁寧に説明しており,多くの実務家の役に立つことでしょう.

どんな読者が対象か

とはいえ,予測を行いたい人すべてに本書をいきなり進められるわけではありません.和書で,以下のような事項を学んでから本書を読むと,得るものが多いと思われます.

  • 各種の予測手法(ランダムフォレスト,SVM,ブースティング,バギング,ニューラルネットワーク,k-近傍法,自己組織化マップ,ベクトル量子化,線形回帰分析,一般化線形モデル,判別分析等)
  • モデル評価方法(クロスバリデーション,ブートストラップ等),評価指標(ROC曲線,AUC,Precision, Recall, Acuuracy等)
  • マルチコなどの属性間の相関が引き起こす問題点と対処方法

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

パターン認識 (Rで学ぶデータサイエンス 5)

パターン認識 (Rで学ぶデータサイエンス 5)

マシンラーニング (Rで学ぶデータサイエンス 6)

マシンラーニング (Rで学ぶデータサイエンス 6)

取り上げて欲しかった話題

本書の完成度はかなり高いと感じていますが,以下のような内容も取り上げてもらえると内容がさらに充実すると思っています.

属性の構築方法(feature construction/engineering)

予測モデルの構築においては,どのような属性を構築するかがモデルの性能にクリティカルに効くことが多いため,属性の構築方法は非常に重要です.例えばユーザのサービス利用を記録したトランザクションログからユーザごとの特徴をどのように表すかなどです,属性の構築方法については,かなりドメイン依存だとは思いますが,分析者のヒントになるような説明があれば実践的だと感じました.

属性がカテゴリ変数のときの扱い

属性がカテゴリ変数のとき,水準の数が多いと計画行列がスパースになり,ほとんど予測に役立たなくなる可能性があります.このような問題に対する対処方法は実践的にも結構重要だと感じています.

また,実務では,例えば性別が男性と女性で別々のモデルを構築することがあります.この点についても,ドメイン依存かつ実務での適用方法にも依存するものだとは思いますが,モデル構築の指針のようなものが提示されていると良いのではないかと思いました.

参考文献