実際の機械学習のすべては何ですか?


11

私は機械学習(一部統計も含む)の新人で、しばらくの間、知識(教師あり/教師なし学習アルゴリズム、関連する最適化手法、正則化、いくつかの哲学(バイアス分散のトレードオフなど))を学んでいます。実際の練習がなければ、これらの機械学習のことを深く理解することはできません。

したがって、手書きの数字分類(MNIST)などの実際のデータの分類問題から始めます。驚いたことに、フィーチャラーニング/エンジニアリングなしで、生のピクセル値を入力としてランダムフォレスト分類器を使用すると、精度は0.97に達します。パラメータを調整してSVM、LRなどの他の学習アルゴリズムも試しました。

それから私は迷子になりました、それはあまりにも簡単ですか、または私はここで何か不足していますか?ツールキットから学習アルゴリズムを取得して、いくつかのパラメーターを調整するだけですか?

それが実際の機械学習についてのすべてであるなら、私はこの分野への興味を失います。私はいくつかのブログを数日間考えて読んだところ、いくつかの結論に達しました。

  1. 実際の機械学習の最も重要な部分は、特徴エンジニアリングです。つまり、データが与えられれば、特徴のより適切な表現を見つけます。

  2. どの学習アルゴリズムを使用するか、またパラメータ調整も重要ですが、最後の選択は実験です。

私はそれを正しく理解しているとは思いません。誰かが私を訂正して、実際の機械学習についていくつかの提案をしてくれることを願っています。


1
私はあなたの質問に完全に答えることはできないと思いますが、機能の質が悪いことに加えてアルゴリズム/ツールが不十分である多くの問題があることを安心させたいと思います(私の経験では、社会科学は蔓延しています)両方の状況で)。それだけが問題だとは思いませんが、これまでのプロジェクトのしやすさに不満を感じているようです。

1
@マシュー、はい、私は1つの実際の問題に直面しているときにどこから始めればよいかわからずに迷子になりました。データを分析して性質を調べ、有用な機能を抽出したり、学習アルゴリズムを選択して実行したりできますか?
アボカド2014年

私は100のうち、正常に97回を飛ぶ飛行機に搭乗しません
lcrmorin

回答:


12

実際の機械学習(ML)は、MLを行う目的が何であるかに依存します。状況によっては、強固な前処理と、すぐに使用できる一連のMLメソッドの適用で十分な場合があります。ただし、これらの状況でも、問題が発生したときにトラブルシューティングを行うには、メソッドがどのように機能するかを理解することが重要です。ただし、実際のMLはこれをはるかに超える可能性があり、MNISTはその良い例です。

MNISTデータセットで「優れた」パフォーマンスを得るのは一見簡単です。たとえば、MNISTパフォーマンスに関するYann Le CunのWebサイトによると、ユークリッド距離メトリック(L2)を使用したK最近傍(K-NN)のエラー率も3%であり、標準のランダムと同じです森林。L2 K-NNは、MLアルゴリズムと同じくらい簡単です。一方、Yann、Yoshua、Leon&Patrickの最高の、このデータセットで最初に撮影されたLeNet-4のエラー率は0.7%であり、0.7%は3%の4分の1未満なので、このシステムを手書きの数字を読む練習では、単純なアルゴリズムはそのエラーを修正するために4倍の人間の労力を必要とします。

Yannと同僚が使用したたたみ込みニューラルネットワークはこのタスクに一致しますが、データを理解し、その理解を学習アルゴリズムにエンコードするように努力するほど、これを「特徴エンジニアリング」とは呼びません。

それで、レッスンは何ですか:

  1. すぐに使える方法と優れた前処理を使用して、単純なパフォーマンスベースラインに簡単に到達できます。ベースラインの場所と、このパフォーマンスレベルが要件に対して十分かどうかを確認できるように、常にこれを行う必要があります。ただし、すぐに使用可能なMLメソッドは「壊れやすい」、つまり前処理に驚くほど敏感であることがよくあります。すぐに使えるすべてのメソッドをトレーニングしたら、ほとんどの場合、それらをバギングすることをお勧めします。
  2. 難しい問題を解決するには、ドメイン固有の知識またはより多くのデータ、あるいはその両方が必要です。特徴エンジニアリングとは、ドメイン固有の知識を使用してMLアルゴリズムを支援することを意味します。ただし、十分なデータ、そのデータを利用して複雑な機能を学習できるアルゴリズム(またはアプローチ)、およびこのアルゴリズムを適用する専門家がいる場合、この知識を忘れることができます(例:Kaggle Merckチャレンジ)。また、ドメインの専門家は、優れた機能について誤解している場合があります。そのため、より多くのデータとMLの専門知識が常に役立ちます。
  3. 正確さではなくエラー率を考慮してください。精度が99%のMLメソッドは、精度が98%のMLメソッドの半分のエラーになります。時々これは重要です。

2
+1、どうもありがとう。回答を読んで、機能エンジニアリングを行うためのドメイン固有の知識がない場合は、与えられたデータを使用して機能学習を行うための優れた方法の開発に焦点を当て、さまざまな学習アルゴリズムを試す必要があります。
アボカド2014年

@loganecolssまたは、他の人々が同様のデータに対して行ったことを読んだり、ドメインの専門家と話したりすることもできます。
qdjm 2014年

7

ブログやウェブサイトで見つけた例は、一般的な方法がうまく機能していることがわかっている例だと思います(もちろん、改善できる場合でも)。

私の専門は機能エンジニアリングで、標準のアルゴリズムがまったくうまく機能しないことがよくあります。(私はその分野についての知識はありませんが、それを持っている人と一緒に働くことがよくあります。)

ここに私が6か月間働いた場合の実際の問題があります。100のサンプルと患者の遺伝的価値を表す10000の変数を持つ行列Xと、骨の密度を表すサイズ100 x 1の出力yが与えられます。

どの遺伝子が骨の密度に影響を与えているか教えていただけますか?

今、私は別の問題に取り組んでいます。2000個のサンプルと12000個の変数を含む製造生産データセットがあります。私の上司は、監視なしの方法でこのデータセットから30以下の変数を抽出したいと考えています。
いくつかのアルゴリズムを試しましたが、600未満の変数を選択することはできません。これらの変数は非常に相関しているためです。(私はまだこれに取り組んでいます...)

考慮すべきもう1つの重要な考えは、さまざまなアルゴリズムの速度パフォーマンスです。多くの状況では、結果を待つのに20分間待つことができません。たとえば、NIPALSを使用するタイミングと、SVDを使用してPCAを計算するタイミングを知る必要があります。

これがmlによくある問題のアイデアを与えることを願っています。


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