3

ほとんどの人が通常、機械学習アルゴリズムを自分でコーディングするのか、それとも Weka や R パッケージなどの既存のソリューションを使用する可能性が高いのかを自問しました。

もちろん、それは問題によって異なりますが、ニューラル ネットワークのような一般的なソリューションを使用したいとしましょう。自分でコーディングする理由はまだありますか?メカニズムをよりよく理解し、適応させるには?それとも、標準化されたソリューションの考え方の方が重要ですか?

4

1 に答える 1

10

これは、Stackoverflow にとって適切な質問ではありません。これは意見の問題であり、プログラミングの問題ではありません。

それにもかかわらず、ここに私の見解があります:

それはあなたが何をしたいかによります。

  • 目の前のデータの問題に最適なアルゴリズムを見つけたい場合は、ELKI、Weka、R、Matlab、SciPy などを試してみてください。見つけられるすべてのアルゴリズムを試し、データの前処理により多くの時間を費やしてください。

  • 必要なアルゴリズムを知っていて、それを本番環境に導入する必要がある場合、これらのツールの多くは十分に機能しないか、統合するのが簡単ではありません. 代わりに、必要な機能を提供する libSVM などの低レベルのライブラリが見つかるかどうかを確認してください。これらが存在しない場合は、独自の最適化されたコードをロールします。

  • この分野で研究を行いたい場合は、既存のツールを拡張することをお勧めします。ELKI と Weka には、プラグインして拡張機能を提供できる API があります。Rには実際にはAPIがありません(CRANは混乱しています...)が、人々はコードをどこかにダンプし、(うまくいけば)それを使用する方法のマニュアルを追加します。これらのフレームワークを拡張すると、多くの労力を節約できます。比較メソッドをすぐに使用でき、それらのコードの多くを再利用できます。たとえば、ELKI には、アルゴリズムを高速化するための多くのインデックス構造があります。ほとんどの場合、インデックス アクセラレーションは、実際のアルゴリズムよりも作成がはるかに困難です。そのため、既存のインデックスを再利用できれば、アルゴリズムも大幅に高速化されます (また、これらのフレームワークに対する将来の機能強化からもメリットが得られます)。

  • 既存のアルゴリズムについて学びたい場合は、それらを自分で実装することをお勧めします。いくつかのアルゴリズムを最適化することは、クラスで教えられていることよりもはるかに多くあることに驚かれることでしょう。例えばアプリオリ。基本的な考え方は非常にシンプルです。しかし、刈り込みの詳細をすべて正しく理解すると、20 人に 1 人の学生がこれらの詳細を理解できると言えます。アプリオリを実装し、既知の優れた実装と比較してベンチマークを行い、なぜあなたの実装が非常に遅いのかを理解しようとすると、アルゴリズムの微妙な詳細を実際に発見できます。また、ELKI、R、Weka などで 100 倍のパフォーマンスの違いが見られても驚かないでください。使用される実際のデータ構造、メモリ レイアウトなどに関しては、多かれ少なかれ効率的に実装されているだけで、同じアルゴリズムである可能性があります。

于 2013-08-12T10:53:47.180 に答える