問題タブ [cross-validation]
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 - トレーニング セットと同じ IDF を使用して相互検証を実行する必要がありますか?
ベクトル空間モデルを使用して、SVM Light で SVM 分類器を構築しようとしています。1000 個のドキュメントと、各ドキュメントをベクトル化するために使用する用語の辞書があります。1000 個のドキュメントのうち、600 個がトレーニング セット用であり、残りの 400 個は相互検証セットとテスト セット用に均等に (それぞれ 200 個ずつ) 分割されます。
ここで、分類用のモデルを生成するために、600 個のトレーニング セット (tf-idf を使用してベクトル化) を使用して SVM 分類器をトレーニングするとします。
モデルを交差検証セットに適用する場合、同じ idf を使用しますか (モデルはトレーニング セットに対応しているため)、または交差検証セットに基づいて新しい idf を計算する必要がありますか? また、モデルを単一のドキュメントに適用する場合、このセットにはドキュメントが 1 つしか含まれないため、どのように idf を適用しますか?
matlab - 画像分類のためにmultiSVMメソッドで交差検証が必要なのはなぜですか?
私は画像分類が初めてで、現在、multisvm 関数によって 4 つの画像グループを分類するための SVM(support Vector Machine) メソッドに取り組んでいます。私のアルゴリズムは、トレーニング データとテスト データがランダムに選択されるたびに異なり、パフォーマンスは毎回異なります。クロスバリデーションを行うように提案された人もいましたが、クロスバリデーションが必要な理由と、これの主な目的は何ですか? . 私の実際のデータセットは、トレーニング行列のサイズ28×40000
とテスト行列のサイズで構成されています17×40000
。このデータセットで相互検証を行う方法は私を助けてくれます。前もって感謝します 。
python - sklearn - クラスのサブセットの精度スコアリングによる相互検証
3 つのクラス ラベルを持つ分類用のデータセットがあり[0,1,2]
ます。
相互検証を実行していくつかの推定器を試したいのですが、クラス 1 と 2 のみの精度でスコアリングすることに興味があります。クラス 0 の精度は気にしません。 CV の最適化。また、どのクラスのリコールも気にしません。つまり、1 つまたは 2 つが予測されるときはいつでも、その信頼性が非常に高いことを確認したいと考えています。
問題は、cross_val_score
クラス 0 の精度を無視するようにスコアリング関数を実行して指示するにはどうすればよいかということです。
更新:受け入れられた回答によると、回答コードの例を次に示します。
machine-learning - sklearn でサポート ベクター マシンを使用するときに検証セットを実際に使用する方法
SVM を使用しているときに、元のデータ セットに対して 3 方向の分割を実行することをお勧めします。たとえば、70/15/15 分割のようにします。
この分割は、トレーニングの場合は %70、テストの場合は %15、「検証」と呼ばれるものの場合は %15 に相当します。
これが良い方法である理由についてはかなり明確ですが、実際にこれを実行するために必要なナットとボルトについてはよくわかりません。多くのオンライン ソースが重要性について議論していますが、プロセスの明確な (または少なくともアルゴリズム的な) 説明を見つけることができないようです。たとえば、sklearn はここでそれについて説明していますが、確かなツールを提供する前に停止します。
ここに私の考えがあります:
- トレーニング セットを使用してアルゴリズムをトレーニングする
- テストセットを使用してエラー率を見つける
- ?? パラメータを微調整する
- 検証セットを使用してエラー率を再度取得します
誰かが私を良いリソースの方向に向けることができれば、私は感謝します.
r - R の lm 関数で交差検証を 1 つ除外する
Leave-one-out Cross Validation を実行している 506 行のデータセットがあります。平均二乗誤差を取得したら、見つけた平均二乗誤差の平均を計算しています。これは、実行するたびに変化しています。これは期待されていますか?もしそうなら、誰かがそれを実行するたびに変化する理由を説明できますか?
CVを1つ除外するには、最初に行をシャッフルします.dfはデータフレームです
次に、データ フレームを 506 個のデータ フレームに分割して lm() に送信し、各データ フレーム (この場合は各行) の MSE を取得します。
そして、取得したすべての MSE の平均をとります。
これをすべて実行するたびに、異なる平均値が得られます。これは期待されていますか?
r - glm() モデルの相互検証
以前に R で作成したいくつかの glm モデルに対して 10 倍のクロス検証を実行しようとしています。多くのヘルプ ファイルを読みましたが、パッケージのcv.glm()
関数について少し混乱しています。boot
次の式を提供すると:
ここでの「データ」引数は、データセット全体を参照していますか、それともテスト セットのみを参照していますか?
これまで見てきた例では、テスト セットとして "data" 引数を提供していますが、実際には意味がありませんでした。たとえば、なぜ同じテスト セットで 10 倍になるのでしょうか? それらはすべてまったく同じ結果をもたらすでしょう(私は推測します!)。
残念ながら?cv.glm
、あいまいな方法でそれを説明しています。
data: データを含む行列またはデータ フレーム。行はケースで、列は変数に対応し、そのうちの 1 つは応答です。
私の他の質問は、$delta[1]
結果についてです。これは 10 回の試行の平均予測誤差ですか? 折りたたみごとにエラーを取得したい場合はどうすればよいですか?
私のスクリプトは次のようになります。
backpropagation - 検証セットを使用したニューラル ネットワークの早期停止
ニューラルネットワークでのオーバーフィッティングを避けるために、早期停止方法を使用したいと考えています。データセットを 60-20-20 に分割しました
60 - トレーニング 20 - 検証セット 20 - テスト セット
早期停止を実装する際に疑問があります。
- トレーニング セットを使用して、1 エポックの重みを更新します。トレーニング セットを使用したネットワークでエラーが発生しました。
- 検証セットのエラーを計算する必要があります。各検証インスタンスのすべてのエラーを平均化する必要がありますか?? たとえば、200 個の検証インスタンスがあるとします。重みを更新していないため、各インスタンスの誤差を計算します。では、すべての検証インスタンスを平均して、それを検証エラーとして報告する必要がありますか??
ありがとう、アティッシュ