RegressionLinear クラス
高次元データ用の線形回帰モデル
説明
RegressionLinear
は、回帰用の学習済み線形モデル オブジェクトです。線形モデルは、サポート ベクター マシン回帰 (SVM) または線形回帰モデルです。fitrlinear
は、高次元データセットの計算時間を短縮する手法 (確率的勾配降下法など) を使用して目的関数を最小化することによりRegressionLinear
モデルを当てはめます。回帰損失と正則化項を加算することにより目的関数が構成されます。
他の回帰モデルとは異なり、また、メモリ消費を節約するため、RegressionLinear
モデル オブジェクトには学習データが格納されません。ただし、推定した線形モデル係数、推定した係数、正則化強度などは格納されます。
学習済みのRegressionLinear
モデルを使用して、新しいデータに対する応答を予測できます。詳細については、predict
を参照してください。
構築
RegressionLinear
オブジェクトの作成にはfitrlinear
を使用します。
プロパティ
Epsilon
—イプシロン不感応区間の幅の半分
非負のスカラー
イプシロン不感応区間の幅の半分。非負のスカラーとして指定します。
Learner
が'svm'
ではない場合、Epsilon
は空の文字列 ([]
) です。
データ型:single
|double
Lambda
—正則化項の強度
非負のスカラー|非負値のベクトル。
正則化項の強度。非負のスカラーまたは非負値のベクトルを指定します。
データ型:double
|single
Learner
—線形回帰モデルのタイプ
'leastsquares'
|'svm'
線形回帰モデルのタイプ。'leastsquares'
または'svm'
を指定します。
次の表では、 です。
β は p 個の係数のベクトルです。
x は p 個の予測子変数による観測値です。
b はスカラー バイアスです。
値 | アルゴリズム | 損失関数 | FittedLoss の値 |
---|---|---|---|
'svm' |
サポート ベクター マシン回帰 | イプシロン不感応: | 'epsiloninsensitive' |
'leastsquares' |
通常の最小二乗による線形回帰 | 平均二乗誤差 (MSE): | 'mse' |
Beta
—線形係数の推定値
数値ベクトル
線形係数の推定値。長さが予測子数に等しい数値ベクトルを指定します。
データ型:double
Bias
—推定バイアス項
数値スカラー
推定バイアス項またはモデルの切片。数値スカラーを指定します。
データ型:double
FittedLoss
—線形モデルの当てはめに使用する損失関数
'epsiloninsensitive'
|'mse'
線形モデルの当てはめに使用する損失関数。'epsiloninsensitive'
または'mse'
を指定します。
値 | アルゴリズム | 損失関数 | Learner の値 |
---|---|---|---|
'epsiloninsensitive' |
サポート ベクター マシン回帰 | イプシロン不感応: | 'svm' |
'mse' |
通常の最小二乗による線形回帰 | 平均二乗誤差 (MSE): | 'leastsquares' |
Regularization
—複雑度ペナルティのタイプ
'lasso (L1)'
|'ridge (L2)'
複雑度ペナルティのタイプ。'lasso (L1)'
または'ridge (L2)'
を指定します。
最小化のための目的関数は、平均損失関数 (FittedLoss
を参照) と次の表の正則化値を加算することにより作成されます。
値 | 説明 |
---|---|
'lasso (L1)' |
LASSO (L1) ペナルティ: |
'ridge (L2)' |
リッジ (L2) ペナルティ: |
λ は、正則化項の強度を規定します (Lambda
を参照)。
バイアス項 (β0) は正則化ペナルティから除外されます。
CategoricalPredictors
—カテゴリカル予測子のインデックス
正の整数のベクトル|[]
カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors
には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~p
です。p
はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]
) になります。
データ型:single
|double
ModelParameters
—モデルに学習をさせるために使用されたパラメーター
構造体
RegressionLinear
モデルに学習をさせるために使用したパラメーター。構造体を指定します。
ModelParameters
のフィールドにはドット表記でアクセスします。たとえば、線形係数およびバイアス項の相対許容誤差にアクセスするにはMdl.ModelParameters.BetaTolerance
を使用します。
データ型:struct
PredictorNames
—予測子名
文字ベクトルの cell 配列
予測子データに現れる順序で並んでいる予測子名。文字ベクトルの cell 配列として指定します。PredictorNames
の長さは、予測子変数として使用される学習データX
またはTbl
に含まれている変数の数と等しくなります。
データ型:cell
ExpandedPredictorNames
—展開された予測子名
文字ベクトルの cell 配列
展開された予測子名。文字ベクトルの cell 配列を指定します。
モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames
には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNames
はPredictorNames
と同じです。
データ型:cell
ResponseName
—応答変数名
文字ベクトル
応答変数名。文字ベクトルを指定します。
データ型:char
ResponseTransform
—応答変換関数
'none'
|関数ハンドル
応答変換関数。'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 個の観測値をシミュレートします。
は、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'}
Mdl
はRegressionLinear
モデルです。Mdl
と学習データまたは新しいデータをloss
に渡して、標本内平均二乗誤差を調べることができます。または、Mdl
と新しい予測子データをpredict
に渡して、新しい観測値の応答を予測することができます。
FitInfo
は、重要な情報として終了ステータス (TerminationStatus
) とソルバーによるモデルのデータへの当てはめにかかった時間 (FitTime
) が含まれている構造体配列です。FitInfo
を使用して、最適化終了時の結果が満足できるものであるかどうかを判断することをお勧めします。この場合、fitrlinear
は最大反復回数に達しました。モデルに再学習をさせることもできますが、学習時間は短いので、データを通す回数を増やしてください。または、LBFGS など別のソルバーを試してください。
線形回帰モデルの使用による応答の予測
次のモデルにより、10000 個の観測値をシミュレートします。
は、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 です。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
fitrlinear
を使用して線形回帰モデルに学習をさせる場合、以下の制限が適用されます。予測子データの入力引数値は、行列である場合、非スパースの数値行列でなければなりません。コード生成ではスパース データがサポートされません。
正則化強度は 1 つしか指定できず、
'auto'
または名前と値のペアの引数'Lambda'
に非負のスカラーを指定します。名前と値のペアの引数
'ResponseTransform'
の値を無名関数にすることはできません。コーダー コンフィギュアラーを使用するコード生成ではカテゴリカル予測子 (
logical
、categorical
、char
、string
、またはcell
) がサポートされません。名前と値の引数'CategoricalPredictors'
は使用できません。カテゴリカル予測子をモデルに含めるには、モデルを当てはめる前にdummyvar
を使用してカテゴリカル予測子を前処理します。
詳細は、コード生成の紹介を参照してください。
バージョン履歴
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:
如何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)