このページ最新ではありませ。をクリックし,英语のの最新版版を参照参照し。
kfoldloss
学習で使用しない観測値の分類損失
説明
入力引数
CVMdl
—線形分類モデルから構成される交差検証済みの ECOC モデル
分类部门甲基核酸杆菌
モデルオブジェクト
线形分类からされる交差検证検证のののモデルモデル分类部门甲基核酸杆菌
モデルオブジェクト指定します。分类部门甲基核酸杆菌
モデルをするには,fitcecoc
を使用し、以下を行います。
交差検証用の名前と値のペアの引数のいずれか 1 つ (
CrossVal
など)をを名前とのペアの引数
Learners
を、“线性”
に、またはTemplatelinear
によって返される線形分類モデル テンプレートに設定
推定値を取得するため、kfoldLoss は ECOC モデルの交差検証に使用したものと同じデータ (X
およびY
)を適用します。
名前と値の引数
オプションの姓名,Value
引数のコンマ区切りペアを指定します。姓名
は引数名,Value
は対応するです。姓名
は引用でなければなりませ。。姓名1,Value1,...,NameN,ValueN
のに复数名前とのペア引数を任意の顺番で指定指定ます。。。
BinaryLoss
—バイナリ学习器损失关数
'hamming'
|“线性”
|'logit'
|“指数”
|'binodeviance'
|'合页'
|'quadratic'
|関数ハンドル
バイナリ学習器の損失関数。'BinaryLoss'
と組み込みの損失関数名または関数ハンドルから構成されるコンマ区切りのペアとして指定します。
次の表には、組み込み関数の名前と説明が含まれています。ここで、yjは特定バイナリ器のクラスラベルラベル(-1,1,1,0}内)、Sjは観测j jの,g(yj,sj) はバイナリ損失の式です。
値 説明 スコア領域 g(yj,sj) 'binodeviance'
二项分布の逸脱度 (–∞,∞) log[1 + exp(–2yjsj)]/[2log(2)] “指数”
指数 (–∞,∞) Exp(–yjsj)/2 'hamming'
ハミング [0,1]または(–∞,∞) [1 – sign(yjsj)/2 '合页'
ヒンジ (–∞,∞) max(0,1 - yjsj)/2 “线性”
線形 (–∞,∞) (1 - yjsj)/2 'logit'
ロジスティック (–∞,∞) log[1 + exp(–yjsj)]/[2log(2)] 'quadratic'
2次 [0,1] [1 – yj(2sj– 1)]2/2 バイナリ,yj= 0のにがが=になるにされ。またまた,各クラスについて平均ののバイナリ损失がが计算计算
カスタムバイナリ損失関数、たとえば
customFunction
は関数ハンドル'BinaryLoss',@CustomFunction
を指定します。customFunction
は以下ようなになります。开花= customFunction(M,s)
M
はMdl.CodingMatrix
に格纳たたたl列列コーディングです。。。s
は,行行のスコアの行。。。。开花
分类损失このは,特定特定のすべてのについてバイナリバイナリ损失损失をを集计集计します。。たとえば,,平均バイナリ损失を使用使用使用使用kは,のです。
lは,学习器数。。。
カスタムなバイナリ損失関数を渡す例については、カスタムバイナリ关数使用使用によるによるモデルモデルの标本の予测予测を参照しください。
既定のはすべての学习器以下をする线形分类モデルである场合,,次ののなりなりなり
SVMの场合,
BinaryLoss
は'合页'
になります。ロジスティック回帰の場合、
BinaryLoss
は'quadratic'
になります。
例:'BinaryLoss','binodeviance'
データ型:char
|细绳
|function_handle
解码
—復号化スキーム
'lossweighted'
(既定値) |“损失”
バイナリ損失を集計する復号化方式。'Decoding'
と'lossweighted'
または“损失”
から構成されるコンマ区切りのペアとして指定します。詳細は、バイナリ損失を参照しください。
例:“解码”,“损失”
Folds
—分类スコアの予測に使用する分割のインデックス
1:cvmdl.kfold
(既定値) |正の整数数値ベクトル
分类スコアの予測に使用する分割のインデックス。'Folds'
と正のベクトルから构成さコンマ切りのペアとしてします。Folds
の要素は1
からcvmdl.kfold
の範囲でなければなりません。
例:“折叠”,[1 4 10]
データ型:单身的
|双倍的
Lossfun
—损失关数
'classiferror'
(既定値) |関数ハンドル
损失关数。“ LossFun”
および関数ハンドルまたは'classiferror'
のいずれかで構成されるコンマ区切りのペアとして指定します。
次が可能です。
组み込み关数
'classiferror'
を指定ますこの场合,损失はは分类误差になります。関数ハンドル表記を使用して独自の関数を指定します。
以下では、
n
は学習データの観測値数 (CVMdl.NumObservations
)、K
はクラス(numel(CVMdl.ClassNames)
)です。する关数では损失价值=
というシグネチャが必要です。ここでLossfun
(C,S,W,成本)出力引数
损失价值
はスカラーです。关数名(
Lossfun
)を選択します。C
はn
行K
列の逻辑行列で,行は対応する観測値が属するクラスを示しています。列の順序はCVMdl.ClassNames
のクラスの順序に対応します。C
を作成には各行について観测値p
がクラスq
に含まれている場合にc(p,q)= 1
を设定し。p
行のすべての要素を0
に设定し。S
は、符号を反転したクラスの損失値からなるn
行K
列の数値行列です。各列は観測と対応しています。列の順序はCVMdl.ClassNames
のクラスの順序に対応します。S
はkfoldpredict
の出力引数NegLoss
に類似します。W
は,値の重みのn
1列列数値です。。W
を渡す場合、その要素は正規化され、合計が1
になります。Cost
は,误分类の,K
行K
列の数値行列です。たとえば、Cost
=上es(K) -eye(K)
は正確な分類を 0 のコストで指定し、誤判定を 1 で指定します。
“ LossFun”,@lossfun
を使用して独自の関数を指定します。
データ型:function_handle
|char
|细绳
模式
—損失の集約レベル
'average'
(既定値) |'individual'
損失の集約レベル。“模式”
と'average'
または'individual'
から構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
'average' |
分割全体で平均した損失を返す |
'individual' |
各分割についてを返す |
例:“模式”,'individual'
选项
—推定オプション
[]
(既定値) |Statset
によって返される体配列
推定オプション。Statset
により返される'选项'
と构造からされるコンマ区ペアとして指定し。。
並列計算を起動するには、以下を行います。
Parallel Computing Toolbox™ ライセンスが必要です。
“选项”,statset(“ useparalleal”,true)
を指定します。
Verbose
—详细レベル
0
(既定値) |1
详细レベル。“冗长”
と0
または1
から構成されるコンマ区切りのペアとして指定します。Verbose
は、コマンド ウィンドウに表示される診断メッセージの量を制御します。
Verbose
が0
の场合メッセージ表示さませんそれ以外のは,诊断メッセージメッセージが表示表示され
例:“冗长”,1
データ型:单身的
|双倍的
出力引数
L
— 交差検証分類損失
数値|数値|数値行列
例
k分割交差検証の分類誤差の推定
nlpのデータをます。。
loadnlpdata
X
は予测子のスパース行列,Y
はクラス ラベルの categorical ベクトルです。
線形分類モデルから構成されている ECOC モデルを交差検証します。
rng(1);% For reproducibilitycvmdl = fitcecoc(x,y,'Learner',“线性”,'CrossVal','on');
CVMdl
は分类部门甲基核酸杆菌
モデルです。既定では、10 分割交差検証が実行されます。
分割外误差の平均推定します。
ce = kfoldLoss(CVMdl)
CE = 0.0958
または、名前と値のペアの引数“模式”,'individual'
をkfoldloss
で指定することにより、分割ごとの分類誤差率を取得できます。
カスタムな分类の指定
nlpのデータをます。。予測子データを転置します。
loadnlpdatax = x';
簡単にするため、'万博1manbetxsimulink'
、'dsp'
、'comm'
のいずれでないY
の観測値すべてに対して 'others' というラベルを使用します。
y(〜(ismember(y,{'万博1manbetxsimulink','dsp','comm'}))) ='其他';
sparsaをして关数最适するよう指定する线形モデルモデルテンプレートを作成し。。
t = templateLinear(“求解器”,'sparsa');
5 分割の交差検証を使用して、線形分類モデルから構成されている ECOC モデルを交差検証します。SpaRSA を使用して目的関数を最適化します。予測子の観測値が列に対応することを指定します。
rng(1);% For reproducibilitycvmdl = fitcecoc(x,y,“学习者”,t,'kfold',5,'ObservationsIn','columns');CMdl1 = CVMdl.Trained{1}
CMdl1 = CompactClassificationECOC ResponseName: 'Y' ClassNames: [comm dsp 万博1manbetxsimulink others] ScoreTransform: 'none' BinaryLearners: {6x1 cell} CodingMatrix: [4x6 double] Properties, Methods
CVMdl
は分类部门甲基核酸杆菌
モデルです。このモデルに含まれている训练有素
プロパティは各学习セットを使用て学习を行ったCompactClassificationECOC
モデルが格納されている 5 行 1 列の cell 配列です。
各観測値の最小損失を取る関数を作成し、すべての観測値の最小損失を平均化します。この関数ではクラス識別行列 (C
),観测の(W
)および分类(Cost
)を使用しないので、~
を使用してこれらの位置をkfoldloss
に無視させます。
Lossfun= @(~,S,~,~)mean(min(-S,[],2));
観測値ごとの最小損失を求める関数を使用して、平均の交差検証分類損失を推定します。また、各分割の損失を取得します。
ce = kfoldLoss(CVMdl,“ LossFun”,lossfun)
ce = 0.0243
cefold = kfoldloss(cvmdl,“ LossFun”,lossfun,“模式”,'individual')
cefold =5×10.0244 0.0255 0.0248 0.0240 0.0226
交差検証の使用による適切な LASSO ペナルティの特定
ロジスティック回帰学習器を使用する線形分類モデルから構成される ECOC モデルに適した LASSO ペナルティの強度を決定するため、5 分割の交差検証を実装します。
nlpのデータをます。。
loadnlpdata
X
は予测子のスパース行列,Y
はクラス ラベルの categorical ベクトルです。
簡単にするため、'万博1manbetxsimulink'
、'dsp'
、'comm'
のいずれでないY
の観測値すべてに対して 'others' というラベルを使用します。
y(〜(ismember(y,{'万博1manbetxsimulink','dsp','comm'}))) ='其他';
〜 の范囲间隔で配置されたたた个个正则强度を作成作成し。
Lambda = logspace(-7,-2,11);
ロジスティック回帰学習器を使用するように指定する線形分類モデル テンプレートを作成し、Lambda
の強度をもつ LASSO ペナルティを使用し、SpaRSA を使用して学習させ、目的関数の勾配の許容誤差を1E-8
に下げます。
t = templateLinear('Learner','logistic',“求解器”,'sparsa',...'Regularization','lasso','Lambda',Lambda,'GradientTolerance',1E-8);
モデルを交差検証します。実行速度を向上させるため、予測子データを転置し、観測値が列単位であることを指定します。
x = x';RNG(10);% For reproducibilitycvmdl = fitcecoc(x,y,“学习者”,t,'ObservationsIn','columns','kfold',5);
CVMdl
は分类部门甲基核酸杆菌
モデルです。
CVMdl
および格納されている各モデルを分析します。
numECOCModels = numel(CVMdl.Trained)
numeCocModels = 5
ecocmdl1 = cvmdl.Trained {1}
ECOCMdl1 = CompactClassificationECOC ResponseName: 'Y' ClassNames: [comm dsp simulink others] ScoreTransform: 'none' BinaryLearners: {6×1 cell} CodingMatrix: [4×6 double] Properties, Methods
numCLModels = numel(ECOCMdl1.BinaryLearners)
numClmodels = 6
CLMdl1 = ECOCMdl1.BinaryLearners{1}
CLMdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [-1 1] ScoreTransform: 'logit' Beta: [34023×11 double] Bias: [-0.3169 -0.3169 -0.3168 -0.3168 -0.3168 -0.3167 -0.1725 -0.0805 -0.1762 -0.3450 -0.5174] lambda:[1.0000E-07 3.1623E-07 1.0000E-06 3.1623E-06 1.0000E-05-05 3.1623E-05-05 1.0000E-04 3.1623E-04 3.1623E-04 1.0000 E.0000E-0303 0.003 0.00303 03032 0.0032 0.032 0.032 0.032 0.032 0.032 0.0100]'属性,方法
fitcecoc
は 5 分割の交差検証を実装するので、各分割について学習させるCompactClassificationECOC
モデルから構成される 5 行 1 列の cell 配列がCVMdl
に格纳れます。各CompactClassificationECOC
モデルのBinaryLearners
プロパティにはClassificationLinear
モデルが格納されます。各コンパクト ECOC モデル内のClassificationLinear
モデルの数は、それぞれのラベルの数と符号化設計によって決まります。Lambda
は正則化強度のシーケンスなので、CLMdl1
はそれぞれがLambda
の各正則化強度に対応する 11 個のモデルであると考えることができます。
5分割についてについてについて分类误差の平均プロットするによりががどのどの程度程度一般一般一般化化行う行うかをを判断判断します。グリッドグリッド全体でで
ce = kfoldLoss(CVMdl); figure; plot(log10(Lambda),log10(ce)) [~,minCEIdx] = min(ce); minLambda = Lambda(minCEIdx); hold上图(log10(Minlambda),log10(CE(Minceidx)),'ro');ylabel('log_{10} 5-fold classification error')xlabel('log_{10} Lambda') 传奇('MSE',“最小分类错误”) 抓住off
データセット使用て线形分类モデル构成さささモデルモデルモデルモデル学习をさせ,最小のの正则化化强度强度を
t = templateLinear('Learner','logistic',“求解器”,'sparsa',...'Regularization','lasso','Lambda',Minlambda,'GradientTolerance',1E-8);mdlfinal= fitcecoc(X,Y,“学习者”,t,'ObservationsIn','columns');
新しい観測値のラベルを推定するには、mdlfinal
と新しいデータを预测
に渡します。
詳細
バイナリ損失
"バイナリ損失"は、バイナリ学習器がどの程度の精度で観測値をクラスに分類するかを判断する、クラスと分類スコアの関数です。
以下のように仮定します。
mkjは符号化設計行列 M の要素 (k,j)、つまりバイナリ学習器 j のクラス k に対応するコード。
sjは観测に対するバイナリ学习器学习器スコア。。
g はバイナリ損失関数。
は観测の予测クラス。
"損失に基づく復号化"[escalera他]では、バイナリ学習器全体のバイナリ損失の和が最小になるクラスにより、観測値の予測クラスが決まります。つまり、次のようになります。
"損失に重みを付けた復号化"[escalera他]では,全体バイナリ损失平均平均なるにより,,観测値のの予测クラスが决まりますます。。つまりつまりつまり,
Allwein 他によると,クラス损失値が同じに收まるので,损失に重み重みを付けたた复号化ででははは分类
次のサポートされる损失关数まとめい,,,,jは特定バイナリ器のクラスラベルラベルラベルラベルラベル(–1,1,1,0}内)、Sjは観測値 j のスコアであり、g(yj,sj) です。
値 | 説明 | スコア領域 | g(yj,sj) |
---|---|---|---|
'binodeviance' |
二项分布の逸脱度 | (–∞,∞) | log[1 + exp(–2yjsj)]/[2log(2)] |
“指数” |
指数 | (–∞,∞) | Exp(–yjsj)/2 |
'hamming' |
ハミング | [0,1]または(–∞,∞) | [1 – sign(yjsj)/2 |
'合页' |
ヒンジ | (–∞,∞) | max(0,1 - yjsj)/2 |
“线性” |
線形 | (–∞,∞) | (1 - yjsj)/2 |
'logit' |
ロジスティック | (–∞,∞) | log[1 + exp(–yjsj)]/[2log(2)] |
'quadratic' |
2次 | [0,1] | [1 – yj(2sj– 1)]2/2 |
バイナリ,yj= 0 のときに損失が 0.5 になるように正規化され、バイナリ学習器の平均を使用して集計されます[Allwein 他]。
ecoc分类の的なのの全体の分类损失(オブジェクト失利
および预测
の名前と値のペアの引数“ LossFun”
により指定) とバイナリ損失を混同しないでください。
分类误差
"分類誤差"はバイナリの尺度,次のなににますます。
ここで
wjは観測値 j の重みです。重みは再度正規化され、合計は 1 になります。
観測 j の予測クラスが真のクラスと異なる場合、ej= 1 になり、それ以外の場合は 0 になります。
つまり、分類誤差は、分類器が誤分類した観測値の比率です。
参照
[1] Allwein, E., R. Schapire, and Y. Singer. “Reducing multiclass to binary: A unifying approach for margin classifiers.” Journal of Machine Learning Research. Vol. 1, 2000, pp. 113–141.
[2] Escalera,S.,O。Pujol和P. Radeva。“在三元错误校正输出代码中的解码过程中。”IEEE关于模式分析和机器智能的交易。卷。32,第7期,2010年,第120-134页。
[3] Escalera,S.,O。Pujol和P. Radeva。“对于错误校正输出代码的稀疏设计的三元代码的可分离性。”模式识别。卷。30,第3期,2009年,第285–297页。
拡張機能
自动并列サポート
并行计算工具箱™をし自动に计算を実行ことで,コードをを化。。。。
並列実行するには、この関数を呼び出すときに名前と値の引数'选项'
を指定し、Statset
を使用てオプション构造のの'UseParallel'
フィールドをtrue
に设定し。
たとえば、次のようにします。“选项”,statset(“ useparalleal”,true)
并列计算详细については,自动并列を使用たたたた关数关数关数実行(并行计算工具箱)を参照しください。
バージョン履歴
matlabコマンド
Matlabコマンドコマンドにするがクリックされまし。。
matlabコマンドコマンドに入力してしください。。。。ブラウザー
Select a Web Site
选择一个网站以获取可用的翻译内容,并查看本地事件和优惠。根据您的位置,我们建议您选择:.
You can also select a web site from the following list:
如何获得最佳网站性能
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(英语)
- United States(英语)