このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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 Properties, Methods
Mdl
は従来式の学習済みカーネル回帰モデルを表す RegressionKernel
モデル オブジェクトです。
従来式の学習済みカーネル回帰モデルをインクリメンタル学習用のモデルに変換します。
IncrementalMdl = incrementalLearner(Mdl)
IncrementalMdl = incrementalRegressionKernel IsWarm: 1 Metrics: [1×2 table] ResponseTransform: 'none' NumExpansionDimensions: 2048 KernelScale: 1 Properties, Methods
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")
プロットは、分類器がインクリメンタル学習において移動している被験者を正しく予測していることを示しています。
入力引数
インクリメンタル学習モデル。incrementalClassificationKernel
または incrementalRegressionKernel
というモデル オブジェクトとして指定します。Mdl
は、直接作成することも、サポートされている従来式の学習済み機械学習モデルを関数 incrementalLearner
によって変換して作成することもできます。詳細については、対応するリファレンス ページを参照してください。
観測値のバッチでラベルを予測するように Mdl
を構成しなければなりません。
Mdl
が従来式の学習済みモデルから変換されたモデルの場合、いかなる修正も行うことなくラベルを予測できます。それ以外の場合、
fit
またはupdateMetricsAndFit
を使用してMdl
をデータに当てはめる必要があります。
予測子データのバッチ。n 個の観測値と Mdl.NumPredictors
個の予測子変数で構成される浮動小数点行列として指定します。
データ型: single
| double
出力引数
予測応答 (ラベル)。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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)