Main Content

RegressionLinear クラス

高次元データ用の線形回帰モデル

説明

RegressionLinearは、回帰用の学習済み線形モデル オブジェクトです。線形モデルは、サポート ベクター マシン回帰 (SVM) または線形回帰モデルです。fitrlinearは、高次元データセットの計算時間を短縮する手法 (確率的勾配降下法など) を使用して目的関数を最小化することによりRegressionLinearモデルを当てはめます。回帰損失と正則化項を加算することにより目的関数が構成されます。

他の回帰モデルとは異なり、また、メモリ消費を節約するため、RegressionLinearモデル オブジェクトには学習データが格納されません。ただし、推定した線形モデル係数、推定した係数、正則化強度などは格納されます。

学習済みのRegressionLinearモデルを使用して、新しいデータに対する応答を予測できます。詳細については、predictを参照してください。

構築

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

プロパティ

すべて展開する

線形回帰のプロパティ

イプシロン不感応区間の幅の半分。非負のスカラーとして指定します。

Learner'svm'ではない場合、Epsilonは空の文字列 ([]) です。

データ型:single|double

正則化項の強度。非負のスカラーまたは非負値のベクトルを指定します。

データ型:double|single

線形回帰モデルのタイプ。'leastsquares'または'svm'を指定します。

次の表では、 f ( x ) = x β + b . です。

  • β は p 個の係数のベクトルです。

  • x は p 個の予測子変数による観測値です。

  • b はスカラー バイアスです。

アルゴリズム 損失関数 FittedLossの値
'svm' サポート ベクター マシン回帰 イプシロン不感応: [ y , f ( x ) ] = max [ 0 , | y f ( x ) | ε ] 'epsiloninsensitive'
'leastsquares' 通常の最小二乗による線形回帰 平均二乗誤差 (MSE): [ y , f ( x ) ] = 1 2 [ y f ( x ) ] 2 'mse'

線形係数の推定値。長さが予測子数に等しい数値ベクトルを指定します。

データ型:double

推定バイアス項またはモデルの切片。数値スカラーを指定します。

データ型:double

線形モデルの当てはめに使用する損失関数。'epsiloninsensitive'または'mse'を指定します。

アルゴリズム 損失関数 Learnerの値
'epsiloninsensitive' サポート ベクター マシン回帰 イプシロン不感応: [ y , f ( x ) ] = max [ 0 , | y f ( x ) | ε ] 'svm'
'mse' 通常の最小二乗による線形回帰 平均二乗誤差 (MSE): [ y , f ( x ) ] = 1 2 [ y f ( x ) ] 2 'leastsquares'

複雑度ペナルティのタイプ。'lasso (L1)'または'ridge (L2)'を指定します。

最小化のための目的関数は、平均損失関数 (FittedLossを参照) と次の表の正則化値を加算することにより作成されます。

説明
'lasso (L1)' LASSO (L1) ペナルティ: λ j = 1 p | β j |
'ridge (L2)' リッジ (L2) ペナルティ: λ 2 j = 1 p β j 2

λ は、正則化項の強度を規定します (Lambdaを参照)。

バイアス項 (β0) は正則化ペナルティから除外されます。

他の回帰のプロパティ

カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictorsには、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~pです。pはモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

データ型:single|double

RegressionLinearモデルに学習をさせるために使用したパラメーター。構造体を指定します。

ModelParametersのフィールドにはドット表記でアクセスします。たとえば、線形係数およびバイアス項の相対許容誤差にアクセスするにはMdl.ModelParameters.BetaToleranceを使用します。

データ型:struct

予測子データに現れる順序で並んでいる予測子名。文字ベクトルの cell 配列として指定します。PredictorNamesの長さは、予測子変数として使用される学習データXまたはTblに含まれている変数の数と等しくなります。

データ型:cell

展開された予測子名。文字ベクトルの cell 配列を指定します。

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

データ型:cell

応答変数名。文字ベクトルを指定します。

データ型:char

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

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

データ型:char|function_handle

オブジェクト関数

incrementalLearner 線形回帰モデルのインクリメンタル学習器への変換
lime Local Interpretable Model-agnostic Explanations (LIME)
loss 線形回帰モデルの回帰損失
partialDependence 部分従属の計算
plotPartialDependence 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
predict 線形回帰モデルの応答予測
selectModels 近似済み正則化線形回帰モデルの選択
shapley シャープレイ値
update コード生成用にモデル パラメーターを更新

コピーのセマンティクス

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

すべて折りたたむ

SVM、双対 SGD およびリッジ正則化を使用して線形回帰モデルに学習をさせます。

次のモデルにより、10000 個の観測値をシミュレートします。

y = x 1 0 0 + 2 x 2 0 0 + e .

  • X = x 1 , . . . , x 1 0 0 0 は、10% の要素が非ゼロ標準正規である 10000 行 1000 列のスパース行列です。

  • eは、平均が 0、標準偏差が 0.3 のランダムな正規誤差です。

rng(1)% For reproducibilityn = 1e4; d = 1e3; nz = 0.1; X = sprandn(n,d,nz); Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

線形回帰モデルに学習をさせます。既定の設定では、fitrlinearはリッジ ペナルティがあるサポート ベクター マシンを使用し、SVM 用の双対 SGD を使用して最適化を行います。近似の要約を抽出して、最適化アルゴリズムによるモデルがどの程度データにあてはまるかを判断します。

[Mdl,FitInfo] = fitrlinear(X,Y)
Mdl = RegressionLinear ResponseName:“Y”响应eTransform: 'none' Beta: [1000x1 double] Bias: -0.0056 Lambda: 1.0000e-04 Learner: 'svm' Properties, Methods
FitInfo =struct with fields:Lambda: 1.0000e-04 Objective: 0.2725 PassLimit: 10 NumPasses: 10 BatchLimit: [] NumIterations: 100000 GradientNorm: NaN GradientTolerance: 0 RelativeChangeInBeta: 0.4907 BetaTolerance: 1.0000e-04 DeltaGradient: 1.5816 DeltaGradientTolerance: 0.1000 TerminationCode: 0 TerminationStatus: {'Iteration limit exceeded.'} Alpha: [10000x1 double] History: [] FitTime: 0.0900 Solver: {'dual'}

MdlRegressionLinearモデルです。Mdlと学習データまたは新しいデータをlossに渡して、標本内平均二乗誤差を調べることができます。または、Mdlと新しい予測子データをpredictに渡して、新しい観測値の応答を予測することができます。

FitInfoは、重要な情報として終了ステータス (TerminationStatus) とソルバーによるモデルのデータへの当てはめにかかった時間 (FitTime) が含まれている構造体配列です。FitInfoを使用して、最適化終了時の結果が満足できるものであるかどうかを判断することをお勧めします。この場合、fitrlinearは最大反復回数に達しました。モデルに再学習をさせることもできますが、学習時間は短いので、データを通す回数を増やしてください。または、LBFGS など別のソルバーを試してください。

次のモデルにより、10000 個の観測値をシミュレートします。

y = x 1 0 0 + 2 x 2 0 0 + e .

  • X = { x 1 , . . . , x 1 0 0 0 } は、10% の要素が非ゼロ標準正規である 10000 行 1000 列のスパース行列です。

  • eは、平均が 0、標準偏差が 0.3 のランダムな正規誤差です。

rng(1)% For reproducibilityn = 1e4; d = 1e3; nz = 0.1; X = sprandn(n,d,nz); Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

5% のデータをホールドアウトします。

rng(1);% For reproducibilitycvp = cvpartition(n,'Holdout',0.05)
cvp = Hold-out cross validation partition NumObservations: 10000 NumTestSets: 1 TrainSize: 9500 TestSize: 500

cvpは、n個のデータを学習セットと検定セットに無作為に分割する方法を定義するCVPartitionオブジェクトです。

学習セットを使用して線形回帰モデルに学習をさせます。学習時間を短縮するため、観測値が列単位になるように予測子データの行列を配置します。

idxTrain = training(cvp);% Extract training set indicesX = X'; Mdl = fitrlinear(X(:,idxTrain),Y(idxTrain),'ObservationsIn','columns');

ホールドアウト標本の観測値と平均二乗誤差 (MSE) を予測します。

idxTest = test(cvp);% Extract test set indicesyHat = predict(Mdl,X(:,idxTest),'ObservationsIn','columns'); L = loss(Mdl,X(:,idxTest),Y(idxTest),'ObservationsIn','columns')
L = 0.1851

ホールドアウト標本の MSE は 0.1852 です。

拡張機能

バージョン履歴

R2016a で導入