web-dev-qa-db-ja.com

使用する機械学習ライブラリ

理想的には、次の機能を備えたライブラリを探しています。

  • 多次元データの階層的クラスタリングを実装します(理想的には類似性または距離行列上で)
  • サポートベクターマシンを実装します
  • c ++です
  • ある程度文書化されています(これは最も難しいようです)

私はその言語に最も慣れているので、これをC++で使用したいと思いますが、ライブラリに価値がある場合は、他の言語も使用します。グーグルで見つけたのですが、全部試す時間がないので、他の人の体験を聞いてみたいです。あなたが推薦する図書館でいくらかの経験がある場合にのみ答えてください。

追伸:クラスタリングとSVMに異なるライブラリを使用することもできます。

33
Björn Pollex

わかりました。完全を期すために、最後に行ったことを投稿します。現在、クラスタリング部分に scipy-cluster を使用しています。これは私がこれまでに見つけた中で最も用途の広い実装です。 SVM部分には libSVM (現在はPythonインターフェイスがあります))を使用すると思います。Python C++で階層的クラスタリングの適切な実装が実際には見つからなかったためです( Cクラスタリングライブラリ はマイクロアレイに特化しており、多次元データをサポートしていません)。

5
Björn Pollex

私が十分に使用したMLライブラリはごくわずかなので、安心してお勧めできます。 dlib mlは確かにそれらの1つです。

Sourceforgeのダウンロード ここ ;と最先端のチェックアウト:

hg clone http://hg.code.sf.net/p/dclib/code dclib-code

元のライブラリの作成者であり、現在のメンテナはDavisKingです。

ウィッシュリストと関連するdlib機能:

  • 優れたドキュメント:比較的少数のユーザー/開発者グループを対象とした無料のオープンソースライブラリの場合、これはおそらく最高です。 5年間の開発履歴の中で洗練された通常のドキュメントとは別に、頻繁に更新されるdlibの紹介、(トラフィックが少ない)フォーラム;優れたの大規模なセット(SVM用に少なくとも1つを含む)。

  • C++:私の知る限り、C++では100%です。

  • サポートベクターマシンアルゴリズム:うん;実際、SVMモジュールは、このライブラリの最新の更新の焦点となっています。

  • 階層的クラスタリングアルゴリズム:すぐに使用できるわけではありません。ただし、k-meansクラスタリングのパッケージコードがあります。明らかに、各手法の結果は大きく異なりますが、類似性メトリックの計算とそれに続く再帰的/反復的分割ステップが両方の中心にあります。つまり、階層的クラスタリングの計算エンジンがすべて揃っています。現存するクラスタリングモジュールをHCに適合させるには、数行以上のコードが必要ですが、ほぼデータ表示レベルで作業していることを考えると、これも大きな努力ではありません。

dlib mlには、推奨するいくつかの追加ポイントがあります。これは成熟したライブラリです(現在はバージョン17.xで、バージョン1.xは2005年後半にリリースされたと思います)が、リポジトリログ(最後の更新である17.27は17でした)からもわかるように、活発な開発が続けられています。 2010年5月)および最後のコミット(2010年5月23日)。さらに、他のML手法(ベイジアンネットワーク、カーネル法など)もほとんど含まれていません。そして第3に、dllib mlには、行列の計算と最適化のための優れた「サポート」ライブラリがあります。どちらも、多くのML手法の基本的な構成要素です。

ソースでは、dlib mlが[〜#〜] bsl [〜#〜](Boost?)でライセンスされていることに気づきました。オープンソースライセンスですが、このタイプのライセンスについては他に何も知りません。

16
doug

WEKA( http://www.cs.waikato.ac.nz/ml/weka/ )は、C++以外のほとんどの要件を満たす優れたオープンソースの機械学習ライブラリです。Javaで記述されています。 。それは非常によく文書化されており、サポートベクターマシンとクラスタリングを実装しており、私はそれについて非常に良い経験をしました。

10
Finbarr

一般的な機械学習ライブラリ:

これら2つはWekaに似ています。ただし、効率を念頭に置いています。

1.サメ(LGPL)

https://github.com/Shark-ML/Shark/

2.ワッフル(LGPL)

http://waffles.sourceforge.net/

SVMおよびその他の線形分類器:

1.LibSVM(BSDスタイル)

2.LibLinear(BSDスタイル)

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

それらはすべてC++です。

10
Yin Zhu

C++ではありませんが、Rの使用を検討してください。特に、 CRANの機械学習ビュー を見てください。これは、Wekaやlibsvmを含む上記のライブラリの多くを示しています。

4
griffin

いくつかの追加の可能な選択肢:

条件付き確率場(CRF): http://www.chokkan.org/software/crfsuite/

隠れマルコフモデル(HMM): http://www.cs.au.dk/~asand/?page_id=152

一般的なMLライブラリについては、トーチ(執筆時点ではバージョン7)を検討してください。 https://github.com/andresy/torch

OrangeシステムはC++で実装され、ライブラリとして使用できますが、その機能をPython柔軟なスクリプトとビジュアルプログラミングのラッパーとして公開することに重点を置いています: http:/ /orange.biolab.si/

1
jochenleidner