業界とKaggleの課題。派手なモデリングよりも多くの観測を収集し、より多くの変数にアクセスすることが重要ですか?


56

タイトルが自明であることを願っています。Kaggleでは、ほとんどの勝者は何百ものベースモデルとスタックを使用して、MSEの数%、精度を圧縮します...一般的に、あなたの経験では、スタックなどの派手なモデリングはどれだけ重要ですか?データのために?


4
すぐに再トレーニング(または新しいデータセットや新しい機能にリターゲット)できる便利な一般化可能なフローが必要なのか、特定のKaggle競合に勝つ(その特定の静的データセットで、漏洩エクスプロイト、「マジック機能」、すべて)。前者の場合、はるかに短いトレーニング時間で、より小さなデータセットで同じ球場精度を得るアルゴリズムは「より良い」です。Kaggleが過度の計算/メモリ要件またはトレーニング時間を罰するようになった場合、または提出スコアの一部としてそれを織り込んだことを想像してください(既にお勧めします)。
smci

2
Rasmus Rotheの「実世界の問題へのディープラーニングの適用」から引用:「[…]実世界のシナリオでは、新しいアルゴリズムが他の方法と比較してパフォーマンスが1%余分に絞り出されることを示すことは重要ではありません。必要なタスクを十分な精度で解決する堅牢なシステムを構築することです。」
beatngu13

回答:


77

背景として、私は12年間小売店の予測店舗 SKU時系列を行ってきました。数百または数千の店舗にわたる数万の時系列。用語が普及する前からビッグデータをやっていると言っているのが好きです。×

私は一貫して、最も重要なことはあなたのデータ理解することであることを発見しました。イースターやプロモーションなどの主要なドライバーを理解していない場合、運命にあります。多くの場合、これは特定のビジネスを十分理解して正しい質問をし、未知の未知のものから未知の未知のもの伝えることになります。

データを理解したら、クリーンなデータを取得する必要があります。私はかなりの数のジュニアとインターンを監督してきましたが、彼らがすべての統計とデータサイエンスのクラスで経験したことのないことの1つは、データにどれだけのがらくたがあるかということでした。次に、ソースに戻って適切なデータを取得するために取得するか、データをクリーンアップするか、単にいくつかのものを捨てる必要があります。実行中のシステムを変更してより良いデータを生成することは、驚くほど困難です。

データを理解し、実際にある程度クリーンなデータを入手したら、いじり始めることができます。残念ながら、この頃には、時間とリソースが不足していることがよくありました。

私は個人的に(「スタッキング」)モデルの組み合わせの大ファンです、少なくとも抽象的な意味では、あまり頻繁にライン交差派手な機能工学、のように領土を-とあなたの愛好家のモデルが、平均してわずかに良い行っても、複雑なモデルでは、本当に悪い予測が悪化することがよくあります。これは私の事業分野での契約を破る人です。1つの本当に悪い予測は、システム全体の信頼をかなり完全に破壊する可能性があるため、優先順位のリストでは堅牢性が非常に高くなっています。あなたのマイレージは異なる場合があります。

私の経験では、はい、モデルの組み合わせは精度を向上させることができます。ただし、最初の2つのステップで本当に大きな利益が得られます。データを理解し、それをクリーニングする(または、最初にクリーンなデータを取得する)ことです。


4
@ bendl、YMMVはマイレージが異なる場合があることを意味します。これより前の文の文は、異なる状況下で多かれ少なかれ真実である場合とそうでない場合があります。
オルフェフ

2
106

2
教室だけの経験を気にしないでください。主に画像認識のような高い信号対雑音比のコンテキストを経験し、神のために同じ方法を採用のような騒々しい社会的プロセスに適用しようとする多くの業界の実践者がいます。
乱暴な均衡

2
@Orphevs言い換えれば、このステートメントは私の状況に過度に適合している可能性があり、うまく一般化されていないかもしれません。:P
JAD

2
(+1)卒業生のデータクリーニングの問題に関しては、正式な教育を受けている間、データクリーニングは悪いことだと考えてしまいがちだったことも注目に値します。つまり、データクリーニングタイプIエラー率に大きく影響する可能性があり(特にクリーニングプロセスに偏りがある場合)、データクリーニングの危険性について教えられました。これらの教訓は間違いではありませんでしたが、特に予測モデリングの場合、私の正式な教育がデータクリーニングの利点を強調しているとは思いません。
クリフAB

42

もちろん、業界全体について話すことはできませんが、私は業界で働いており、Kaggleで競争しているので、POVを共有します。

まず、Kaggleが業界で行われていることと完全に一致しないと疑うのは正しいことです。それはゲームであり、ゲームマンシップの対象となり、多くのクレイジーな制限があります。たとえば、現在実行中のサンタンデール大会では:

  1. 機能名は、その意味を隠すために人為的にハッシュされました
  2. 「トレーニング」セットは人為的に列よりも行数が少なくなるように人為的に制限されていたため、機能の選択、堅牢性、および正則化手法が成功に不可欠です。
  3. いわゆる「テスト」セットは、トレーニングセットとは著しく異なる分布を持ち、2つは明らかに同じ母集団からのランダムなサンプルではありません

誰かが仕事でこのようなデータセットを私にくれた場合、私はすぐに彼らと協力して機能エンジニアリングを提供し、より有用な機能を手に入れることができます。ドメイン知識を使用して、可能性の高い相互作用用語、しきい値、カテゴリ変数コーディング戦略などを決定することをお勧めします。そのような方法で問題にアプローチすることは、データベースエンジニアによって作成された排気ファイルから意味を抽出しようとするよりも明らかに生産的ですMLでのトレーニング。

さらに、特定の数値列がまったく数値ではなく郵便番号であることがわかった場合、米国国勢調査な​​どのサードパーティのデータソースからデータを取得してデータを増やすことができます。または、日付がある場合は、その日のS&P 500終値を含めることができます。このような外部増強戦略には、特定のデータセットの詳細な知識と重要なドメイン知識が必要ですが、通常は純粋なアルゴリズムの改善よりもはるかに大きな見返りがあります。

したがって、業界とKaggleの最初の大きな違いは、業界では(入力データの意味での)機能が交渉可能であることです。

違いの2番目のクラスはパフォーマンスです。多くの場合、モデルは次の2つの方法のいずれかで本番環境に展開されます。1)モデル予測は、非常に大きなデータベーステーブルのすべての行に対して事前計算されるか、2)アプリケーションまたはWebサイトがモデルに単一行のデータを渡し、リアルタイムで返される予測が必要です。どちらのユースケースでも優れたパフォーマンスが必要です。これらの理由により、K-Nearest-NeighborsやExtra Random Forestsのように、予測が遅くなったり、大量のメモリを使用したりするモデルはあまり見られません。対照的に、ロジスティック回帰またはニューラルネットワークは、数回の行列乗算でレコードのバッチを記録でき、適切なライブラリを使用して行列乗算を高度に最適化できます。さらに別のノンパラメトリックモデルを積み重ねると、おそらく+0.001 AUCを取得できますが、予測スループットとレイテンシが大幅に低下するため、そうはなりません。

これまで信頼性の次元にもあります-四つの異なる、最先端のサードパーティのライブラリを積み重ね、言うLightGBMxgboostcatboost、およびTensorflow(上のGPUもちろんのは、)そのMSEで0.01減少はそのあなたを得る可能性がありますKaggleのコンペティションで優勝していますが、何か問題が発生した場合にインストール、デプロイ、デバッグするための4つの異なるライブラリです。ラップトップでそれらすべてを動作させることができれば素晴らしいですが、AWSで実行されているDockerコンテナー内で実行することはまったく別の話です。ほとんどの企業は、これらの種類の展開の問題に対処するためだけに小さなdevopsチームを率いることを望みません。

とはいえ、スタック自体は必ずしも大したことではありません。実際、すべて同じように機能しますが、意思決定境界が非常に異なるいくつかの異なるモデルを積み重ねることは、AUCの小さな隆起と堅牢性の大きな隆起を得る素晴らしい方法です。異種混合アンサンブルにあまりにも多くのキッチンシンクを投げて、展開の問題が発生し始めることは避けてください。


ちょっとした注意点、箇条書き#2は文の終わりに欠けていると思いますか?
mbrig

20

私の経験から、より多くのデータとより多くの機能は、最もファンシーで、最も積み重ねられ、最もチューニングされたモデルよりも重要です。

開催されたオンライン広告コンペをご覧ください。受賞モデルは非常に複雑だったため、最終的にトレーニングに1週間かかりました(業界標準に比べて非常に小さなデータセットで)。その上、積み上げモデルでの予測は、単純な線形モデルでの予測よりも長くなります。同じトピックで、エンジニアリングコストのためにNetflixが1M $アルゴリズムを使用したことがないことを思い出してください。

オンラインデータサイエンスのコンテストは、企業が(ある時点で)収集したデータを使用して、「達成できる最高の精度(またはパフォーマンスメトリック)とは何か」を知る良い方法だと思います。これは実際に解決されている難しい問題であることに注意してください!しかし、業界では、フィールドの知識、ハードウェア、およびビジネスの制約により、通常、「ファンシーモデリング」の使用は推奨されません。


2
確かに、データ収集プロセスは常に進化している場合もあります。これは、現在使用されているアルゴリズムが古くなっていることを意味します(指摘したエンジニアリングコストまたはトレーニング時間に加えて)。したがって、よりシンプルで、高速で、より柔軟なアルゴリズムが必要になります。
トム

4
この投稿の主要なポイントの1つは、「適切な変数選択は常に適切なモデル選択よりも
優先さ

14

スタッキングにより、複雑さが大幅に増加し、解釈可能性が低下します。利益は通常、それを正当化するために比較的小さいです。そのため、アンサンブルはおそらく広く使用されていますが(XGBoostなど)、業界ではスタックは比較的まれだと思います。


1
いい視点ね。私のアプリケーションでは解釈可能性が非常に重要であるため(ストアマネージャーは予測がなぜそうなのかを理解したいので)、解釈が難しいモデルに問題があります。
S. Kolassa -モニカ元に戻し

ステファンの個人的な洞察に感謝します。モデルの複雑さが増すにつれて、解釈可能性が損なわれるか、またはなくなると考えましたが、会社で確実に差し迫っている時間の制約については考えませんでした。ファンシーモデリングは、おそらく(精度が得られる)/(費やされる時間)の最悪の比率を持ちます。
トム

8

私の経験では、優れたデータと機能を収集することははるかに重要です。

私たちが一緒に仕事をしたクライアントは、通常、大量のデータを持っていますが、そのすべてがすぐにエクスポートできる、または扱いやすい形式ではありません。通常、最初のデータバッチはあまり有用ではありません。クライアントと協力して、モデルをより便利にするために必要なデータを把握するのが私たちの仕事です。これは非常に反復的なプロセスです。

多くの実験が行われており、次のモデルが必要です。

  1. 早くトレーニング
  2. 迅速な予測(多くの場合、ビジネス要件でもあります)
  3. 解釈しやすい

ポイント3)は特に重要です。これは、解釈しやすいモデルはクライアントとのやり取りが容易であり、何か間違ったことをした場合にキャッチしやすいためです。


7

以下は、Kaggleであまり取り上げられていないものです。

  • モデル内にあるより多くの変数、および
  • これらの変数と出力の関係が複雑になるほど、

より多くのリスクあなたがそのモデルの寿命にわたって直面することになります。通常、Kaggleコンテストでは時間が凍結されるか、テストセットの値が入る将来の短い時間枠があります。業界では、そのモデルは何年も実行されます。そして、完璧に構築されたとしても、1つの変数がモデル全体を地獄に落とすだけで十分です。競合他社がモデルの複雑さとリスクのバランスを慎重に取っているコンテストを誰も見たくないのですが、担当しているモデルに何か問題が生じた場合、仕事やビジネスの質が低下します。非常に頭の良い人でも免疫はありません。たとえば、Googleインフルトレンドの予測エラーを考えてみましょう。世界は変わり、彼らはそれが来るのを見ませんでした。

OPの質問に対して、「一般的に、あなたの経験では、スタッキングなどの派手なモデリングは、データとデータの機能を単に収集することと比べてどれほど重要ですか?」本当に堅牢なモデリングインフラストラクチャでは、変数の最小限のセットを備えた単純なモデルを使用することをお勧めします。入力と出力の関係は比較的単純です。変数が損失メトリックをほとんど改善しない場合は、そのままにしておきます。それが仕事であることを忘れないでください。「大企業に帰る」インセンティブがあるKaggleコンテストで、仕事以外でキックをゲットしましょう。

1つの例外は、ビジネス状況が特定のレベルのモデルパフォーマンスを要求した場合、たとえば、会社が(おそらくマーケティングで)何らかの利益を得るために競合他社のパフォーマンスに匹敵するか、競合する必要がある場合です。しかし、モデルのパフォーマンスとビジネスゲインの間に線形関係がある場合、複雑さの増加は通常、経済的ゲインを正当化するものではありません(「Netflixがエンジニアリングコストのために100万ドルのアルゴリズムを使用したことはありません」を参照-同じことを@ RUser4512に謝罪論文)。しかし、Kaggleコンテストでは、その追加の利益により、近くのソリューションに合格する際に数百のランクが移動する可能性があります。


3

Gary Kasparovの本Deep Thinkingからの引用である短い回答

賢いプロセスは、優れた知識と優れた技術を打ち負かす

私は主に時系列の財務データと、データの収集、クリーニング、処理、そして問題の所有者と協力して実際に何をしたいかを理解し、機能とモデルを構築して試してみるまでのプロセスを扱っています問題を解決し、最終的にプロセスを遡及的に調べて、次回の改善を図ります。

このプロセス全体は、その部分の合計よりも大きくなります。私は、線形/ロジスティック回帰を使用して「許容可能な」一般化パフォーマンスを取得し、ドメインの専門家と話し合って機能を生成する傾向があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.