resume
サポート ベクター マシン (SVM) 分類器の学習を再開
説明
は、さらに UpdatedSVMModel
= resume(SVMModel
,numIter
)numIter
回の反復についてサポート ベクター マシン (SVM) 分類器 SVMModel
に学習をさせることによって更新した SVM 分類器 UpdatedSVMModel
を返します。SVMModel
と同様、更新された SVM 分類器は ClassificationSVM
分類器です。
resume
は、fitcsvm
で SVMModel
に学習をさせるときに設定された学習オプションを引き続き適用します。
は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して UpdatedSVMModel
= resume(SVMModel
,numIter
,Name,Value
)UpdatedSVMModel
を返します。たとえば、詳細レベルを指定できます。
例
SVM 分類器の学習の再開
SVM 分類器に学習をさせ、意図的にソルバーが解に収束しないようにします。そして、学習プロセス全体をやり直さずに分類器の学習を再開します。
ionosphere
データセットを読み込みます。
load ionosphere rng(1); % For reproducibility
SVM 分類器を学習させます。最適化ルーチンが最大で 50 回の反復を実行するよう指定します。
SVMModel = fitcsvm(X,Y,'IterationLimit',50);
DidConverge = SVMModel.ConvergenceInfo.Converged
DidConverge = logical
0
Reason = SVMModel.ConvergenceInfo.ReasonForConvergence
Reason = 'NoConvergence'
DidConverge = 0
は、最適化ルーチンが解に収束しなかったことを示します。Reason
は、収束しなかった理由を示します。したがって、SVMModel
は部分的に学習をさせた SVM 分類器です。
SVM 分類器の学習を再開し、1500
回の反復を追加で実行します。
UpdatedSVMModel = resume(SVMModel,1500); DidConverge = UpdatedSVMModel.ConvergenceInfo.Converged
DidConverge = logical
1
Reason = UpdatedSVMModel.ConvergenceInfo.ReasonForConvergence
Reason = 'DeltaGradient'
DidConverge
は、最適化ルーチンが解に収束したことを示しています。Reason
は、勾配差分 (DeltaGradient
) が許容レベル (DeltaGradientTolerance
) に達していることを表します。そのため、SVMModel
は完全な学習済み SVM 分類器です。
SVM 分類器の学習の監視
SVM 分類器に学習をさせ、意図的にソルバーが解に収束しないようにします。そして、学習プロセス全体をやり直さずに分類器の学習を再開します。部分的に学習をさせた SVM 分類器と完全に学習をさせた分類器について再代入損失の値を比較します。
ionosphere
データセットを読み込みます。
load ionosphere
SVM 分類器を学習させます。最適化ルーチンが最大で 100 回の反復を実行するよう指定します。50
回の反復ごとに診断情報を出力するように指定して、アルゴリズムを監視します。
SVMModel = fitcsvm(X,Y,'IterationLimit',100,'Verbose',1,'NumPrint',50);
|===================================================================================================================================| | Iteration | Set | Set Size | Feasibility | Delta | KKT | Number of | Objective | Constraint | | | | | Gap | Gradient | Violation | Supp. Vec. | | Violation | |===================================================================================================================================| | 0 |active| 351 | 9.971591e-01 | 2.000000e+00 | 1.000000e+00 | 0 | 0.000000e+00 | 0.000000e+00 | | 50 |active| 351 | 8.064425e-01 | 3.736929e+00 | 2.161317e+00 | 60 | -3.628863e+01 | 1.665335e-16 | SVM optimization did not converge to the required tolerance.
反復表示がコマンド ウィンドウに出力されます。この出力からは、最適化ルーチンが解に収束しなかったことがわかります。
部分的に学習させた SVM 分類器の再代入損失を推定します。
partialLoss = resubLoss(SVMModel)
partialLoss = 0.1197
学習標本の誤分類誤差は約 12% です。
分類器の学習を再開し、1500
回の反復を追加で実行します。反復を 250
回実行するごとに診断情報を出力するよう指定します。
UpdatedSVMModel = resume(SVMModel,1500,'NumPrint',250)
|===================================================================================================================================| | Iteration | Set | Set Size | Feasibility | Delta | KKT | Number of | Objective | Constraint | | | | | Gap | Gradient | Violation | Supp. Vec. | | Violation | |===================================================================================================================================| | 250 |active| 351 | 1.248495e-01 | 1.454423e+00 | 8.975863e-01 | 102 | -7.581905e+01 | 1.360023e-15 | | 500 |active| 351 | 4.848717e-03 | 1.295245e-01 | 8.392682e-02 | 102 | -7.819025e+01 | 1.408595e-15 | | 750 |active| 351 | 4.111365e-04 | 1.733843e-02 | 1.053816e-02 | 103 | -7.820922e+01 | 1.568841e-15 | | 1000 |active| 351 | 9.194038e-05 | 2.529066e-03 | 1.500807e-03 | 103 | -7.820958e+01 | 1.755540e-15 | | 1065 |active| 351 | 3.892981e-05 | 9.958523e-04 | 5.112882e-04 | 103 | -7.820959e+01 | 1.685284e-15 | Exiting Active Set upon convergence due to DeltaGradient.
UpdatedSVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 Alpha: [103x1 double] Bias: -3.8827 KernelParameters: [1x1 struct] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [351x1 logical] Solver: 'SMO' Properties, Methods
反復が 1000
回実行されると処理が再開され、fitcsvm
を使用してモデルに学習をさせるときに設定したものと同じ詳細レベルを使用します。アルゴリズムが収束していることが、出力からわかります。そのため、UpdatedSVMModel
は完全な学習済み ClassificationSVM
分類器です。
updatedLoss = resubLoss(UpdatedSVMModel)
updatedLoss = 0.0769
完全な学習済み分類器の学習標本誤分類誤差は約 8% です。
入力引数
SVMModel
— 完全な学習済み SVM 分類器
ClassificationSVM
分類器
完全な学習済み SVM 分類器。fitcsvm
で学習をさせた ClassificationSVM
モデルを指定します。
numIter
— 反復回数
正の整数
SVM 分類器の学習を続行するための反復の回数。正の整数として指定します。
データ型: double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: resume(SVMModel,500,'Verbose',2)
は、さらに 500
回の反復について SVMModel
に学習をさせ、すべての反復で診断メッセージの表示と収束基準の保存を行うよう指定します。
Verbose
— 詳細レベル
0
| 1
| 2
詳細レベル。'Verbose'
と 0
、1
または 2
から構成されるコンマ区切りのペアとして指定します。Verbose
は、コマンド ウィンドウに表示され構造体として SVMModel.ConvergenceInfo.History
に保存される最適化情報の量を制御します。
次の表は、詳細レベルの値をまとめています。
値 | 説明 |
---|---|
0 | 収束情報の表示や保存は行われません。 |
1 | numprint 回の反復ごとに、診断メッセージが表示され、収束基準が保存されます。numprint は、名前と値のペアの引数 'NumPrint' の値です。 |
2 | 診断メッセージが表示され、1 回の反復ごとに収束基準が保存されます。 |
既定では、Verbose
は fitcsvm
で SVMModel
に学習をさせるために使用する値です。
例: 'Verbose',1
データ型: single
ヒント
ソルバーが 'SMO'
または 'ISDA'
である場合に最適化が収束しない場合は、SVM 分類器の学習の再開を試してください。
参照
[1] Fan, R.-E., P.-H. Chen, and C.-J. Lin. “Working set selection using second order information for training support vector machines.” Journal of Machine Learning Research, Vol. 6, 2005, pp. 1889–1918.
[2] Kecman V., T. -M. Huang, and M. Vogt. “Iterative Single Data Algorithm for Training Kernel Machines from Huge Data Sets: Theory and Performance.” Support Vector Machines: Theory and Applications. Edited by Lipo Wang, 255–274. Berlin: Springer-Verlag, 2005.
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2014a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)