predict
説明
例
応答予測
従来式の学習済みカーネル モデルを変換してインクリメンタル学習モデルを作成し、両方のモデルを使用して応答を予測します。
2015 年のニューヨーク市住宅データ セットを読み込みます。このデータの詳細については、NYC Open Data を参照してください。
load NYCHousing2015
テーブルから応答変数 SALEPRICE
を抽出します。数値安定性を得るために、SALEPRICE
を 1e6
の尺度でスケールします。
Y = NYCHousing2015.SALEPRICE/1e6; NYCHousing2015.SALEPRICE = [];
この例の計算コストを削減するために、254 個のカテゴリをもつカテゴリカル変数が含まれている NEIGHBORHOOD
列を削除します。
NYCHousing2015.NEIGHBORHOOD = [];
他のカテゴリカル予測子からダミー変数メトリクスを作成します。
catvars = ["BOROUGH","BUILDINGCLASSCATEGORY"]; dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015, ... InputVariables=catvars); dumvarmat = table2array(dumvarstbl); NYCHousing2015(:,catvars) = [];
テーブル内の他のすべての数値変数を売価の予測子として扱います。ダミー変数の行列を予測子データの残りに連結します。
idxnum = varfun(@isnumeric,NYCHousing2015,OutputFormat="uniform");
X = [dumvarmat NYCHousing2015{:,idxnum}];
カーネル回帰モデルをデータ セット全体に当てはめます。
Mdl = fitrkernel(X,Y)
Mdl = RegressionKernel ResponseName: 'Y' Learner: 'svm' NumExpansionDimensions: 2048 KernelScale: 1 Lambda: 1.0935e-05 BoxConstraint: 1 Epsilon: 0.0549
Mdl
は従来式の学習済みカーネル回帰モデルを表す RegressionKernel
モデル オブジェクトです。
従来式の学習済みカーネル回帰モデルをインクリメンタル学習用のモデルに変換します。
IncrementalMdl = incrementalLearner(Mdl)
IncrementalMdl = incrementalRegressionKernel IsWarm: 1 Metrics: [1x2 table] ResponseTransform: 'none' NumExpansionDimensions: 2048 KernelScale: 1
IncrementalMdl
は、インクリメンタル学習用に準備された incrementalRegressionKernel
モデル オブジェクトです。
関数 incrementalLearner
は、モデル パラメーターを、Mdl
が学習データから抽出した他の情報と共に渡して、インクリメンタル学習器を初期化します。IncrementalMdl
はウォーム (IsWarm
が 1
) です。これは、インクリメンタル学習関数がパフォーマンス メトリクスの追跡を開始できることを意味します。
従来式の学習済みモデルから変換して作成したインクリメンタル学習器は、追加の処理なしで予測を生成できます。
両方のモデルを使用して、すべての観測値の売価を予測します。
ttyfit = predict(Mdl,X); ilyfit = predict(IncrementalMdl,X); compareyfit = norm(ttyfit - ilyfit)
compareyfit = 0
モデルによって生成された近似値の差は 0
です。
事後クラス確率の計算
事後クラス確率を計算するには、ロジスティック回帰インクリメンタル学習器を指定します。
人の行動のデータ セットを読み込みます。データをランダムにシャッフルします。
load humanactivity n = numel(actid); rng(10) % For reproducibility idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
データ セットの詳細については、コマンド ラインで Description
を入力してください。
応答は、次の 5 つのクラスのいずれかになります。座る、立つ、歩く、走る、または踊る。被験者が移動しているかどうか (actid
> 2) を基準に、応答を二分します。
Y = Y > 2;
バイナリ分類用のインクリメンタル ロジスティック回帰モデルを作成します。モデルを最初の 10 個の観測値に当てはめて predict
用に準備します。
Mdl = incrementalClassificationKernel(Learner="logistic");
initobs = 10;
Mdl = fit(Mdl,X(1:initobs,:),Y(1:initobs));
Mdl
は incrementalClassificationKernel
モデルです。そのプロパティはすべて読み取り専用です。
データ ストリームをシミュレートし、50 個の観測値の入力チャンクごとに次のアクションを実行します。
predict
を呼び出して、データの入力チャンクの観測値における分類スコアを予測します。分類スコアは、ロジスティック回帰学習器の事後クラス確率です。rocmetrics
を呼び出して、分類スコアを使って ROC 曲線の下の領域 (AUC) を計算し、結果を保存します。fit
を呼び出して、モデルを入力チャンクに当てはめます。前のインクリメンタル モデルを、入力観測値に当てはめた新しいモデルで上書きします。
numObsPerChunk = 50; nchunk = floor((n - initobs)/numObsPerChunk); auc = zeros(nchunk,1); % Incremental learning for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1 + initobs); iend = min(n,numObsPerChunk*j + initobs); idx = ibegin:iend; [~,posteriorProb] = predict(Mdl,X(idx,:)); mdlROC = rocmetrics(Y(idx),posteriorProb,Mdl.ClassNames); auc(j) = mdlROC.AUC(2); Mdl = fit(Mdl,X(idx,:),Y(idx)); end
Mdl
は、ストリーム内のすべてのデータで学習させた incrementalClassificationKernel
モデル オブジェクトです。
データの入力チャンクの AUC をプロットします。
plot(auc) xlim([0 nchunk]) ylabel("AUC") xlabel("Iteration")
プロットは、分類器がインクリメンタル学習において移動している被験者を正しく予測していることを示しています。
入力引数
Mdl
— インクリメンタル学習モデル
incrementalClassificationKernel
モデル オブジェクト | incrementalRegressionKernel
モデル オブジェクト
インクリメンタル学習モデル。incrementalClassificationKernel
または incrementalRegressionKernel
というモデル オブジェクトとして指定します。Mdl
は、直接作成することも、サポートされている従来式の学習済み機械学習モデルを関数 incrementalLearner
によって変換して作成することもできます。詳細については、対応するリファレンス ページを参照してください。
観測値のバッチでラベルを予測するように Mdl
を構成しなければなりません。
Mdl
が従来式の学習済みモデルから変換されたモデルの場合、いかなる修正も行うことなくラベルを予測できます。それ以外の場合、
fit
またはupdateMetricsAndFit
を使用してMdl
をデータに当てはめる必要があります。
X
— 予測子データのバッチ
浮動小数点行列
予測子データのバッチ。n 個の観測値と Mdl.NumPredictors
個の予測子変数で構成される浮動小数点行列として指定します。
メモ
predict
は、浮動小数点の入力予測子データのみをサポートしています。入力データに categorical データが含まれている場合は、エンコード バージョンの categorical データを準備する必要があります。dummyvar
を使用して、各カテゴリカル変数をダミー変数で構成される数値行列に変換します。その後、すべてのダミー変数行列とその他の数値予測子を連結します。詳細については、ダミー変数を参照してください。
データ型: single
| double
出力引数
label
— 予測応答 (ラベル)
categorical 配列 | 文字配列 | string ベクトル | logical ベクトル | 文字ベクトルの cell 配列 | 浮動小数点ベクトル
予測応答 (ラベル)。n 行の categorical 配列または文字配列、浮動小数点ベクトル、logical ベクトルまたは string ベクトル、文字ベクトルの cell 配列として返されます。n は X
の観測値の数、label(
は観測値 j
)
の予測応答です。j
回帰問題の場合、
label
は浮動小数点ベクトルです。分類問題の場合、
label
はMdl.ClassNames
に格納されているクラス名と同じデータ型になります。(string 配列は文字ベクトルの cell 配列として扱われます)。関数
predict
は、スコアが最高になるクラスに観測値を分類します。観測値のスコアがNaN
の場合、関数はこの観測値を、学習ラベルの最大比率を占める多数クラスに分類します。
詳細
分類スコア
バイナリ分類用のカーネル インクリメンタル学習モデルの場合、観測値 x (行ベクトル) を陽性クラス (Mdl.ClassNames
の 2 番目のクラス) に分類する生の "分類スコア" は次のとおりです。
は特徴量を拡張するための観測値の変換です。
β0 はスカラー バイアスです。
β は係数の列ベクトルです。
x を陰性クラス (Mdl.ClassNames
の 1 番目のクラス) に分類する生の分類スコアは f(x) です。このソフトウェアでは、スコアが正になるクラスに観測値が分類されます。
カーネル分類モデルがロジスティック回帰学習器から構成されている場合、"logit"
スコア変換が生の分類スコアに適用されます。
バージョン履歴
R2022a で導入
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)