問題タブ [kernlab]

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.

0 投票する
1 に答える
831 参照

r - kernlab での SVM トレーニング以外のカーネル行列計算

SVM を使用したトレーニング用に修正されたカーネル マトリックスを生成する新しいアルゴリズムを開発していたところ、奇妙な問題が発生しました。

テスト目的で、kernelMatrix インターフェイスと通常のカーネル インターフェイスを使用して学習した SVM モデルを比較しました。例えば、

カーネルマトリックスでスケーリングを実行する方法がわからないため、スケーリングをオフにしたことに注意してください。

私の理解では、両方ともsvp1同じsvp2モデルを返す必要があります。glass0ただし、これはKEELなどのいくつかのデータセットには当てはまらないことがわかりました。

ここで何が欠けていますか?

0 投票する
1 に答える
1492 参照

r - スケーリングされたトレーニング後に ksvm にスケーリングされていない値を予測させる方法

パッケージksvmからSVM を実行すると、最終モデルのコマンドからのすべての出力がスケーリングされます。これは私が開始したためであることはわかっていますが、SVM モデリングではデータのスケーリングが優先されることも知っています。スケーリングされていない予測を返すように簡単に指示するにはどうすればよいですか? そうでない場合、予測されたスケーリングされた値を生の値に操作する方法はありますか? ありがとう、コードは以下です:kernlabpredictscaled = Tksvm

0 投票する
0 に答える
616 参照

r - 「kernlab」パッケージの「ksvm」を使用して構築された SVM モデルの AIC を計算する方法は?

「kernlab」パッケージの「ksvm」を使用して SVM を構築しました。これが私のコードです:

このモデルの AIC (赤池情報量基準) を計算する方法はありますか? ありがとうございました!

0 投票する
1 に答える
1257 参照

r - R で複数の時系列データを SVM (ksvm) に提示する方法 (または、2 次元の入力データを SVM に提示する方法)

データセット内の最初の 100 個の数値がすべて 1 つのセンサーからの時系列データであり、次の 100 個の数値が別のセンサーからのすべての時系列データであることをksvmモデルに認識させるにはどうすればよいですか? 別の方法として (そしておそらくより一般的に)、2 次元の入力データを SVM に提示するにはどうすればよいでしょうか?

バイナリの yes/no 予測モデルが必要なプロセスには、6 つの非周期的な時系列入力があり、すべて同じサンプリング周波数です。イベントがデータ収集の開始をトリガーし、事前に決められた時間の後、yes/no の予測が必要です (できれば、正確性の出力を含む)。「はい」対「いいえ」を生成する時系列入力の特性は不明ですが、入力時系列データのそれぞれと最終結果の間に何らかの相関があるはずであることがわかっています。また、すべての入力にかなりのノイズが存在します。意味のある情報とノイズの両方が短期間のバーストとして入力に現れます (意味のあるバーストは、特定の入力ソースに対して常に同じ一般的な時間にあります)。しかし、どのバーストが意味を持ち、どれがノイズであるかを識別することは困難です。つまり、1 つの入力に対して「適切な」タイミングでバーストが発生したという事実は、必ずしも「はい」の出力を示すわけではありません。ただのノイズかもしれません。予測が「はい」であるかどうかを知るには、モデルに 6 つの時系列入力すべてから何らかの方法で情報を組み込む必要があります。約 900 件の「いいえ」の結果と 100 件の「はい」の結果を含む以前のデータのコレクションがあります。

私は R と SVM の両方にかなり慣れていませんが、SVM モデル ( kernlab の ksvm)。入力データをそれに提示する方法を理解するのに苦労しています。また、データが時系列データであること、またはそれが関連していることを ksvm に伝える方法もわかりません。Rattle GUI フロントエンドを R に使用して、csv ファイルからデータを取り込もうとしましたが、6 つの入力すべてからの時系列データを ksvm モデルに表示する方法がわかりません。csv ファイルの入力として、1000 サンプルすべてのデータをインポートする唯一の方法は、すべてのサンプル データ (6 つの時系列入力すべて) が csv ファイルの 1 行に収まるように入力データを整理することです。 csv ファイルの各行に個別の既知の結果ファイルのデータが表示されます。しかし、そうすると、1 番目、2 番目、3 番目などの数字が最初のセンサーからの時系列データの各部分であるという事実と、101 番目、102 番目、103 番目などの数字は、2 番目のセンサーからの時系列データの各部分です。ksvm モデルでは、各データ サンプルは隣接するデータとは関係のない孤立した数値と見なされます。このデータを、相互に関連している 6 つの個別の時系列配列として ksvm に提示するにはどうすればよいですか? または、データの 2 次元配列を ksvm に提示するにはどうすればよいですか?


アップデート:

OK、私が試した基本的な戦略が 2 つあります (結果として得られたモデルは、盲目的な推測よりも優れていましたが、それほどではありませんでした)。

まず、R に慣れていないので、Rattle GUI フロントエンドを R に使用しました。そうすることで、オプションが制限される可能性があると感じています。しかし、とにかく、これが私がやったことです.....

既知の結果ファイルの例 (6 つではなく 4 つのセンサーのみ、および 100 ではなく 7 つの時間サンプルのみで示されています):

training168_yes.csv

training169_no.csv

すべてのトレーニング サンプルのデータを R/Rattle に取得する唯一の方法は、すべての結果ファイルを 1 つの .csv ファイルにまとめて、1 行に 1 つのサンプル結果を作成することです。それを行うには2つの方法しか考えられないので、両方を試しました(そして、これを行うことで潜在的に重要な情報を隠していることを知っていました。これがこのSOの質問のポイントです):

試行 #1:各結果ファイルについて、各センサーのサンプルを 1 つの数値に追加し、すべての時間情報を吹き飛ばします。

Rattle を使用して SVM を生成し終えると、Rattle のログ タブに、RGui で SVM を生成およびトレーニングするために使用できる次のスクリプトが表示されます。

試行 #2:各結果ファイルについて、各時間のすべてのセンサーのサンプルを 1 つの数値に追加し、個々のセンサーに関する情報を吹き飛ばします。

また、Rattle を使用して SVM を生成すると、Rattle のログ タブに次のスクリプトが表示されます。

残念ながら、ほぼ 1000 のトレーニング データセットを使用しても、結果として得られるモデルはどちらも、たまたま偶然に得られる結果よりもわずかに良い結果しか得られません。一時的なデータまたは異なるセンサー間の区別のいずれかを爆破することを回避する方法があれば、より良い結果が得られると確信しています。どうやってやるの?ところで、それが重要かどうかはわかりませんが、すべてのセンサーのセンサー読み取り値はほぼ同時に取得されますが、ある読み取り値と次の読み取り値の時間差は、通常、実行ごとに 10 ~ 20% 変動します。次(つまり、「トレーニング」ファイル間)であり、私はそれを制御できません。おそらく無視しても安全だと思います (つまり、1、2、3 などのように読み取り値に順番に番号を付けるだけで安全だと思います)。

0 投票する
2 に答える
4855 参照

r - SVM を線形カーネルでチューニングすると、R キャレットが異常に遅くなる

で SVM パラメータを調整すると、非常に奇妙な動作が見られましたcaret。チューニングを行わずに 1 つのモデルをトレーニングする場合、放射基底カーネルを使用する SVM は、線形カーネルを使用する SVM よりも時間がかかりますが、これは予想されることです。ただし、同じペナルティ グリッド上で両方のカーネルを使用して SVM を調整する場合、線形カーネルを使用した SVM は、放射基底カーネルを使用した SVM よりも大幅に時間がかかります。caretこの動作は、R 3.2 および6.0-47を使用する Windows と Linux の両方で簡単に再現できます。線形 SVM の調整が放射基底カーネル SVM よりもはるかに時間がかかる理由を知っている人はいますか?

おもちゃのサンプル コードは次のとおりです。

0 投票する
0 に答える
802 参照

r - Rの線形カーネルのsvm分類子の係数を決定する方法は?

RI で svm の kernlab パッケージを使用しています。線形カーネルを使用しているため、変数である特徴ベクトルの重要性を直接確認できます。これらの特徴ベクトルの係数を使用して、の重みを計算する必要があります。モデル内のさまざまな要因により、svm が特徴空間に描画する線形分離面を評価できます。基本的に、w を transpose(w)*x + b で計算したいと思います。誰かが何をすべきか提案してください。フィールド alpha と b および apha インデックスを使用して、重みベクトルを論理的に計算しようとしましたが、正しく計算されているかどうかを検証するために、テスト サンプルで正しい予測スコアを予測しようとしましたが、これは、組み込みの予測機能。重みを計算する方法は?

0 投票する
0 に答える
597 参照

r - R - 複数の予測による 1 クラス SVM 分類

X 行とデータを含む 5 列の行列があります。ライブラリkernlabとe1071で関数One-class SVMを使用しようとしています。まず、分類器を値「TRUE」で 200 行トレーニングし、次に残りの行 (74 行) を分類します。私の問題は予測部分です。5 つの列があるため、分類子は 5 つの列すべてを個別に予測し、1 つの行から 5 つの予測を行います。5 列のデータで構成される 1 つの行から、1 つの TRUE または FALSE ラベルで予測する必要があります。5 ではなく 1 つのラベルを取得するにはどうすればよいですか? ありがとう。

データはhttps://www.dropbox.com/sh/blnr3jvius8f3eh/AACOhqyzZGiDHAOPmyE__873a?dl=0で、名前は「Input.csv」です。

ラウル