問題タブ [libsvm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
machine-learning - 自然言語処理における二値化
二値化とは、エンティティのカラフルな特徴を数値のベクトル (ほとんどの場合はバイナリ ベクトル) に変換して、分類アルゴリズムの良い例を作成することです。
「The cat ate the dog」という文を二値化する場合、すべての単語に ID (たとえば、cat-1、ate-2、the-3、dog-4 など) を割り当てることから始めて、単語を単純に次のように置き換えることができます。ベクトル <3,1,2,3,4> を与える ID です。
これらの ID が与えられると、各単語に 4 つの可能なスロットを与え、特定の単語に対応するスロットを 1 に設定して、ベクトル <0,0,1,0,1,0,0,0 を与えるバイナリ ベクトルを作成することもできます。 ,0,1,0,0,0,0,0,1>. 後者の方法は、私の知る限り、一般的にバッグ・オブ・ワード法と呼ばれています。
さて、私の質問ですが、一般的な自然言語処理の機能、特に (Nivres アルゴリズムを使用した)遷移ベースの依存関係解析の機能を説明する際に最適な2 値化方法は何ですか?
このコンテキストでは、文全体をエンコードするのではなく、解析の現在の状態 (たとえば、スタックの先頭の単語と入力キューの最初の単語など) をエンコードしたいと考えています。順序は関連性が高いため、bag-of-words-method は除外されます。
bestとは、不必要なメモリを使い果たすことなく、データを分類器にとって最もわかりやすいものにする方法を指しています。たとえば、実際にバイグラムが 2% しか存在しない場合、バイグラムが 20000 の一意の単語に対して 4 億の機能を使用することは望ましくありません。
答えは特定の分類子にも依存するため、最大エントロピー モデル (liblinear)、サポート ベクター マシン (libsvm)、およびパーセプトロンに主に関心がありますが、他のモデルに適用される答えも歓迎します。
algorithm - いくつかの優れたSVMチュートリアルへのポインタ
私はサポートベクターマシンの基本を理解しようとしており、多くのオンライン記事をダウンロードして読んでいます。しかし、それでもそれを把握することはできません。
何かあれば知りたいのですが
- 素敵なチュートリアル
- 理解に使用できるサンプルコード
または何か、あなたが考えることができ、それは私がSVMの基本を簡単に学ぶことを可能にするでしょう。
PS:私はどういうわけかPCA(主成分分析)を学ぶことができました。ところで、皆さんは私が機械学習に取り組んでいると推測しているでしょう。
c++ - 優れたC++サポートベクターマシン(SVM)ライブラリを知っていますか?
libsvm http://www.csie.ntu.edu.tw/~cjlin/libsvm/を試しましたが、今のところ私は気が狂っていません。
SVMLightとTinySVMについても聞いたことがあります。それらを試しましたか?新しいプレーヤーはいますか?
ありがとう !
machine-learning - libsvmモデルファイル形式
このFAQによると、libsvmのモデル形式は単純である必要があります。そして実際、私がちょうどと呼ぶとき、それはそうですsvm-train
。a1a
例として、データセットの最初のSVは
一方、easy.py
スクリプトを使用すると、最初のSVは次のようになります。
これは私のトレーニングセットにはまったく存在しないインスタンスです!実際、私がそうする場合:
119:-1のインスタンスはありません(そして、と交換+1
しただけ-1
でも、119:1と118:1のインスタンスはありません-欠落している属性はゼロです)
このソースコードの変更svm-train
を行うと、前者の場合(のみ関係する)、最初のSVが最初のインスタンスでもあることがはっきりとわかります。しかし、後者の場合(つまりeasy.py
スクリプトを使用)、どのインスタンスがSVであるかを示す出力はによって食べられますgrid.py
何が起きてる?
machine-learning - サポート ベクター マシン (SVM) を使用して多クラス分類を行う方法
すべての本と例では、常にバイナリ分類 (2 つのクラス) のみを示しており、新しいベクトルはいずれか 1 つのクラスに属することができます。
ここでの問題は、4 つのクラス (c1、c2、c3、c4) があることです。私は4つのクラスのトレーニングデータを持っています。
新しいベクトルの場合、出力は次のようになります
C1 80% (勝者)
c2 10%
c3 6%
c4 4%
これを行う方法?libsvm を使用する予定です (最も人気があるため)。私はそれについてあまり知りません。以前に使用した人がいる場合は、使用することになっている特定のコマンドを教えてください。
sed - libSVM自動ラベラースクリプト
タブ区切りのデータファイルをlibSVMデータ形式に変換するスクリプトはありますか?ラベルのないデータの例:
そして、各値にラベルを付けたいと思います。
これはsedまたはawkを使用して実行できると思いますが、実行方法がわかりません。
ありがとう!
c - 1 つの C プログラム内から 2 つの C プログラムを呼び出す方法は?
別の C アプリケーション内から 2 つの C アプリケーションを呼び出すにはどうすればよいですか?
例:
次のように実行できるプログラムを書きたいと思います。
結果は次のようになります。
ここの pg1 は svm_scale で、ここの pg2 は svm_predict で、どちらも libsvm から取得しました: http://www.csie.ntu.edu.tw/~cjlin/libsvm/
[ 編集 ]
@ジョナサン、
私はこの概念を試すためにこれらのプログラムを書きました..
pg1.c
pg2.c
pg3.c:
誰かが私が間違ったことを説明できますか?
machine-learning - libsvm でのガンマと C によるトレーニング時間とオーバーフィッティング
私は現在、Gaussian カーネルを使用したサポート ベクター マシン分類器に libsvm を使用しています。そのWeb サイトでは、最適な C とガンマを選択するための python スクリプト grid.py が提供されています。
ガンマとCでトレーニング時間とオーバーフィッティング/アンダーフィッティングがどのように変化するのだろうか?
それは正しいですか:
C が 0 から +infinity に変化すると、トレーニング済みモデルがアンダーフィッティングからオーバーフィッティングになり、トレーニング時間が増加するとしますか?
ガンマがほぼ 0 から +infinity に変化すると、トレーニング済みのモデルがアンダーフィッティングからオーバーフィッティングになり、トレーニング時間が増加するとしますか?
grid.py では、デフォルトの検索順序は C に対して小さいものから大きいものへ、ガンマは大きいものから小さいものへです。小規模から大規模へのトレーニング時間と、アンダーフィッティングからオーバーフィッティングへのトレーニング済みモデルのトレーニングを目的としていますか? では、C とガンマの値を選択する時間を節約できるでしょうか?
よろしくお願いします!
python - このpythonコードが何をしようとしているのか
次の python コードは、"jobs" と "job_queue" に格納されている (c, g) の 2D グリッドを特別な順序でトラバースします。しかし、コードを理解しようとしても、どのような順序なのかわかりません。誰かが順序について教えて、各機能の目的について説明をすることができますか? よろしくお願いします!
編集:
(c,g) ごとに値があります。実際のコードは、(c,g) の 2D グリッドを検索して、値が最小になるグリッド ポイントを見つけます。コードはある種のヒューリスティック検索アルゴリズムを使用していると思いますか? 元のコードはhttp://www.csie.ntu.edu.tw/~cjlin/libsvmtools/gridsvr/gridregression.pyです。これは、svm アルゴリズムを検索するスクリプトで、2 つのパラメーター c と g の最適な値を最小値で検証エラー。
machine-learning - libsvm を使用した分類のトレーニング
libsvmを使って分類したい。9 つのトレーニング セットがあり、各セットには 144000 個のラベル付きインスタンスがあり、各インスタンスにはさまざまな数の機能があります。1 つのセットをトレーニングするのに約 12 時間かかります ( ./svm-train と確率推定値 )。時間があまりないので、一度に複数のセットを実行したいと思います。これができるかどうかわかりません.9つのプロセスすべてを異なる端末で同時に実行できますか?
(私はfedoraコア5を使用しています)