Last Updated on August 17, 2020
機械学習の予測モデリングの性能はデータ次第であり、データはモデリングのための準備の仕方次第でどうにでもなるのです。
データ準備に対する最も一般的なアプローチは、データセットを研究し、機械学習アルゴリズムの期待値を確認し、次に、アルゴリズムの期待値に最も合うように生データを変換するために最も適切なデータ準備技術を慎重に選択することです。 これは時間がかかり、高価で、膨大な専門知識を必要とします。
データ準備の代替アプローチは、一般的でよく使われるデータ準備手法のスイートを生データにグリッド検索することです。 これは、データ変換を検索および調整されるモデリングパイプラインの別のハイパーパラメータとして扱う、データ準備の代替理念である。
このアプローチは、計算コストはかかるが、データ準備に対する従来の手動アプローチよりも専門知識を必要としない。
このチュートリアルでは、表形式データのデータ準備にグリッド検索アプローチを使用する方法を学びます。
- グリッド検索は、変換がモデリング パイプラインのハイパーパラメーターとして試される表形式データのデータ準備に対する代替アプローチを提供します。
- 標準的な分類データセットに対するベースラインよりもモデル性能を向上させるために、データ準備のためのグリッド検索方法を使用する方法。
- モデル性能をさらに向上させるために、データ準備方法のシーケンスをグリッド検索する方法。
Kickstart your project with my new book Data Preparation for Machine Learning, including step-by-step tutorials and the Python source code files for all examples.
Let’s get started.
How to Grid Search Data Preparation Techniques
Photo by Wall Boat, some rights reserved.
チュートリアルの概要
このチュートリアルは3つのパートに分かれています。
- データ準備のためのグリッド検索テクニック
- データセットとパフォーマンスのベースライン
- ワイン分類データセット
- ベースラインモデルのパフォーマンス
- データ準備へのグリッド検索アプローチ
データ準備へのグリッド検索テクニック
データ準備は難しい場合があります。 最もよく規定され、実行されるアプローチは、データセットを分析し、アルゴリズムの要件を確認し、アルゴリズムの期待に最も合うように生データを変換することです。 これは効果的ですが、時間がかかり、データ分析および機械学習アルゴリズムに関する深い専門知識が必要になる場合があります。 別のアプローチとして、入力変数の準備をモデリング パイプラインのハイパーパラメーターとして扱い、アルゴリズムおよびアルゴリズム構成の選択とともにそれを調整することがあります。 あるいは、「絶対に必要」と見なされる入力変数のデータ変換がないにもかかわらず、良好なパフォーマンスまたは優れたパフォーマンスをもたらすことかもしれません。 これは、パイプラインにおけるデータ準備手法のグリッド検索および/またはデータ準備手法のシーケンスを設計することによって達成できます。 このアプローチの利点は、常に良い相対的な結果を与えるモデリング パイプラインの提案につながることです。 最も重要なことは、深い専門知識を必要としない実務家にとって、明白でない、直感的でないソリューションを発掘できることです。 実例を使って、データ準備に対するこのアプローチを検討することができます。 今すぐ 7 日間の無料の電子メール クラッシュ コース (サンプル コード付き) を受講してください。
無料のミニ コースをダウンロードする
データセットとパフォーマンスのベースライン
このセクションでは、まず標準の機械学習データセットを選択し、このデータセットでのパフォーマンスのベースラインを確立することにします。
ワイン分類データセット
このデータセットには、ワインのサンプルの化学組成を記述する13の入力変数があり、ワインを3種類のうちの1つに分類することが要求されます。
データセットについての詳細はこちらをご覧ください:
- Wine Dataset (wine.csv)
- Wine Dataset Description (wine.names)
作業例の一部として自動的にダウンロードされますのでデータセットは必要ありません。
データセットを開いて生データを見てください。
これは、数値入力変数を持つマルチクラス分類予測モデリング問題であり、それぞれが異なる尺度を持つことがわかります。
以下の例は、データセットを読み込み、入力列と出力列に分割し、データ配列を要約します。
例を実行すると、データセットが正しく読み込まれており、13入力変数と1ターゲット変数の179行のデータがあることが確認できます。
1
|
(178, 13) (178,)
|
次に、このデータセットでモデルを評価し、パフォーマンスのベースラインを確立してみましょう。
ベースライン モデル パフォーマンス
生の入力データでモデルを評価することにより、ワイン分類タスクのパフォーマンスのベースラインを確立することができます。
この場合、ロジスティック回帰モデルを評価します。
最初に、データセットをロードする関数を定義し、入力が数値であり、ターゲットがラベルでエンコードされていることを確認するために、いくつかの最低限のデータ準備を実行することが可能です。
次に、関数を呼び出してデータセットをロードし、モデルを定義し、それを評価し、平均と標準偏差の精度を報告することができるようにします。
これを結びつけると、生のワイン分類データセットでロジスティック回帰モデルを評価する完全な例を以下に示します。
例を実行すると、モデル性能が評価され、平均および標準偏差の分類精度が報告されます。
注意: アルゴリズムまたは評価手順の確率的性質、あるいは数値精度の相違により、結果が異なる場合があります。 このケースでは、生の入力データに適合したロジスティック回帰モデルは、約 95.3 パーセントの平均分類精度を達成し、パフォーマンスのベースラインを提供していることがわかります。
1
|
正確さです。 0.953 (0.048)
|
次に、データ準備に対するグリッド検索ベースのアプローチを使用してパフォーマンスを向上できるかどうかを調査します。
データ準備に対するグリッド検索アプローチ
このセクションでは、データ準備に対してグリッド検索アプローチを使用してパフォーマンスを向上できるかを調査できます。
最初のステップは、評価する一連のモデリング パイプラインを定義することで、各パイプラインは 1 つ (または複数) のデータ準備技術を定義し、入力として変換されたデータを取るモデルで終了します。 さまざまなデータ スケーリング方法 (MinMaxScaler や StandardScaler など)、分布変換 (QuantileTransformer や KBinsDiscretizer)、および次元削減変換 (PCA や SVD) を評価します。
次にこの機能を呼び出して変換のリストを取得し、それぞれを列挙して評価およびパフォーマンスを途中報告できます。
実行の最後に、スコアの各セットについて箱ひげ図プロットを作成し、結果の分布を視覚的に比較することができます。
1
2
3
4
|
…
# plot the result
pyplot.boxplot(results, labels=names, showmeans=True)
pyplot.show()
|
これを繋いでワイン分類データセットのグリッド検索データ準備技法の全例を以下に挙げます。
例を実行すると、各パイプラインのパフォーマンスが評価され、平均および標準偏差の分類精度がレポートされます。
注意: アルゴリズムまたは評価手順の確率的性質、または数値精度の違いにより、結果が異なる場合があります。 このケースでは、入力変数の標準化と分位値変換の使用は両方とも、約 98.の分類精度で最良の結果を達成することがわかります。これは、95.3%の分類精度を達成した、データ準備なしのベースラインよりも改善されています。
あなた自身のモデリング パイプラインを get_pipelines() 関数に追加して、その結果を比較することができます。
1
2
3
4
5
6
|
>norm.B>
2
2
2
>std: 0.987 (0.023)
>quan: 0.987 (0.023)
>kbins: 0.968 (0.045)
>pca: 0.963 (0.039)
>svd.Nord: 0.967 (0.029)
>norm: 0: 0.953 (0.048)
|
各データ準備手法の分類精度スコアの分布をまとめた箱ひげ図が作成されています。 標準化変換と分位変換のスコアの分布はコンパクトで非常に似ており、異常値があることがわかります。 この結果は、データセットを標準化することが、おそらくデータ準備や分位点変換などの関連変換において重要なステップであることを示唆しているのかもしれませんし、おそらく電力変換でさえ、1つ以上の入力変数をよりガウス化することによって標準化と組み合わせれば利益を提供するかもしれません。
Box and Whisker Plot of Classification Accuracy for Different Data Transforms on the Wine Classification Dataset
変換のシーケンスを調べて、それらがパフォーマンスの上昇を提供できるかを確認することも可能です。
また、データ スケーリング変換に先行するべき乗変換が、分位値変換の成功から考えて、このデータセットで優れたパフォーマンスを達成できるかどうかを確認することもできます。
この例を実行すると、各パイプラインのパフォーマンスが評価され、平均および標準偏差の分類精度が報告されます。
注意: アルゴリズムまたは評価手順の確率的性質、あるいは数値精度の違いにより、結果が異なる場合があります。 このケースでは、データ スケーリングと電力変換は分位値変換に対して追加の利益を提供しませんが、特徴選択による標準化は 98.7 パーセントから 98.9 パーセントに精度の追加のリフトを提供することを見ることができます。
1
2
|
<7761>std.B.S.><7803><7803><780><780> <380> <780> <3131> <780> <780> <780> <780> <780> <780> <780> <380> <3131> <780> <780> <780 > <780 0.989 (0.022)
>power: 0.987 (0. 0.022)
>power: 0.987 (0. 0.022)023)
|
各データ準備手法の分類精度スコアの分布を要約した箱ひげ図を作成しました。
変換の両方のパイプラインの結果の分布は、外れ値を除いてほとんど広がらずコンパクトであることがわかります。
Box and Whisker Plot of Classification Accuracy for Different Sequences of Data Transforms on the Wine Classification Dataset
Further Reading
このセクションでは、より深く知りたい場合のトピックに関する詳細なリソースを提供します。
Books
- Feature Engineering and Selection, 2019.
- Feature Engineering for Machine Learning, 2018.
APIs
- sklearn.pipeline.Pipeline API.PIPLINE.Pipeline(パイプライン API)。
概要このチュートリアルでは、表形式データのデータ準備のためにグリッド検索アプローチを使用する方法を発見していただきました。
質問はありますか?
以下のコメントで質問していただければ、できる限り回答いたします。
現代のデータ準備のハンドルを握る!
Prepare Your Machine Learning Data in Minutes
…(英語)。
Data Preparation for Machine Learning
このチュートリアルでは、
Feature Selection, RFE, Data Cleaning, Data Transforms, Scaling, Dimensionality Reduction, and much more に関する完全な実行コードとともに自習することができます。…
最新のデータ準備技術を
あなたの機械学習プロジェクトに導入する
中身を見る