目次:
- 学習曲線の学習
- クロスバリデーションを正しく使用する
- 正しいエラーまたはスコアメトリックの選択
- 最適なハイパーパラメータの検索
- 複数のモデルのテスト
- 平均化モデル
- 積み重ねモデル
- バイアスがまだモデルに影響していると思われる場合は、モデルのパフォーマンスを向上させる新しいフィーチャーを作成するしかありません。新しい機能はすべて、ターゲットレスポンスの推測を容易にします。
- 推定分散が高く、アルゴリズムが多くの機能に依存している場合は、より良い結果を得るためにいくつかの機能をプルーニングする必要があります。このコンテキストでは、予測値が最も高いものを選択してデータ行列のフィーチャの数を減らすことをお勧めします。
- 以前の提案をすべて試した後も、予測の分散が大きい場合があります。この場合、唯一の選択肢はトレーニングセットのサイズを増やすことです。新しいデータを提供することでサンプルを増やしてみてください。新しいデータや新しい機能に変わる可能性があります。
ビデオ: AI予測分析ツール「Driverless AI」商品需要予測を自動で最適化 2024
機械学習アルゴリズムがPythonやRを使って得られたデータから学習を終えたので、あなたはあなたの考えを熟考しています。あなたのテストセットの結果とあなたがそれらを改善することができるかどうか、本当に最高の可能な結果に到達したかどうか疑問に思っています。多くのチェックとアクションは、機械学習のパフォーマンスを向上させ、テストセットや新しいデータと同等に機能するより一般的なプレディクタを実現するための方法を示唆しています。この10のテクニックのリストは、機械学習アルゴリズムを使用して達成される結果を改善する機会を提供します。
<! - 1 - >学習曲線の学習
結果を改善するための第一歩として、モデルの問題を特定する必要があります。学習曲線を使用するには、トレーニングインスタンスの数を変更するときにテストセットに対して検証する必要があります。サンプル内のエラーとサンプル外のエラーの間に大きな違いがあるかどうかはすぐにわかります。幅広い初期差は推定分散の兆候です。逆に、エラーが高く類似していることは、偏ったモデルで作業しているという印です。
<! - 2 - >Pythonは、Scikit-learn()関数を使って簡単に学習曲線を描くのに役立ちます。 Revolution Analyticsブログで説明しているように、カスタム関数でRを使っても同じ結果を簡単に得ることができます。
クロスバリデーションを正しく使用する
クロスバリデーション(CV)の見積もりと結果との大きな違いが、テストセットまたは新鮮なデータに現れる一般的な問題です。この問題は、クロスバリデーションに何か問題が生じたことを意味します。 CVが良いパフォーマンスの予測値ではないという事実以外にも、この問題は、誤解を招くインジケータが原因で問題を正しくモデル化できず、結果が不十分であることを意味します。
<! - 3 - >クロスバリデーションは、実行するステップが正しいときにヒントを提供します。重要ではありますが、重要ではないことですが、CV推定値はサンプル外の誤差測定値を正確に再現します。しかし、モデリングの決定により、CVの見積もりがテスト段階での改善または悪化を正しく反映していることが重要です。
- スヌーピング
- 誤ったサンプリング
Pythonは層別kフォールドCVサンプラーを提供しています。 Rは、引数としてyパラメータを指定すると、キャレットライブラリのcreateFoldsメソッドを使用してサンプルを階層化できます。
正しいエラーまたはスコアメトリックの選択
平均エラーに基づく学習アルゴリズムを使用してメジアンエラーに基づいてエラーメトリックを最適化しようとしても、最適化プロセスを管理しない限り、最良の結果は得られません。あなたが選んだメトリックに賛成するファッション。データと機械学習を使用して問題を解決する場合は、問題を分析し、最適化する理想的な指標を決定する必要があります。
例は多くを助けることができます。学術論文や公式の機械学習コンテストから、データとエラー/スコアメトリックの面で特定の問題を慎重に定義することで、それらの多くを得ることができます。目的とデータがあなたと似ているコンテストを探して、要求されたメトリックを確認します。
最適なハイパーパラメータの検索
ほとんどのアルゴリズムは、デフォルトのパラメータ設定を使用して、すぐに使用できます。ただし、さまざまなハイパーパラメータをテストすることで、より良い結果を得ることができます。適切なエラーまたはスコアメトリックを使用して、パラメータが取ることができる可能な値の中からグリッド検索を作成し、結果を評価するだけです。検索に時間がかかりますが、検索結果が向上します。
検索に時間がかかり過ぎると、元のデータのサンプルを使って同じ結果を得ることができます。無作為に選んだ例はほとんどなく、計算量は少なくて済みますが、通常は同じ解決策を示唆しています。時間と労力を節約できる別のトリックは、無作為検索を行うことで、テストするハイパーパラメータの組み合わせの数を制限します。
複数のモデルのテスト
複数のモデルをテストすることをお勧めします。基本的なモデルから始めて、分散よりも偏りのあるモデルをテストします。あなたは、複雑なものに対して単純な解決策を常に優先すべきです。簡単な解決策が優れていることがわかります。
同じチャートを使用して異なるモデルの性能を表すことは、問題を解決するために最良のモデルを選択する前に役立ちます。特別なゲインチャートやリフトチャートで、商業的オファーへの反応など、消費者の行動を予測するために使用されるモデルを配置することができます。これらのチャートは、結果をデシルまたは小さな部品に分割することによって、モデルのパフォーマンスを示します。
あなたのオファーに最も反応する可能性が高い消費者だけに関心があるかもしれないので、最も有望な顧客を予測する上でモデルがどれほど良いかを強調するでしょう。これらのQuoraの回答は、グラフのゲインとリフトの動作を確認するのに役立ちます。ROC曲線とは何ですか?リフトカーブとは何ですか? 。
複数のモデルをテストして、 イントロスペクションする ことで、フィーチャ作成のために変換するフィーチャや、フィーチャを選択したときに残すフィーチャに関する提案を提供することもできます。
平均化モデル
機械学習では、多くのモデルを構築し、さまざまな予測を作成し、すべて異なる予測誤差パフォーマンスで作成します。モデルを一緒に平均化することでより良い結果を得ることができることを知っても驚くかもしれません。原則は非常に簡単です:分散を推定することはランダムなので、多くの異なるモデルを平均化することで、 信号 を向上させ、しばしばそれ自体をキャンセルするノイズを除外することができます。
うまくいくアルゴリズムの結果と、それほどうまくいかない単純なアルゴリズムの結果が混在すると、単一のアルゴリズムを使用するよりも良い予測が得られることがあります。リニアモデルなどのより単純なモデルから得られた貢献度を、グラジエントブーストなどのより洗練されたアルゴリズムの出力結果で平均化したときに、過小評価しないでください。
積み重ねモデル
平均化が働くのと同じ理由で、積み重ねはより良いパフォーマンスを提供することもできます。スタッキングでは、2段階でマシン学習モデルを構築します。当初、この手法では、さまざまなアルゴリズムを使用して複数の結果を予測し、そのすべてがデータに存在する機能から学習します。第2段階では、新しいモデルが学習する機能を提供する代わりに、そのモデルに以前に訓練された他のモデルの予測を提供します。複雑なターゲット関数を推測する場合、2段階アプローチを用いることは正当化される。複数のモデルを一緒に使用し、スマートな方法で乗算の結果を組み合わせることによってのみ、それらを近似することができます。第2段階のモデルとして、簡単なロジスティック回帰または複雑なツリーアンサンブルを使用できます。
Netflixの競争は、異種モデルを積み重ねてより強力なモデルを形成する方法についての証拠と詳細な説明を提供します。しかし、この解決策を実用的なアプリケーションとして実装することは、非常に面倒なことがあります。
フィーチャー・エンジニアリングの適用
バイアスがまだモデルに影響していると思われる場合は、モデルのパフォーマンスを向上させる新しいフィーチャーを作成するしかありません。新しい機能はすべて、ターゲットレスポンスの推測を容易にします。
自動特徴生成は多項式展開または機械学習アルゴリズムのサポートベクトルマシンクラスを使用して可能である。サポートベクターマシンは、計算上高速でメモリが最適な方法で、高次元のフィーチャスペースでより優れたフィーチャを自動的に探すことができます。
しかし、アルゴリズムが学習しようとしているデータの問題を解決するために必要な方法の知識と知識を実際に代用することはできません。あなたは、あなたの知識と世界での物事の仕組みのアイデアに基づいて機能を作成することができます。人類はまだそうすることで無敵であり、マシンはそれらを簡単に置き換えることはできません。
機能とサンプルの選択
推定分散が高く、アルゴリズムが多くの機能に依存している場合は、より良い結果を得るためにいくつかの機能をプルーニングする必要があります。このコンテキストでは、予測値が最も高いものを選択してデータ行列のフィーチャの数を減らすことをお勧めします。
線形モデル、線形サポートベクトルマシン、またはニューラルネットワークで作業する場合、正則化は常にオプションです。 L1とL2の両方は、冗長変数の影響を減らしたり、それらをモデルから削除することさえできます。安定性選択は、有用性の低い変数を除外するL1能力を活用する。この技術は、排除を確認するためにトレーニングデータを再サンプリングする。
安定性選択の詳細については、Scikit-learnウェブサイトの例を参照してください。さらに、linear_modelモジュールでRandomizedLogisticRegressionとRandomizedLasso Scikit-learn関数を使用して練習することもできます。
より多くのデータを探す
以前の提案をすべて試した後も、予測の分散が大きい場合があります。この場合、唯一の選択肢はトレーニングセットのサイズを増やすことです。新しいデータを提供することでサンプルを増やしてみてください。新しいデータや新しい機能に変わる可能性があります。
さらに多くのケースを追加したい場合は、類似したデータがあるかどうかを確認するだけです。新しい機能を追加する場合は、可能であれば、オープンソースのデータソースを探して、データとそのエントリを照合します。新しいケースと新しい機能の両方を得るもう1つのすばらしい方法は、ウェブからデータをスクラップすることです。しばしば、異なるソース間またはアプリケーションプログラミングインターフェイス(API)を介してデータが利用可能である。たとえば、Google APIには多くの地理的情報やビジネス情報があります。