機械学習においてデータの表現はとても重要。
- スケール変換
- 特徴量の組み合わせ
- 特徴量の学習方法
など、表現する手段はたくさん。
けれど全部の処理を実行することは大変。
そこで、機械学習で行われたデータ変換、モデル実行など複数の処理を1つなぎにまとめてくれる実行を簡単に行う方法として、【Pipelineクラス】を使う。
##Pipeline
機械学習の中で行われる処理をすべてscikit-learnの1つのEstimatorに格納できる。
Pipelineクラスは前処理ステップとクラス分類器などの教師あり学習モデルと組み合わせる時によく使われる。
たとえば
・スケール変換を行った後にGridSearchCVを用いてSVCのパラメータをより良くしようと考えた。
上記のような複数の処理が行われる場合、データ分割を先に行う必要性がある場合がある。
そのためにPipelineを用いて先に複数の処理をくっつけて前処理のパラメータの調整ができる。
###Pipelineを用いたグリッドサーチ
これも他のEstimatorを同じように行えばOK。
一点、個々のパラメータに対してパイプラインのどのステップに属すか指定する必要あり。
Pipelineクラスが使えるところ
・前処理
・クラス分類
・任意個数のEstimatorの連結
Estimatorを直結させる条件は、transformメソッドが定義されていること。
次の処理で使うデータの準備を行わせるため。
Pipelineは
・scikit-learnのインターフェース、fit、predict、transformを持つPhythonオブジェクトにまとめてくれる
・特徴量抽出、前処理、モデルの正しい組み合わせの試行が簡単になる
といった特徴があります。
以上、大変便利な機能です。
まとめるということは適切な評価のためにとても大事で、コードが簡潔になり、ミスが少なくなる効果があります。
##参考文献
・Pythonではじめる機械学習ーscikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
(著者 Andreas C.Muller、Sarah Guido 発行所 株式会社オライリー・ジャパン)
・【python】sklearnのPipelineを使うとできること
(https://www.haya-programming.com/entry/2018/02/22/234011 2018/10/25閲覧)