私は、バナーを見る人によるクリックと変換のデータを使って自分のSVMアルゴリズムを教えようとしています。主な問題は、クリックがすべてのデータの約0.2%であることです。そのため、クリック数に大きな不均衡があります。テスト段階でシンプルなSVMを使用すると、常に「ビュー」クラスのみが予測され、決して「クリック」や「変換」は行われません。平均で99.8%の正解(不均衡のため)が得られますが、「クリック」や「コンバージョン」にチェックを入れると右の予測が0%になります。どのように不均衡を考慮に入れてSVMアルゴリズムを調整する(または別のアルゴリズムを選択する)ことができますか?クラスの不均衡が大きいデータを使用して機械学習アルゴリズムを教える方法はありますか? (SVM)
7
A
答えて
24
ここで最も基本的なアプローチは、いわゆる「クラス重み付け方式」を使用することです。古典的なSVM形式では、ミス分類カウントを制御するためにパラメータC
が使用されます。クラス1とクラス2にはそれぞれC1
とC2
のパラメータを使用できます。与えられたC
ためC1
とC2
の最も一般的な選択は、n1
とn2
がそれぞれクラス1及び2のサイズです
C1 = C/n1
C2 = C/n2
を置くことです。だからあなたは、より頻繁ではないクラスをミス分類するためにSVMを「罰する」ことができます。
多くの既存のライブラリ(libSVMなど)は、class_weightパラメータを使用してこのメカニズムをサポートしています。 sklearnにPythonとsklearn特に
print __doc__
import numpy as np
import pylab as pl
from sklearn import svm
# we create 40 separable points
rng = np.random.RandomState(0)
n_samples_1 = 1000
n_samples_2 = 100
X = np.r_[1.5 * rng.randn(n_samples_1, 2),
0.5 * rng.randn(n_samples_2, 2) + [2, 2]]
y = [0] * (n_samples_1) + [1] * (n_samples_2)
# fit the model and get the separating hyperplane
clf = svm.SVC(kernel='linear', C=1.0)
clf.fit(X, y)
w = clf.coef_[0]
a = -w[0]/w[1]
xx = np.linspace(-5, 5)
yy = a * xx - clf.intercept_[0]/w[1]
# get the separating hyperplane using weighted classes
wclf = svm.SVC(kernel='linear', class_weight={1: 10})
wclf.fit(X, y)
ww = wclf.coef_[0]
wa = -ww[0]/ww[1]
wyy = wa * xx - wclf.intercept_[0]/ww[1]
# plot separating hyperplanes and samples
h0 = pl.plot(xx, yy, 'k-', label='no weights')
h1 = pl.plot(xx, wyy, 'k--', label='with weights')
pl.scatter(X[:, 0], X[:, 1], c=y, cmap=pl.cm.Paired)
pl.legend()
pl.axis('tight')
pl.show()
を、使用して
例あなたは単にclass_weight='auto'
を設定して、自動重み付けをオンにすることができます。
1
本論文では、様々な技術を説明します。あなたはバランス持つまで一つの簡単な(しかし、SVMのための非常に悪い方法では)ちょうど少数クラス(複数可)を複製している:
http://www.ele.uri.edu/faculty/he/PDFfiles/ImbalancedLearning.pdf
関連する問題
- 1. 機械学習の歪みクラスと不均衡クラス
- 2. 機械学習で不均衡なデータをモデル化する方法は?
- 3. 機械学習の不均衡なトレーニングデータ(CNNs/RNNs)
- 4. 機械学習、不均衡な数値以外の変数クラスの問題があります
- 5. 深い学習の不均衡なデータの悪影響はありますか?
- 6. 機械学習アルゴリズムは、学習したデータをコピーしますか?
- 7. 序数データを学習できる機械学習回帰アルゴリズムはありますか?
- 8. 機械学習 - SVM機能融合テクニック
- 9. 機械学習 - 分類アルゴリズム
- 10. 反復機械学習アルゴリズム
- 11. 分類機械学習アルゴリズムで新しいクラスを発見するには?
- 12. 機械学習 - マルチラベル分類svm
- 13. パリティ機能の学習に成功した機械学習アルゴリズムはありますか?
- 14. 機械学習を使用してデータを予測する
- 15. 機械学習用の大型モデルファイルをホストしているAWS
- 16. map reduceモデルを適用できない機械学習アルゴリズム
- 17. 機械学習:どのアルゴリズムが答える質問に合う
- 18. 機械学習と進化アルゴリズムを比較できますか?
- 19. データの機械学習アルゴリズムを選択する
- 20. 機械学習データのフォーマット
- 21. 機械学習の巨大なデータセットsklearn
- 22. MapRにスケーラブルな機械学習アルゴリズムがありますか? Mahoutのように?
- 23. 機械学習アルゴリズムを選択する前にデータ探索を行う方法
- 24. 機械学習システム
- 25. MFCC係数ベクトルを使用して機械学習アルゴリズムをトレーニングする方法は?
- 26. いくつかの機械学習アルゴリズムは何ですか
- 27. すべての機械学習アルゴリズムの使い方Wordの頻度は機能ですか?
- 28. 転送学習は、不均衡なデータセットの問題を解決しますか?
- 29. 機械学習を使用して除算を確認する
- 30. 複雑なデータの分析に機械学習アルゴリズムを適用したい
をアップサンプリングオプション少数クラスですか? –
アップサンプリングで何を意味するのか詳しく教えてください。 – rvnikita
[skalarnロジスティック回帰と不均衡なクラスとの可能な重複](http://stackoverflow.com/questions/14863125/sklearn-logistic-regression-with-unbalanced-classes) –