9

問題を解決するための最善のアプローチについて、ここで専門家のガイダンスが必要です。私はいくつかの機械学習、ニューラル ネットワークなどを調査しました。私はweka、ある種のbaesianソリューション.. R..いくつかの異なることを調査しました。しかし、実際にどのように進めるかはわかりません。これが私の問題です。

私はイベントの膨大なコレクションを持っているか、持つ予定です。最終的には約 100,000 ほどになります。各イベントは、いくつか (30 ~ 50) の独立変数と、関心のある 1 つの従属変数で構成されます。従属変数の値を決定する上で、一部の独立変数は他の変数よりも重要です。そして、これらのイベントは時間に関連しています。10 年前の出来事よりも、今日の出来事の方が重要です。

ある種の学習エンジンにイベントを供給し、従属変数を予測できるようにしたいと考えています。次に、このイベント (およびそれ以前に発生したすべてのイベント) の従属変数の真の答えを知っているので、それを使用してその後の推測をトレーニングしたいと考えています。

プログラミングの方向性がわかったら、調査を行い、アイデアをコードに変換する方法を見つけます。しかし、私のバックグラウンドは並列プログラミングであり、このようなものではないので、これに関する提案とガイダンスがあれば幸いです。

ありがとう!

編集: ここで、私が解決しようとしている問題についてもう少し詳しく説明します。それは価格設定の問題です。ランダムな漫画本の価格を予測したいとしましょう。気になるのは価格だけです。しかし、考えつくことができる独立変数はたくさんあります。スーパーマンのコミックか、ハローキティのコミックか。これはどれくらい古いのですか?条件は何ですか?などなど。しばらくトレーニングした後、検討中の漫画に関する情報を提供できるようになり、漫画の妥当な期待値を与えてもらいたいと考えています。わかった。したがって、コミックは偽の例かもしれません。しかし、あなたは一般的な考えを得る。これまでのところ、答えから、サポートベクターマシンとナイーブベイズについていくつかの調査を行っています。これまでご協力いただきありがとうございました。

4

9 に答える 9

8

あなたはサポート ベクター マシンの候補者のようですね。

libsvmを入手してください。彼らが配布している短い「SVM分類の実践ガイド」を読んでください。

基本的に、イベントを次のようにフォーマットします。

dv1 1:iv1_1 2:iv1_2 3:iv1_3 4:iv1_4 ...
dv2 1:iv2_1 2:iv2_2 3:iv2_3 4:iv2_4 ...

svm-scale ユーティリティで実行し、grid.py スクリプトを使用して適切なカーネル パラメータを検索します。学習アルゴリズムは、変数のさまざまな重要性を把握できるはずですが、重み付けもできる場合があります。時間が役立つと思われる場合は、トレーニング アルゴリズムが使用する別の独立変数 (機能) として時間を追加します。

libsvm で期待どおりの精度が得られない場合は、SVMlightへのステップアップを検討してください。対処するのがほんの少し難しくなり、より多くのオプションがあります。

Bishop の Pattern Recognition and Machine Learningは、libsvm と SVMlight が実際にデータに対して行っていることの詳細を確認するためのおそらく最初の教科書です。

于 2009-02-07T01:31:17.270 に答える
1

SVMは、多くの場合、利用可能な最高の分類器です。それはすべてあなたの問題とあなたのデータに依存します。一部の問題については、他の機械学習アルゴリズムの方が適している場合があります。ニューラルネットワーク(特にリカレントニューラルネットワーク)が解決に優れているという問題を見てきました。この質問は状況に大きく依存するため、正しい答えはありませんが、SVMが開始するのに適切な場所であるというdsimchaとJayに同意します。

于 2009-02-08T02:05:09.137 に答える
1

30 ~ 50 の独立変数があり、そのうちのいくつかは他の変数よりも重要であるとおっしゃいました。したがって、履歴データ (またはトレーニング セットと呼ばれるもの) があると仮定すると、PCA (主成分分析) またはその他の次元削減手法を使用して、独立変数の数を減らすことができます。もちろん、このステップはオプションです。状況によっては、すべての変数を保持することでより良い結果が得られる場合がありますが、関連性に基づいてそれぞれに重みを追加します。ここで、PCA は変数の「関連性」を計算するのに役立ちます。

また、最近発生したイベントほど重要であるとのことでした。その場合は、最近のイベントの重みを高くし、古いイベントの重みを低くすることができます。イベントの重要性は、時間に応じて直線的に増加する必要はないことに注意してください。指数関数的に成長する方が理にかなっているので、ここで数字をいじることができます。または、トレーニング データが不足していない場合は、古すぎるデータを削除することを検討できます。

Yuval F が言ったように、これは分類問題というより回帰問題のように見えます。そのため、SVM (Support Vector Machine) の回帰バージョンである SVR (Support Vector Regression) を試すことができます。

あなたが試すことができる他のものは次のとおりです。

  1. 独立変数の値の範囲をスケーリングする方法を試してみてください。通常は [-1...1] または [0...1] と言います。ただし、他の範囲を試して、それらが役立つかどうかを確認できます. 時々彼らはそうします。ほとんどの場合、そうではありません。
  2. N << 30 などの低次元の「隠れた」特徴ベクトルがあり、それが本質的に非線形であると思われる場合は、非線形の次元削減が必要になります。カーネル PCA や最近のマニホールド スカルプティングについて読むことができます。
于 2009-05-20T08:35:53.537 に答える
1

あなたの問題は分類の問題ではなく、回帰の問題だと思います。主な違い: 分類では離散変数の値を学習しようとしますが、回帰では連続変数の値を学習しようとします。関連するテクニックは似ているかもしれませんが、詳細は異なります。線形回帰は、ほとんどの人が最初に試すものです。線形回帰でうまくいかない場合は、他にも多くの回帰手法があります。

于 2009-05-20T08:07:01.257 に答える
1

あなたが説明したのは、古典的な分類問題です。私の意見では、Weka のようなツールがあるのに、まったく新しいアルゴリズムをコーディングする必要はありません。もし私があなたなら、10 倍 (または k 倍) の交差検証を使用して、教師あり学習アルゴリズムのリストを実行します (教師なし学習が最初に提案されているのは、これが明らかに分類の問題であるにもかかわらず、完全には理解できません)。 、私が覚えている場合、これはWekaのデフォルトであり、どのような結果が得られるかを見てください! 私は試してみます:

-Neural Nets
-SVM
-Decision Trees (これは、私が同様の問題を行っていたときに非常にうまく機能しました)
-Decision trees/stumps
によるブースティング -その他何でも!

Weka は物事をとても簡単にし、本当に役立つ情報を得ることができます。私は機械学習のクラスを受講したばかりで、上記のアルゴリズムであなたがやろうとしていることを正確に行ったので、あなたがどこにいるのかがわかります. 私にとって、意思決定スタンプによるブーストは驚くほどうまく機能しました。(ところで、ブースティングは実際にはメタアルゴリズムであり、ほとんどの教師あり学習アルゴリズムに適用して、通常は結果を向上させることができます。)

デシジョン ツリー (ID3 または類似の種類を使用する場合) を使用することの良い点は、データをどれだけうまく差別化できるかという順序で分割する属性を選択することです。したがって、アルゴリズムを実行した後にツリーを調べて、漫画本のどの属性が価格を最も強く決定するかを確認できます。それはツリーのルートである必要があります。

編集: Yuval は正しいと思います。分類のために価格値を離散化する問題に注意を払っていませんでした。ただし、Weka で回帰が利用できるかどうかはわかりませんが、この問題に分類手法を簡単に適用できます。コミックの価格を表す個別の数値 (1 から 10 など) を取得できるように、コミックの価格の範囲のように、価格値のクラスを作成する必要があります。その後、分類を簡単に実行できます。

于 2009-06-18T15:50:14.937 に答える
1

分類されたデータ (正解と組み合わせた多数のサンプル問題) がある場合は、まず K 最近傍法やパーセプトロンなどの単純なアルゴリズムをトレーニングし、そこから意味のあるものが得られるかどうかを確認します。簡単に解けるか、解けるかどうかがわかるまで、わざわざ最適に解こうとしないでください。

機密データがない場合、またはあまり多くない場合は、教師なし学習アルゴリズムの調査を開始してください。

于 2009-02-07T01:30:59.830 に答える
1

インスタンス (イベント) に最適なクラス (従属変数) を見つけます。簡単な出発点は、単純ベイズ分類です。

于 2009-02-07T01:32:59.763 に答える
1

これは間違いなく機械学習の問題です。Java の知識があり、分類子を選択して接着剤を作成するだけでよい GPL ライブラリが必要な場合は、Weka が最適です。R はかなり遅いため、おそらくそれほど多くのインスタンス (イベント、あなたが呼んだように) を削減するつもりはありません。さらに、R では機械学習ライブラリを検索または作成する必要がありますが、R は統計言語であるため、これは簡単なはずです。

特徴 (独立変数) が条件付きで独立している (つまり、従属変数が与えられた場合に独立している) と信じている場合、単純ベイズは高速で、解釈可能で、正確で、実装が簡単なため、完璧な分類器です。ただし、100,000 個のインスタンスと 30 ~ 50 個の機能のみを使用すると、データ内の多くの依存関係構造をキャプチャするかなり複雑な分類スキームを実装できる可能性があります。あなたの最善の策は、おそらくサポート ベクター マシン (Weka の SMO) またはランダム フォレスト (はい、ばかげた名前ですが、ランダム フォレストが普及するのに役立ちました) です。ある程度の正確さを犠牲にして、おそらくまっすぐな J48 ディシジョン ツリーが機能するでしょう。ニューラル ネットワークは非常に遅く、機能しないため、お勧めしません。

于 2009-02-07T01:35:12.647 に答える
1

Programming Collective Intelligenceには、おそらくあなたにとって良い出発点となるラップトップの価格予測のソースコードを使用した実用的な例があります.

于 2009-02-07T21:59:19.443 に答える