ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

RegressionSVM クラス

スーパークラス: CompactRegressionSVM

サポート ベクター マシン回帰モデル

説明

RegressionSVM は、サポート ベクター マシン (SVM) 回帰モデルです。RegressionSVM モデルを学習させるには、fitrsvm と標本データを使用します。

RegressionSVM モデルには、データ、パラメーター値、サポート ベクターおよびアルゴリズム実装情報が格納されます。これらのモデルを使用すると、以下を行うことができます。

  • 再代入予測の推定。詳細は、resubPredictを参照してください。

  • 新しいデータの値の予測。詳細は、predictを参照してください。

  • 再代入損失の計算。詳細は、resubLossを参照してください。

  • 平均二乗誤差またはイプシロン不感応損失の計算。詳細は、lossを参照してください。

構築

RegressionSVM オブジェクトの作成には fitrsvm を使用します。

プロパティ

すべて展開する

双対問題の係数。数値ベクトルを指定します。Alpha には、m 個の要素を含めます。m は、学習済み SVM 回帰モデルのサポート ベクターの個数です。双対問題では、各サポート ベクターについて 2 つずつのラグランジュ乗数を導入します。Alpha の値は、サポート ベクターについて推定した 2 つのラグランジュ乗数の差です。詳細は、サポート ベクター マシン回帰についてを参照してください。

RemoveDuplicates を使用して重複の削除を指定した場合、サポート ベクターである重複する観測値の特定の集合に対して、集合全体に対応する 1 つの係数が Alpha に格納されます。つまり、MATLAB® は、ある非ゼロ係数を重複集合内の 1 つの観測値によるものとし、係数 0 は集合内の他のすべての重複観測値によるものとします。

データ型: single | double

主線形問題の係数。長さが p の数値ベクトルとして格納されます。p は、SVM 回帰モデルにおける予測子の数です。

Beta の値は、最適化の主問題の線形係数です。

'linear' 以外のカーネル関数を使用してモデルを取得した場合、このプロパティは空 ('[]') になります。

predict メソッドでは、YFIT = (X/S)×Beta + Bias によりモデルの予測応答値を計算します。S は、KernelParameters.Scale プロパティに格納されているカーネル スケールの値です。

データ型: single | double

SVM 回帰モデルのバイアス項。スカラー値として格納されます。

データ型: single | double

双対問題のアルファ係数に対するボックス制約。n 個の要素が含まれている数値ベクトルとして格納されます。n は X 内の観測値の個数 (Mdl.NumObservations) です。

観測値 i について、双対係数 Alpha の絶対値が BoxConstraints(i) を超えることはできません。

'RemoveDuplicates' を使用して重複の削除を指定した場合、重複する観測値の特定の集合に対して、MATLAB はボックス制約を合計し、この合計が 1 つの観測値からのものと見なし、0 のボックス制約が集合内の他のすべての観測値によるものとします。

データ型: single | double

キャッシュ情報。次のフィールドをもつ構造体として格納されます。

フィールド説明
'Size'グラム行列のエントリを格納するために予約するキャッシュの (MB 単位の) サイズを示す正のスカラー値。キャッシュ サイズを設定するには、fitrsvm で名前と値のペアの引数 'CacheSize' を使用します。
'Algorithm'容量を超えたときにキャッシュからエントリを削除するために使用するアルゴリズムの名前が含まれている文字ベクトル。現在、使用可能なキャッシュ アルゴリズムは 'Queue' のみです。キャッシュ アルゴリズムは設定できません。

データ型: 構造体

カテゴリカル予測子のインデックス。正の整数のベクトルを指定します。CategoricalPredictors には、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値を格納します。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

データ型: single | double

収束情報。次のフィールドをもつ構造体として格納されます。

フィールド説明
Convergedアルゴリズムが収束したかどうかを示す論理フラグ。1 という値は、収束したことを示します。
ReasonForConvergence収束の検出に使用された条件を示す文字ベクトル。
Gap双対目的関数と主目的関数の間の実行可能性ギャップを示すスカラー。
GapTolerance実行可能性ギャップの許容誤差を示すスカラー。この許容誤差は、fitrsvm で名前と値のペアの引数 'GapTolerance' を使用して設定できます。
DeltaGradient下位の違反値と上位の違反値の間の勾配差分を示すスカラー。
DeltaGradientTolerance勾配差分の許容誤差を示すスカラー。この許容誤差は、fitrsvm で名前と値のペアの引数 DeltaGradientTolerance を使用して設定できます。
LargestKKTViolationカルーシュ・キューン・タッカー (KKT) 違反の最大値を示すスカラー。
KKTToleranceKKT 違反の最大値に対するスカラーの許容誤差。この許容誤差は、fitrsvm で名前と値のペアの引数 'KKTTolerance' を使用して設定できます。
History

モデルを学習させる過程で定期的に記録された収束情報が含まれている構造体。この構造体には、次のフィールドが含まれています。

  • NumIterations ― 収束基準を記録した反復インデックスの配列。

  • Gap ― これらの反復における Gap の値。

  • DeltaGradient ― これらの反復における DeltaGradient の値。

  • LargestKKTViolation ― これらの反復における LargestKKTViolation の値。

  • NumSupportVectors ― これらの反復におけるサポート ベクターの数。

  • Objective ― これらの反復における Objective の値。

Objective双対目的の数値。

データ型: 構造体

イプシロン不感応区間の幅の半分。非負のスカラー値として格納されます。

データ型: single | double

展開された予測子名。文字ベクトルの cell 配列として格納されます。

モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNamesPredictorNames と同じです。

データ型: cell

学習データにおける勾配の値。2n 個の要素が含まれている数値ベクトルとして格納されます。n は、学習データに含まれている観測値の数です。

Gradient の要素 i には、最適化が完了した後の観測値 i におけるイプシロン不感応区間の上限に対応する Alpha 係数の勾配の値が格納されます。

Gradient の要素 i + NumObservations には、最適化が完了した後の観測値 i におけるイプシロン不感応区間の下限に対応する Alpha 係数の勾配の値が格納されます。

データ型: single | double

ハイパーパラメーターの交差検証最適化の説明。BayesianOptimization オブジェクト、またはハイパーパラメーターおよび関連する値が含まれているテーブルとして格納されます。作成時に名前と値のペア OptimizeHyperparameters が空ではない場合、これは空ではありません。値は、作成時の名前と値のペア HyperparameterOptimizationOptions の設定によって決まります。

  • 'bayesopt' (既定) — BayesianOptimization クラスのオブジェクト

  • 'gridsearch' または 'randomsearch' — 使用したハイパーパラメーター、観測された目的関数の値(交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されているテーブル

データ型: テーブル

観測値がサポート ベクターであるかどうか示すフラグ。n 行 1 列の logical ベクトルとして格納されます。n は X 内の観測値の個数 (NumObservations を参照) です。1 という値は、学習データ内の対応する観測値がサポート ベクターであることを示します。

RemoveDuplicates を使用して重複の削除を指定した場合、サポート ベクターである重複する観測値の特定の集合に対して、IsSupportVector では 1 つの観測値のみにサポート ベクターであるというフラグが設定されます。

データ型: logical

カーネル関数のパラメーター。次のフィールドをもつ構造体として格納されます。

フィールド説明
Function カーネル関数名 (文字ベクトル)。
Scale予測子の値の除算に使用する数値スケール係数。

KernelParameters.Function および KernelParameters.Scale の値は、それぞれ fitrsvmKernelFunction および KernelScale の名前と値のペアの引数を使用して指定できます。

データ型: 構造体

SVM 回帰モデルを学習させるために使用したパラメーターの値。モデル パラメーター オブジェクトとして格納されます。ModelParameters のプロパティにアクセスするには、ドット表記を使用します。たとえば、モデルを学習させるために使用した Epsilon の値には、Mdl.ModelParameters.Epsilon としてアクセスします。

予測子の平均。数値ベクトルとして格納されます。

予測子が標準化されている場合、Mu は長さが p の数値ベクトルになります。p は、モデルを学習させるために使用した予測子の数です。この場合、predict メソッドでは、Mu の対応する要素を各列から減算することにより、予測子の行列 X をセンタリングします。

予測子が標準化されていない場合、Mu は空 ('[]') になります。

データにカテゴリカル予測子が含まれている場合、それらの予測子についてのダミー変数に対応する要素が Mu に含まれます。ダミー変数はセンタリングもスケーリングもされないので、Mu 内の対応する要素は 0 になります。

データ型: single | double

最適化ルーチンが収束に達するために要した反復の数。正の整数値として格納されます。

反復数の制限を設定するには、fitrsvm の名前と値のペアの引数 'IterationLimit' を使用します。

データ型: single | double

学習データに含まれている観測値の数。正の整数値として格納されます。

データ型: single | double

予測子名。X に現れる順序で各予測子の名前が含まれている文字ベクトルの cell 配列として格納されます。PredictorNames の長さは、X の列数と等しくなります。

データ型: cell

学習セット内の予想される外れ値の比率。[0,1] の範囲にあるスカラー値として格納されます。予想される外れ値の比率は、fitrsvm で名前と値のペアの引数 'OutlierFraction' を使用して指定できます。

データ型: double

応答変数名。文字ベクトルとして格納されます。

データ型: char

応答変換関数。'none' または関数ハンドルを指定します。ResponseTransform は、生の応答値を変換する方法を表します。

MATLAB 関数やユーザー定義関数の場合は、関数ハンドルを入力します。たとえば、Mdl.ResponseTransform = @function を入力できます。ここで function は、元の応答の数値ベクトルを受け入れ、変換した応答が格納されている同じサイズの数値ベクトルを返します。

データ型: char | 関数ハンドル

最適化時におけるアクティブ セットの縮小間の反復数。非負の整数値として格納されます。

縮小期間は、fitrsvm で名前と値のペアの引数 'ShrinkagePeriod' を使用して設定できます。

データ型: single | double

予測子の標準偏差。数値ベクトルとして格納されます。

予測子が標準化されている場合、Sigma は長さが p の数値ベクトルになります。p は、モデルを学習させるために使用した予測子の数です。この場合、predict メソッドでは、Mu を使用して各要素をセンタリングした後で、Sigma の対応する要素で各列を除算することにより、予測子行列 X をスケーリングします。

予測子が標準化されていない場合、Sigma は空 ('[]') になります。

データにカテゴリカル予測子が含まれている場合、それらの予測子についてのダミー変数に対応する要素が Sigma に含まれます。ダミー変数はセンタリングもスケーリングもされないので、Sigma 内の対応する要素は 1 になります。

データ型: single | double

最適化問題を解くために使用したソルバー アルゴリズムの名前。次の表の値が格納されます。

説明
'SMO'逐次最小最適化
'ISDA'反復単一データ アルゴリズム
'L1QP'二次計画法による L1 ソフト マージン最小化 (Optimization Toolbox™ のライセンスが必要)。

サポート ベクター。m 行 p 列の数値行列として格納されます。m はサポート ベクターの個数 (sum(Mdl.IsSupportVector))、p は X 内の予測子の個数です。

RemoveDuplicates を使用して重複の削除を指定した場合、サポート ベクターである重複する観測値の特定の集合に対して、1 つの一意なサポート ベクターが SupportVectors に格納されます。

データ型: single | double

モデルを学習させるために使用した観測値の重み。NumObservation 個の要素が含まれている数値ベクトルとして格納されます。fitrsvm は、学習に使用する重みを合計が 1 になるように正規化します。

データ型: single | double

モデルを学習させるために使用した予測子の値。行列に対してモデルを学習させた場合は数値の行列、テーブルに対してモデルを学習させた場合はテーブルとして格納されます。X のサイズは n 行 p 列になります。n は学習データの行数、p は予測子変数または列の数です。

データ型: single | double | テーブル

観測された応答値。NumObservations 個の要素が含まれている数値ベクトルとして格納されます。

データ型: single | double

メソッド

compactコンパクトなサポート ベクター マシン回帰モデル
crossval交差検証済みのサポート ベクター マシン回帰モデル
resubLossサポート ベクター マシン回帰モデルの再代入損失
resubPredictサポート ベクター マシン回帰モデルの再代入応答の予測
resumeサポート ベクター マシン回帰モデルの学習の再開

継承メソッド

discardSupportVectorsサポート ベクターの破棄
lossサポート ベクター マシン回帰モデルの回帰誤差
predictサポート ベクター マシン回帰モデルの使用による応答の予測

コピーのセマンティクス

値。値のクラスがコピー操作に与える影響については、オブジェクトのコピー (MATLAB)を参照してください。

すべて折りたたむ

この例では、行列に格納されている標本データを使用して線形サポート ベクター マシン (SVM) 回帰モデルを学習させる方法を示します。

carsmall データセットを読み込みます。

load carsmall
rng default  % for reproducibility

予測子変数 (X) として HorsepowerWeight を、応答変数 (Y) として MPG を指定します。

X = [Horsepower,Weight];
Y = MPG;

線形 SVM 回帰モデルを学習させます。

Mdl = fitrsvm(X,Y)
Mdl = 
  RegressionSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
                    Alpha: [75x1 double]
                     Bias: 43.2943
         KernelParameters: [1x1 struct]
          NumObservations: 93
           BoxConstraints: [93x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [93x1 logical]
                   Solver: 'SMO'


  Properties, Methods

Mdl が学習済みの RegressionSVM モデルであることと、そのプロパティのリストが、コマンド ウィンドウに表示されます。

モデルが収束したかチェックします。

Mdl.ConvergenceInfo.Converged
ans = logical
   0

0 は、モデルが収束しなかったことを示します。

MdlStd = fitrsvm(X,Y,'Standardize',true)
MdlStd = 
  RegressionSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
                    Alpha: [77x1 double]
                     Bias: 22.9131
         KernelParameters: [1x1 struct]
                       Mu: [109.3441 2.9625e+03]
                    Sigma: [45.3545 805.9668]
          NumObservations: 93
           BoxConstraints: [93x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [93x1 logical]
                   Solver: 'SMO'


  Properties, Methods

モデルが収束したかチェックします。

MdlStd.ConvergenceInfo.Converged
ans = logical
   1

1 は、モデルが収束したことを示します。

新しいモデルの再代入平均二乗誤差を計算します。

lStd = resubLoss(MdlStd)
lStd = 17.0256

UCI Machine Learning Repository のアワビのデータを使用してサポート ベクター マシン回帰モデルに学習をさせます。

データをダウンロードして、'abalone.csv' という名前で現在のフォルダに保存します。

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data';
websave('abalone.csv',url);

データをテーブルに読み込みます。変数名を指定します。

varnames = {'Sex'; 'Length'; 'Diameter'; 'Height'; 'Whole_weight';...
    'Shucked_weight'; 'Viscera_weight'; 'Shell_weight'; 'Rings'};
Tbl = readtable('abalone.csv','Filetype','text','ReadVariableNames',false);
Tbl.Properties.VariableNames = varnames;

標本データには 4177 個の観測値が含まれています。Sex を除くすべての予測子変数は連続です。この変数はカテゴリカル変数で、可能な値は 'M' (雄)、'F' (雌) および 'I' (稚貝) です。目標は、物理的な測定値を使用して (Rings に格納されている) アワビの輪の数を予測し、年齢を決定することです。

自動カーネル スケールのガウス カーネル関数を使用して SVM 回帰モデルを学習させます。データを標準化します。

rng default  % For reproducibility
Mdl = fitrsvm(Tbl,'Rings','KernelFunction','gaussian','KernelScale','auto',...
    'Standardize',true)
Mdl = 

  RegressionSVM
           PredictorNames: {1×8 cell}
             ResponseName: 'Rings'
    CategoricalPredictors: 1
        ResponseTransform: 'none'
                    Alpha: [3635×1 double]
                     Bias: 10.8144
         KernelParameters: [1×1 struct]
                       Mu: [1×10 double]
                    Sigma: [1×10 double]
          NumObservations: 4177
           BoxConstraints: [4177×1 double]
          ConvergenceInfo: [1×1 struct]
          IsSupportVector: [4177×1 logical]
                   Solver: 'SMO'


Mdl が学習済みの RegressionSVM モデルであることとプロパティのリストがコマンド ウィンドウに表示されます。

ドット表記を使用して、Mdl のプロパティを表示します。たとえば、モデルが収束したかどうかや、何回の反復が完了したかを確認します。

conv = Mdl.ConvergenceInfo.Converged
iter = Mdl.NumIterations
conv =

  logical

   1


iter =

        2759

返された結果は、このモデルが 2759 回の反復後に収束したことを示しています。

参照

[1] Nash, W.J., T. L. Sellers, S. R. Talbot, A. J. Cawthorn, and W. B. Ford. The Population Biology of Abalone (Haliotis species) in Tasmania. I. Blacklip Abalone (H. rubra) from the North Coast and Islands of Bass Strait, Sea Fisheries Division, Technical Report No. 48, 1994.

[2] Waugh, S. Extending and benchmarking Cascade-Correlation, Ph.D. thesis, Computer Science Department, University of Tasmania, 1995.

[3] Clark, D., Z. Schreter, A. Adams. A Quantitative Comparison of Dystal and Backpropagation, submitted to the Australian Conference on Neural Networks, 1996.

[4] Lichman, M. UCI Machine Learning Repository, [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.

拡張機能

R2015b で導入