主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

kfoldLoss

学習で使用しない観測値の分類損失

説明

l= kfoldLoss (CVMdlは,交差検証済みのバCVMdlによって取得した交差検証分類損失を返します。まり,他のすべての観測値を使用して学習を行うときにホ,ルドアウトする観測値の分類損失を,kfoldLossはすべての分割にいて推定します。

lには,CVMdlを構成する線形分類モデルの各正則化強度に対する分類損失が格納されます。

l= kfoldLoss (CVMdl名称,值は,1以上の名称,值引数のペアによって指定された追加オプションを使用します。たとえば,損失の計算に使用する分割や分類損失関数を指定します。

入力引数

すべて展開する

交差検証済みバ@ @ナリ線形分類モデル。ClassificationPartitionedLinearモデルオブジェクトとして指定します。ClassificationPartitionedLinearモデルオブジェクトを作成するには,fitclinearを使用し,交差検証用の名前と値のペアの引数のいずれかCrossValなど)を指定します。

推定値を取得するため,kfoldLossは線形分類モデルの交差検証に使用したものと同じデ,タ(XおよびY)を適用します。

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

分類スコアの予測に使用する分割の@ @ンデックス。“折叠”と正の整数の数値ベクトルから構成されるコンマ区切りのペアとして指定します。折叠の要素は1からCVMdl。KFoldの範囲でなければなりません。

例:“折叠”,[1 4 10]

デ,タ型:|

損失関数。“LossFun”と組み込みの損失関数名または関数ハンドルから構成されるコンマ区切りのペアとして指定します。

  • 次の表は,使用可能な損失関数の一覧です。対応する文字ベクトルまたは字符串スカラ,を使用して,いずれかを指定します。

    説明
    “binodeviance” 二項分布からの逸脱度
    “classiferror” 10進数の誤分類率
    “指数” 指数損失
    “枢纽” ヒンジ損失
    分对数的 ロジスティック損失
    “mincost” 最小予測誤分類コスト(事後確率である分類スコアの場合)
    “二次” 二次損失

    “mincost”は,事後確率である分類スコアに適しています。線形分類モデルの場合,既定の設定ではロジスティック回帰学習器は事後確率を分類スコアとして返しますが,SVM学習器はそうではありません(预测を参照)。

  • 関数ハンドル表記を使用して独自の関数を指定します。

    nX内の観測値数,Kを異なるクラスの数(元素个数(Mdl.ClassNames)Mdlは入力モデル)とします。使用する関数のシグネチャは次のようになっていなければなりません。

    lossvalue =lossfun(C、S、W、成本)
    ここで,

    • 出力引数lossvalueはスカラ,です。

    • 関数名 (lossfun)を選択します。

    • CnK列の逻辑行列で,行は対応する観測値が属するクラスを示しています。列の順序はMdl。ClassNamesのクラスの順序に対応します。

      Cを作成するには,各行にいて観測値pがクラスに含まれている場合にC(p,q) = 1を設定します。行pの他のすべての要素を0に設定します。

    • 年代は,分類スコアのnK列の行列です。列の順序はMdl。ClassNamesのクラスの順序に対応します。年代は分類スコアの行列で,预测の出力と同様です。

    • Wは,観測値の重みのn行1列の数値ベクトルです。Wを渡す場合,要素は正規化され,合計が1になります。

    • 成本は誤分類コストのk行K列の数値行列です。たとえば,成本=单位(K) -眼(K)は,正しい分類のコストとして0を,誤分類のコストとして1を指定します。

    “LossFun”@lossfunを使用して独自の関数を指定します。

デ,タ型:字符|字符串|function_handle

損失の集約レベル。“模式”“平均”または“个人”から構成されるコンマ区切りのペアとして指定します。

説明
“平均” 分割全体で平均した損失を返す
“个人” 各分割にいて損失を返す

例:“模式”,“个人”

出力引数

すべて展開する

交差検証分類損失。数値スカラ,ベクトルまたは行列として返されます。lの解釈はLossFunによって異なります。

交差検証済みモデルの正則化強度の数(元素个数(CVMdl.Trained {1} .Lambda)に格納)をR、分割数 (CVMdl。KFoldに格納)をFとします。

  • 模式“平均”の場合,lは1行R列のベクトルになります。L (jは,正則化強度jを使用する交差検証済みモデルのすべての分割に対する平均分類損失です。

  • それ以外の場合,lFR列の行列になります。L (jは,正則化強度jを使用する交差検証済みモデルの分割に対する分類損失です。

kfoldLosslを推定するため,CVMdlを作成したデタを使用します(XYを参照)。

すべて展開する

NLPのデ,タセットを読み込みます。

负载nlpdata

Xは予測子デ,タのスパ,ス行列,Yはクラスラベルの分类ベクトルです。デタには2を超えるクラスがあります。

モデルでは,あるWebページの単語数が统计和机器学习工具箱™ドキュメンテーションによるものであるかどうかを識別できなければなりません。したがって、统计和机器学习工具箱™のドキュメンテーションWebページに対応するラベルを識別します。

Ystats = Y ==“统计数据”

あるドキュメンテーションWebページの単語数が统计和机器学习工具箱™ドキュメンテーションによるものであるかどうかを識別できるバイナリ線形分類モデルの交差検証を行います。

rng (1);%用于再现性CVMdl = fitclinear(X,Ystats,“CrossVal”“上”);

CVMdlClassificationPartitionedLinearモデルです。既定では,10分割交差検証が実行されます。“KFold”名前と値のペアの引数を使用して分割数を変更できます。

分割外分類誤差率の平均を推定します。

ce = kfoldLoss(cvdl)
Ce = 7.6017e-04

または,名前と値のペアの引数“模式”,“个人”kfoldLossで指定することにより,分割ごとの分類誤差率を取得できます。

NLPのデ,タセットを読み込みます。K分割交差検証の分類誤差の推定で説明されているようにデ,タを前処理し,予測子デ,タを転置します。

负载nlpdataYstats = Y ==“统计数据”;X = X';

5分割の交差検証を使用してバescナリ線形分類モデルを交差検証します。SpaRSAを使用して目的関数を最適化します。予測子の観測値が列に対応することを指定します。

rng (1);%用于再现性CVMdl = fitclinear(X,Ystats,“规划求解”“sparsa”“KFold”5,...“ObservationsIn”“列”);CMdl = cvmdl .训练{1};

CVMdlClassificationPartitionedLinearモデルです。このモデルに含まれている训练有素的プロパティは,各分割の学習セットを使用して学習を行ったClassificationLinearモデルが格納されている5行1列のcell配列です。

次の線形損失を評価する無名関数を作成します。

l j - w j y j f j j w j

w j は観測値jの重み,y_jは応答j(陰性クラスの場合は-1,それ以外の場合は1),f_jは観測値jの生の分類スコアです。カスタム損失関数は特定の形式で記述しなければなりません。カスタム損失関数の記述に関するルルにいては,名前と値のペアの引数LossFunを参照してください。この関数では分類コストを使用しないので,を使用してkfoldLossに分類コストの位置を無視させます。

linearloss = @ (C, S W ~)和(- W。*总和(S . C * 2) / (W)之和;

線形損失関数を使用して平均の交差検証分類損失を推定します。また,各分割の損失を取得します。

ce = kfoldLoss(CVMdl,“LossFun”linearloss)
Ce = -8.0982
ceFold = kfoldLoss(CVMdl,“LossFun”linearloss,“模式”“个人”
ceFold =5×1-8.3165 -8.7633 -7.4342 -8.0423 -7.9347

ロジスティック回帰学習器を使用する線形分類モデルに適した套索ペナルティの強度を決定するため,検定標本の分類誤差率を比較します。

NLPのデ,タセットを読み込みます。カスタムな分類損失の指定で説明されているようにデ,タを前処理します。

负载nlpdataYstats = Y ==“统计数据”;X = X';

1 0 - 6 1 0 0 5 の範囲で対数間隔で配置された11個の正則化強度を作成します。

Lambda = logspace(-6,-0.5,11);

5分割の交差検証を使用してバescナリ線形分類モデルを交差検証します。各正則化強度を使用します。年代paRSA を使用して目的関数を最適化します。目的関数の勾配の許容誤差を1 e-8に下げます。

rng (10);%用于再现性CVMdl = fitclinear(X,Ystats,“ObservationsIn”“列”...“KFold”5,“学习者”“物流”“规划求解”“sparsa”...“正规化”“套索”“λ”λ,“GradientTolerance”1 e-8)
CVMdl = ClassificationPartitionedLinear CrossValidatedModel: 'Linear' ResponseName: 'Y' NumObservations: 31572 KFold: 5 Partition: [1x1 cvpartition] ClassNames: [0 1] ScoreTransform: 'none'属性,方法

学習済みの線形分類モデルを抽出します。

Mdl1 = CVMdl。训练有素的{1}
Mdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023x11 double]偏差:[1x11 double] Lambda: [1x11 double]学习者:'logistic'属性,方法

Mdl1ClassificationLinearモデルオブジェクトです。λは正則化強度のシ,ケンスなので,Mdlはそれぞれがλの各正則化強度に対応する11個のモデルであると考えることができます。

交差検証分類誤差を推定します。

ce = kfoldLoss(CVMdl);

11個の正則化強度があるので,ceは1行11列の分類誤差率のベクトルです。

λの値が大きくなると,予測子変数がスパ,スになります。これは分類器の品質として優れています。データセット全体を使用し,モデルの交差検証を行ったときと同じオプションを指定して,各正則化強度について線形分類モデルに学習をさせます。モデルごとに非ゼロの係数を特定します。

Mdl = fitclinear(X,Ystats,“ObservationsIn”“列”...“学习者”“物流”“规划求解”“sparsa”“正规化”“套索”...“λ”λ,“GradientTolerance”1 e-8);numNZCoeff = sum(Mdl.Beta~=0);

同じ図に,各正則化強度にいての交差検証分類誤差率と非ゼロ係数の頻度をプロットします。すべての変数を対数スケ,ルでプロットします。

图;[h,hL1,hL2] = plotyy(log10(Lambda),log10(ce),...log10(λ)log10 (numNZCoeff));hL1。标志=“o”;hL2。标志=“o”;ylabel (h (1),'log_{10}分类错误') ylabel (h (2),'log_{10}非零系数频率')包含(“log_{10}λ的)标题(测试样本统计的)举行

图包含2个轴。标题为Test-Sample Statistics的坐标轴1包含一个类型为line的对象。axis2包含一个line类型的对象。

予測子変数のスパス性と分類誤差の低さのバランスがとれている正則化強度のンデックスを選択します。この場合, 1 0 - 4 1 0 - 1 の値で十分なはずです。

idxFinal = 7;

選択した正則化強度のモデルをMdlから選択します。

MdlFinal = selectModels(Mdl,idxFinal);

MdlFinalは,1の正則化強度が含まれているClassificationLinearモデルです。新しい観測値のラベルを推定するには,MdlFinalと新しいデ,タを预测に渡します。

詳細

すべて展開する

R2016aで導入