ディープラーニングと勾配ブースティング:いつ使用するか


30

大きなデータセットに大きなデータの問題があります(たとえば、5,000万行と200列)。データセットは、約100の数値列と100のカテゴリ列、およびバイナリクラス問題を表す応答列で構成されます。各カテゴリ列のカーディナリティは50未満です。

ディープラーニングメソッドまたはアンサンブルツリーベースのメソッド(勾配ブースティング、アダブースト、またはランダムフォレストなど)のどちらを使用すべきかをアプリオリに知りたい。ある方法を他の方法よりも判断するのに役立つ探索的データ分析や他の手法はありますか?


2
データプロパティについてある程度の直感がない限り、最終的には両方のオプション(おそらく500,000行のみ)と相互検証を検討することになります。しかし、おそらくあなたはその直感を得るのに役立つ視覚化や他の分析があります。
ニールスレーター14年

1
今週、実際のデータに関する私自身の研究のために、実際に大きなモデル比較を行うことを計画しています。結果を少し整理して、ここに投稿します。:また、少なくとも1人のCSの学生が質問に研究しているacademia.edu/3526056/...
shadowtalker

1
@NeilSlater Idその直観がどうあるべきか/できる/すべきであるかについての答えを見たい
シャドウトーカー

1
私はまだあなたの元の質問に短いコメントを入れるほど十分な評判がありません、そして、これは本当に答えではありません。いずれにせよ、私はこの論文がこの問題にかなり関連すると思うと言いたかった:フェルナンデス・デルガド、M。、セルナダス、E。、バロ、S。、およびアモリム、D。(2014)。実世界の分類問題を解決するために数百の分類器が必要ですか?Journal of Machine Learning Research、15、3133–3181。dl.acm.org/citation.cfm?id=2697065
マテオス

ある方法を他の方法よりも判断するのに役立つ探索的データ分析や他の手法はありますか?一般的な場合、「無料昼食定理なし」がこれを証明しています。しかし、正しい方向に導く可能性のあるヒューリスティックがあります。例:scikit-learn.org/stable/tutorial/machine_learning_map/…-
サイモン

回答:


32

なぜこれらの2つのアプローチに限定するのですか?彼らはクールだから?私は常に単純な線形分類子\リグレッサーから始めます。したがって、この場合は、データのサイズに起因するスパース性を活用できるアルゴリズム実装を使用した線形SVMまたはロジスティック回帰が望ましいです。そのデータセットでDLアルゴリズムを実行するには長い時間がかかります。通常、画像やテキストなどのデータに階層構造がある特殊な問題については、深層学習のみを試みます。多くの単純な学習問題ではやり過ぎであり、学習には多くの時間と専門知識が必要です。また、DLアルゴリズムのトレーニングは非常に遅くなります。さらに、5,000万行あるからといって、良い結果を得るためにデータセット全体を使用する必要があるわけではありません。データに応じて、数100,000行または数百万行のサンプルで良い結果が得られる場合があります。小さなサンプルと線形分類器を使用して簡単に始め、結果が満足のいくものでない場合はそこからさらに複雑になります。少なくともそのようにして、ベースラインを取得します。多くの場合、ほとんどのタスクでより洗練されたモデルを実行する単純な線形モデルを見つけたので、常にそこから始めたいと思います。


4
シンプルなモデルから始めてサブサンプリングするための+1
Matt

スパースデータにsvmを使用することに同意しますが、svmがこのような巨大な次元のデータセットをトレーニングするのに非常に時間がかかるとは思わないでください!
blitu12345

いいえ、特にスパースで線形カーネルを使用する場合はそうではありません。ただし、多数の行で問題が発生する可能性があります。いずれにせよ、DLモデルよりもはるかに高速です。ただし、ロジスティック回帰も推奨していることに注意してください。
サイモン

私の主なポイントは、単純な線形モデルから始めることです。完全なデータセットを使用することすらありません。優れたパフォーマンスを得るためにデータセット全体が必要になることはほとんどありません。たとえば、100,000行と数百万行を使用する場合、精度に大きな違いがあるとは思いません。
サイモン

+1は、データに階層構造が存在するスペシャリストの問題のディープラーニングを試すためのものです
eric2323223

4

他の回答に加えて(そしてコメントにいくつかの良いリンクがあります)、それは問題が何であるか、あなたが答えたい質問の種類に依存します。自分の経験に基づいてしか提案できないので、分類タスクの場合、データセットのクラスバランスに基づいて、可能な方法を厳しく制限できます。

クラスの不均衡が約1:10を超えると、ほとんどの分類方法が機能しなくなります。ランダムフォレストと多分ニューラルネットに基づくメソッドが残っています(まだ試していません)。私は1:500から1:1000の範囲のクラスバランスで作業し、ダウンサンプリングもアップサンプリングも機能しないことを発見しました。幸いなことに、私のデータセットは200個の変数による6mlnの観測のみであり、妥当な時間内にセット全体でブーストされたツリーを実行できます。

あなたの質問に直接答えるには:

  • 答えたい質問の束を考え出し、分類の場合は、ターゲット変数のクラスバランスを確認する必要があります。

  • すべてのデータの欠損値の分布(数学的な意味ではない)を確認し、見つけたものを文書化する必要があります。一部のMLメソッドは欠損値を使用しても問題ありませんが、そうでない場合は、データ代入(独自のルールとガイドラインと問題がある)を調べる必要があります。


1
class_weight =“ balanced”を使用してsklearnからSGD分類器を試してください
Diego

4

私の観点からすると、500万のインスタンスでは、一般化の限界(素人の用語での優れたモデル)を得るには多くのツリーが必要です。これが問題でない場合は、問題に対処してください。正確な答えは問題の性質に依存しています。GBTは、特に、カテゴリ、数値などの機能タイプが混在している場合に適した方法です。さらに、ニューラルネットワークと比較して、調整するハイパーパラメーターの数が少なくなっています。したがって、最適な設定モデルを使用する方が高速です。もう1つは、並列トレーニングの代替です。優れたCPUを使用して、複数のツリーを同時にトレーニングできます。結果に満足できない場合は、ニューラルネットを使用してください。これは、モデルがより広範囲になり、データを通じて高次の情報を学習する必要があることを意味します。これは、他の学習アルゴリズムと比較したNNのおかげです。


4

@Simonがすでに言ったことの行に:

  1. ディープラーニングアプローチは、視覚、音声、言語のモデリングの問題を解決するのに特に役立ちます。機能のエンジニアリングは難しく、多くの労力が必要です。
  2. 機能が明確に定義されており、機能の相互作用などのみが必要なため、アプリケーションには当てはまらないようです。
  3. 現在、ディープラーニングモデルには多くのコンピューティングリソースと科学者によるコーディングの時間を要するため、非ディープラーニングアプローチを選択することをお勧めします。

あなたの問題にとって、努力と利益のトレードオフは、ディープラーニングにとって有利ではないようです。DLはやりすぎだろう


1

このような大規模なデータセットがある場合は、統計および機械学習のモデリングテクニックを使用できます。他の人が示唆したように、私はデータから数百万のランダムなサンプルを取り、それで遊ぶこともお勧めします。これは分類の問題であるため、最初に単純な分類手法を使用してから、後でより複雑な分類手法を使用します。ロジスティック回帰は、開始するのに最適です。

生成モデルも試してみる必要があることを付け加えたかった。Naive Bayes分類器は、最も単純な確率的分類器の 1つであり、多くのタスクでサポートベクターマシンのような多くの複雑な方法よりも優れています。あなたは見ることができます。この NBの単純な実装と、このロジスティック回帰へのNBの比較のためにリンク。

単純ベイズ(NB)分類器をベースラインモデルとして構築し、サポートベクターマシン(SVM)や多層パーセプトロン(MLP)などの機械学習手法を使用できます。ここでのトレードオフは、NBがMLPより計算上安価であるため、MLPからのより良いパフォーマンスが望まれることです。

正確なクエリに対応:ディープラーニングと勾配ツリーブースティングは、データ内のあらゆる種類の関係をモデル化できる非常に強力な手法です。しかし、単純なロジスティック回帰またはNBが望ましい精度を与えている場合はどうでしょう。そのため、最初に簡単なテクニックを試し、ベースラインのパフォーマンスを確保することをお勧めします。その後、複雑なモデルを探してベースラインと比較できます。

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