主要内容

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

损失

クラス:ClassificationLinear

線形分類モデルの分類損失

説明

l=损失(MdlXYは,X内の予測子デ,タとY内の対応するクラスラベルを使用して,バMdl分類損失を返します。lには,Mdlの各正則化強度に対する分類誤差率が格納されます。

l=损失(Mdl资源描述ResponseVarNameは,资源描述内の予測子デ,タと资源描述。ResponseVarName内の真のクラスラベルに対する分類損失を返します。

l=损失(Mdl资源描述Yは,テ,ブル资源描述内の予測子デ,タとY内の真のクラスラベルに対する分類損失を返します。

l=损失(___名称,值では,前の構文におけるいずれかの入力引数の組み合わせに加えて,1つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば,予測子デ,タの列が観測値に対応することや分類損失関数を指定します。

入力引数

すべて展開する

バ@ @ナリ線形分類モデル。ClassificationLinearモデルオブジェクトとして指定します。ClassificationLinearモデルオブジェクトは,fitclinearを使用して作成できます。

予測子デ,タ。n行p列の非スパース行列またはスパース行列を指定します。このXの配置は,各行が個々の観測値に,各列が個々の予測子変数に対応することを示しています。

メモ

観測値が列に対応するように予測子行列を配置して“ObservationsIn”、“列”を指定すると,計算時間が大幅に短縮される可能性があります。

Yの長さとXの観測値数は同じでなければなりません。

デ,タ型:|

クラスラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。

  • Yのデ,タ型はMdl。ClassNamesのデ,タ型と同じでなければなりません。(字符串配列は文字ベクトルのcell配列として扱われます)。

  • Yの各クラスはMdl。ClassNamesのサブセットでなければなりません。

  • Yが文字配列の場合,各要素は配列の1の行に対応しなければなりません。

  • Yの長さはXまたは资源描述の観測値の数と等しくなければなりません。

デ,タ型:分类|字符|字符串|逻辑|||细胞

モデルを学習させるために使用する標本デ,タ。テ,ブルとして指定します。资源描述の各行は1の観測値に,各列は1。必要に応じて,応答変数用および観測値の重み用の追加列を资源描述に含めることができます。资源描述には,Mdlを学習させるために使用したすべての予測子が含まれていなければなりません。文字ベクトルのcell配列ではない cell 配列と複数列の変数は使用できません。

Mdlを学習させるために使用した応答変数が资源描述に含まれている場合,ResponseVarNameまたはYを指定する必要はありません。

テ,ブルに格納されている標本デ,タを使用してMdlの学習を行った場合,损失の入力デ,タもテ,ブルに格納されていなければなりません。

応答変数の名前。资源描述内の変数の名前で指定します。Mdlを学習させるために使用した応答変数が资源描述に含まれている場合,ResponseVarNameを指定する必要はありません。

ResponseVarNameを指定する場合は,文字ベクトルまたは字符串スカラ,として指定しなければなりません。たとえば,応答変数が资源描述。Yとして格納されている場合,ResponseVarNameとして“Y”を指定します。それ以外の場合,资源描述の列は资源描述。Yを含めてすべて予測子として扱われます。

応答変数は,绝对配列,文字配列,字符串配列,逻辑ベクトル,数値ベクトル,または文字ベクトルの细胞配列でなければなりません。応答変数が文字配列の場合,各要素は配列の1の行に対応しなければなりません。

デ,タ型:字符|字符串

名前と値の引数

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

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

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

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

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

  • カスタム損失関数を指定するには,関数ハンドル表記を使用します。関数は次の形式でなければなりません。

    lossvalue =lossfun(C、S、W、成本)

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

    • 関数名 (lossfun)を指定します。

    • CnK列の逻辑行列であり,対応する観測値が属するクラスを各行が示します。n资源描述またはX内の観測値の個数,Kは異なるクラスの個数(元素个数(Mdl.ClassNames))です。列の順序はMdl。ClassNamesのクラスの順序に対応します。各行にいて観測値pがクラスに属する場合はC(p,q) = 1を設定することにより,Cを作成します。行pの他のすべての要素を0に設定します。

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

    • Wは,観測値の重みのn行1列の数値ベクトルです。

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

例:“LossFun”@lossfun

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

予測子デ,タにおける観測値の次元。“行”または“列”として指定します。

メモ

観測値が列に対応するように予測子行列を配置して“ObservationsIn”、“列”を指定すると,計算時間が大幅に短縮される可能性があります。表の予測子デ,タに対して“ObservationsIn”、“列”を指定することはできません。

デ,タ型:字符|字符串

観測値の重み。“重量”と数値ベクトル,または资源描述に含まれる変数の名前から構成されるコンマ区切りのペアとして指定します。

  • 权重として数値ベクトルを指定する場合,权重のサ@ @ズはXまたは资源描述内の観測値の個数と等しくなければなりません。

  • 权重として资源描述内の変数名を指定する場合,名前は文字ベクトルまたは字符串スカラ,でなければなりません。たとえば,重みが资源描述。Wとして格納されている場合,权重として' W 'を指定します。それ以外の場合,资源描述の列は资源描述。Wを含めてすべて予測子として扱われます。

重みを指定した場合,各正則化強度にいて,损失は,加重分類損失を計算し,合計がそれぞれのクラスの事前確率の値になるように重みを正規化します。

デ,タ型:|

出力引数

すべて展開する

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

lのサ@ @ズはMdl。lambdaと同じです。L (jは,正則化強度Mdl。lambda(jを使用して学習をさせた線形分類モデルの分類損失です。

すべて展開する

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

负载nlpdata

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

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

Ystats = Y ==“统计数据”

あるドキュメンテーションWebページの単語数が统计和机器学习工具箱™ドキュメンテーションによるものであるかどうかを識別できるバイナリ線形分類モデルに学習をさせます。観測値の30%をホ,ルドアウトするように指定します。SpaRSAを使用して目的関数を最適化します。

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

CVMdlClassificationPartitionedLinearモデルです。これには训练有素的プロパティが含まれています。これは1行1列のcell配列で,学習セットにより学習させたClassificationLinearモデルが格納されています。

学習デ,タと検定デ,タを分割の定義から抽出します。

trainIdx = training(CVMdl.Partition);testdx = test(CVMdl.Partition);

学習標本および検定標本の分類誤差を推定します。

ceTrain = loss(CMdl,X(trainIdx,:),Ystats(trainIdx))
ceTrain = 1.3572e-04
CMdl,X(testdx,:),Ystats(testdx))
ceTest = 5.2804e-04

CMdl内の正則化強度は1なので,ceTraincet(中央东部东京)は数値スカラ,になります。

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

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

バ@ @ナリ線形分類モデルに学習をさせます。観測値の30%をホ,ルドアウトするように指定します。SpaRSAを使用して目的関数を最適化します。予測子の観測値が列に対応することを指定します。

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

CVMdlClassificationPartitionedLinearモデルです。これには训练有素的プロパティが含まれています。これは1行1列のcell配列で,学習セットにより学習させたClassificationLinearモデルが格納されています。

学習デ,タと検定デ,タを分割の定義から抽出します。

trainIdx = training(CVMdl.Partition);testdx = test(CVMdl.Partition);

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

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

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

linearloss = @ (C、S、W、成本)和(- W。*总和(S . C * 2) / (W)之和;

線形損失関数を使用して,学習標本および検定標本の分類損失を推定します。

ceTrain = loss(CMdl,X(:,trainIdx),Ystats(trainIdx),“LossFun”linearloss,...“ObservationsIn”“列”
ceTrain = -7.8330
ceTest = loss(CMdl,X(:, testdx),Ystats(testdx),“LossFun”linearloss,...“ObservationsIn”“列”
ceTest = -7.7383

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

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

负载nlpdataYstats = Y ==“统计数据”;X = X';rng (10);%用于再现性分区= cvpartition(Ystats,“坚持”, 0.30);testdx = test(分区);XTest = X(:, testdx);YTest = Ystats(testdx);

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

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

各正則化強度を使用するバ@ @ナリ線形分類モデルに学習をさせます。SpaRSAを使用して目的関数を最適化します。目的関数の勾配の許容誤差を1 e-8に下げます。

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

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

Mdl = CVMdl。训练有素的{1}
Mdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023x11 double]偏差:[-12.0872 -12.0872 -12.0872 -12.0872 -12.0872 -12.0872…[Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05…]学习者:“逻辑”属性,方法

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

検定標本の分類誤差を推定します。

ce = loss(Mdl,X(:, testdx),Ystats(testdx),“ObservationsIn”“列”);

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(Lambda),log10(numNZCoeff + 1));hL1。标志=“o”;hL2。标志=“o”;ylabel (h (1),'log_{10}分类错误') ylabel (h (2),'log_{10}非零系数频率')包含(“log_{10}λ的)标题(测试样本统计的)举行

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

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

idxFinal = 7;

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

MdlFinal = selectModels(Mdl,idxFinal);

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

詳細

すべて展開する

アルゴリズム

既定の設定では,観測値の重みはクラスの事前確率です。权重を使用して重みを指定した場合,合計がそれぞれのクラスの事前確率になるように正規化されます。重み付き分類損失の推定には,再正規化された値が使用されます。

拡張機能

バ,ジョン履歴

R2016aで導入