このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
マルチクラス分類のための単純ベイズ分類
ClassificationNaiveBayes
はマルチクラス学習のための単純ベイズ分類器です。学習させたClassificationNaiveBayes
分類器は学習データ,パラメーター値,データ分布および事前確率を格納します。これらの分類器を使用して,再代入予測値の推定(resubPredict
を参照),新しいデータのラベルや事後確率の予測(预测
を参照)などのタスクを実行します。
ClassificationNaiveBayes
オブジェクトの作成にはfitcnb
を使用します。
PredictorNames
- - - - - -予測子名このプロパティは読み取り専用です。
予測子名。文字ベクトルの细胞配列を指定します。PredictorNames
の要素の順序は,予測子名が学習データX
に現れる順序に対応します。
ExpandedPredictorNames
- - - - - -展開された予測子名このプロパティは読み取り専用です。
展開された予測子名。文字ベクトルの细胞配列を指定します。
モデルでカテゴリカル変数用にダミー変数のエンコードを使用している場合,ExpandedPredictorNames
には展開された変数を表す名前が含まれます。それ以外の場合,ExpandedPredictorNames
はPredictorNames
と同じです。
CategoricalPredictors
- - - - - -カテゴリカル予測子のインデックス[]
|正の整数のベクトルこのプロパティは読み取り専用です。
カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors
には,カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値を格納します。どの予測子もカテゴリカルではない場合,このプロパティは空([]
)になります。
データ型:单
|双
CategoricalLevels
- - - - - -多変量多項レベルこのプロパティは読み取り専用です。
多変量多項レベル。细胞配列として指定します。CategoricalLevels
の長さは予測子の数(大小(X, 2)
)と同じです。
CategoricalLevels
のセルは,学習中に“mvmn”
として指定した予測子に対応します。つまり,多変量多項分布になります。多変量多項分布に対応しないセルは空です([]
)。
予測子jが多変量多項の場合,CategoricalLevels {
j}
は標本内の予測子jのすべての異なる値のリストです。南
は独特的(X (:, j))
から削除されます。
X
- - - - - -標準化されていない予測子このプロパティは読み取り専用です。
単純ベイズ分類器の学習に使用する,標準化されていない予測子。数値行列として指定します。X
の各行は1つの観測値に対応し,各列は1つの変数に対応します。ソフトウェアは,欠損値が少なくとも1つ含まれている観測値を除外し,対応する要素をYから削除します。
DistributionNames
- - - - - -予測子分布“正常”
(既定値) |“内核”
|“锰”
|“mvmn”
|文字ベクトルの细胞配列このプロパティは読み取り専用です。
予測子分布。文字ベクトル,または文字ベクトルの细胞配列として指定します。fitcnb
は予測子分布を使用して予測子をモデル化します。次の表は,使用できる分布の一覧です。
値 | 説明 |
---|---|
“内核” |
カーネル平滑化密度推定 |
“锰” |
多項分布。锰 を指定するとすべての特徴量は多項分布の成分となります。したがって,“锰” を文字ベクトルの细胞配列または字符串配列の要素として含めることはできません。詳細は,多項分布の推定確率を参照してください。 |
“mvmn” |
多変量多項分布。詳細は,多変量多項分布の推定確率を参照してください。 |
“正常” |
正規(ガウス)分布 |
DistributionNames
が文字ベクトルによる1行P列の细胞配列である場合,fitcnb
は细胞配列の要素jの分布を使用して特徴量jをモデル化します。
例:“锰”
例:{“内核”、“正常”、“内核”}
データ型:字符
|字符串
|细胞
DistributionParameters
- - - - - -分布パラメーターの推定このプロパティは読み取り専用です。
细胞配列として指定する,分布パラメーターの推定。DistributionParameters
はK行D列の细胞配列です。ここで,セル (k,d) はクラス k における予測子 d のインスタンスを推定した分布パラメーターを含みます。行の順序は一会
プロパティのクラスの順序に,予測子の順序はX
の列の順序に対応します。
クラスk
に予測子j
の観測値がない場合,{分布
は空(k
,j
}[]
)です。
DistributionParameters
の要素は予測子の分布に依存します。次の表は,DistributionParameters {
の値について説明しています。k
,j
}
予測子jの分布 | 予測子j およびクラスk の细胞配列の値 |
---|---|
内核 |
KernelDistribution モデル。セルのインデックス付けおよびドット表記を使用してプロパティを表示します。たとえば,3 番目のクラスの予測子 2 のカーネル密度に推定される帯域幅を表示するには、Mdl.DistributionParameters {3 2} .BandWidth を使用します。 |
锰 |
トークンjがクラスkに出現する確率を表すスカラー。詳細は,多項分布の推定確率を参照してください。 |
mvmn |
クラスkの予測子jの可能なレベルそれぞれの確率を含む数値ベクトル確率は予測子j(プロパティCategoricalLevels 内に格納されています)のすべての一意なレベルが並べ替えられた順序に並べられます。詳細は,多変量多項分布の推定確率を参照してください。 |
正常的 |
2行1列の数値ベクトル。最初の要素は標本平均で,2番目の要素は標本標準偏差です。 |
内核
- - - - - -カーネル平滑化のタイプ“正常”
(既定値) |“盒子”
|细胞配列|……このプロパティは読み取り専用です。
カーネル平滑化のタイプ。カーネルの名前、またはカーネル名の cell 配列として指定します。内核
の長さは予測子の数(大小(X, 2)
)と同じです。内核{
j}
は予測子jに対応し,カーネル平滑化のタイプを表す文字ベクトルを格納します。セルが空([]
)の場合,fitcnb
はカーネル分布を対応する予測子にあてはめません。
次の表はサポートされるカーネル平滑化のタイプについて説明しています。我{你}はインジケーター関数を表します。
値 | カーネル | 式 |
---|---|---|
“盒子” |
ボックス(一様) |
|
“epanechnikov” |
Epanechnikov |
|
“正常” |
ガウス |
|
“三角形” |
三角形 |
|
例:“盒子”
例:{“epanechnikov”、“正常”}
データ型:字符
|字符串
|细胞
万博1manbetx
- - - - - -カーネル平滑化密度のサポートこのプロパティは読み取り専用です。
カーネル平滑化密度のサポート。细胞配列として指定します。万博1manbetx
の長さは予測子の数(大小(X, 2)
)と同じです。セルはfitcnb
がカーネル密度を適用する領域を表します。セルが空([]
)の場合,fitcnb
はカーネル分布を対応する予測子にあてはめません。
次の表はサポートされるオプションについて説明します。
値 | 説明 |
---|---|
1行2列の数値行ベクトル | 密度のサポートは指定された範囲((L U) など)に適用されます。ここで,l とU はそれぞれ下限と上限を表します。 |
“积极” |
密度のサポートはすべての正の実数に適用されます。 |
“无限” |
密度のサポートはすべての実数に適用されます。 |
宽度
- - - - - -カーネル平滑化ウィンドウの幅このプロパティは読み取り専用です。
カーネル平滑化ウィンドウの幅。数値行列として指定します。宽度
はK行P列の行列であり,Kはデータ内のクラスの数,Pは予測子の数(大小(X, 2)
)です。
宽度(
はクラスk
,j
)k
に含まれる予測子j
のカーネル平滑化密度のカーネル平滑化ウィンドウ幅です。列j
に含まれる南
は,fitcnb
が,カーネル密度を使用して予測子j
をあてはめなかったことを示しています。
一会
- - - - - -一意のクラス名このプロパティは読み取り専用です。
モデルの学習に使用した一意なクラス名。绝对配列、文字配列、logical ベクトル、数値ベクトルのいずれか、あるいは文字ベクトルの cell 配列として指定します。
一会
はY
と同じデータ型であり,文字配列の場合はK個の要素(行)が含まれます。(字符串配列は文字ベクトルの细胞配列として扱われます)。
データ型:分类
|字符
|字符串
|逻辑
|双
|细胞
ResponseName
- - - - - -応答変数名このプロパティは読み取り専用です。
応答変数名。文字ベクトルを指定します。
データ型:字符
|字符串
Y
- - - - - -クラスラベルこのプロパティは読み取り専用です。
単純ベイズ分類器の学習に使用したクラスラベル。绝对配列、文字配列、logical ベクトル、数値ベクトルのいずれか、あるいは文字ベクトルの cell 配列として指定します。Y
の各行は,X
の対応する行の観測された分類を表します。
Y
のデータ型は,モデルの学習に使用したY
のデータと同じです。(字符串配列は文字ベクトルの细胞配列として扱われます)。
データ型:单
|双
|逻辑
|字符
|字符串
|细胞
|分类
ModelParameters
- - - - - -モデルの学習に使用されるパラメーター値このプロパティは読み取り専用です。
ClassificationNaiveBayes
モデルの学習に使用するパラメーター値。オブジェクトとして指定します。ModelParameters
には,単純ベイズ分類器の学習に使用する名前と値のペアの引数値などのパラメーター値が格納されます。
ModelParameters
のプロパティにアクセスするには,ドット表記を使用します。たとえば,Mdl.ModelParameters.万博1manbetxSupport
を用いてカーネルサポートにアクセスします。
NumObservations
- - - - - -学習観測値の数このプロパティは読み取り専用です。
X
およびY
に格納されている学習データ内の学習観測値の個数。数値スカラーとして指定します。
之前
- - - - - -事前確率事前確率。数値ベクトルとして指定します。之前
の要素の順序はMdl。一会
の要素に対応します。
fitcnb
は,設定された事前確率を,名前と値のペアの引数“之前”
を使用して正規化するため,总和(前)
=1
となります。
之前
の値は最適なあてはめのモデルに影響しません。したがって,ドット表記を使用してMdl
に学習させた後,之前
をリセットすることができます。
例:Mdl。Prior = [0.2 0.8]
データ型:双
|单
W
- - - - - -観測値の重みこのプロパティは読み取り専用です。
観測値の重み。Y
と同じ行数をもつ非負値のベクトルを指定します。W
の各エントリは,Y
で対応する観測値の相対的な重要性を指定します。fitcnb
によって,名前と値のペアの引数“重量”
に設定した値が正規化され,特定のクラス内の重みはそのクラスの事前確率の合計となります。
成本
- - - - - -誤分類のコスト誤分類コスト。数値正方行列を指定します。成本(i, j)
は,真のクラスが我
である場合に点をクラスj
に分類するコストです。行は真のクラスに,列は予測するクラスに対応します。成本
の行と列の順序は,一会
のクラスの順序に対応します。
誤分類コスト行列は対角線上に0をもたなければなりません。
成本
の値は学習に影響しません。ドット表記を使用してMdl
に学習させた後,成本
をリセットすることができます。
例:Mdl。成本=[0 0.5 ; 1 0]
データ型:双
|单
HyperparameterOptimizationResults
- - - - - -ハイパーパラメーターの交差検証最適化BayesianOptimization
オブジェクト|テーブルこのプロパティは読み取り専用です。
ハイパーパラメーターの交差検証最適化。ハイパーパラメーターおよび関連する値が含まれているテーブルまたはBayesianOptimization
オブジェクトを指定します。モデルを作成するときに名前と値のペアの引数“OptimizeHyperparameters”
が空以外であった場合,このプロパティは空以外になります。HyperparameterOptimizationResults
の値は,モデル作成時の構造体HyperparameterOptimizationOptions
の优化器
フィールドの設定によって変化します。
优化器 フィールドの値 |
HyperparameterOptimizationResults の値 |
---|---|
“bayesopt” (既定の設定) |
BayesianOptimization クラスのオブジェクト |
“gridsearch” または“randomsearch” |
使用したハイパーパラメーター,観測された目的関数の値(交差検証損失),および最低(最良)から最高(最悪)までの観測値の順位が格納されているテーブル |
ScoreTransform
- - - - - -分類スコア変換“没有”
(既定値) |“doublelogit”
|“invlogit”
|“ismax”
|分对数的
|関数ハンドル|……分類スコア変換。文字ベクトルまたは関数ハンドルとして指定します。次の表は、使用可能な文字ベクトルをまとめています。
値 | 説明 |
---|---|
“doublelogit” |
1 / (1 + e2 x) |
“invlogit” |
Log (x / (1 - x)) |
“ismax” |
最大のスコアをもつクラスのスコアを1に設定し,他のすべてのクラスのスコアを0に設定する |
分对数的 |
1 / (1 + e- x) |
“没有” または“身份” |
x(変換なし) |
“标志” |
x < 0のとき1 x = 0のとき0 x > 0のとき1 |
“对称” |
2 x - 1 |
“symmetricismax” |
最大のスコアをもつクラスのスコアを1に設定し,他のすべてのクラスのスコアを1に設定する |
“symmetriclogit” |
2 / (1 + e- x) - 1 |
MATLAB®関数またはユーザー定義関数の場合は,スコア変換用の関数ハンドルを使用します。関数ハンドルは,行列 (元のスコア) を受け入れて同じサイズの行列 (変換したスコア) を返さなければなりません。
例:Mdl。ScoreTransform = '分对数'
データ型:字符
|字符串
|函数处理
紧凑的 |
機械学習モデルのサイズの縮小 |
compareHoldout |
新しいデータを使用して2つの分類モデルの精度を比較 |
crossval |
機械学習モデルの交差検証 |
边缘 |
単純ベイズ分類器の分類エッジ |
incrementalLearner |
単純ベイズ分類モデルのインクリメンタル学習器への変換 |
石灰 |
本地可解释模型不可知解释(LIME) |
logp |
単純ベイズ分類器の対数条件なし確率密度 |
损失 |
単純ベイズ分類器の分類損失 |
保证金 |
単純ベイズ分類器の分類マージン |
partialDependence |
部分従属の計算 |
plotPartialDependence |
部分依存プロット(PDP)および個別条件付き期待値(ICE)プロットの作成 |
预测 |
単純ベイズ分類器の使用による観測値の分類 |
resubEdge |
再代入分類エッジ |
resubLoss |
再代入分類損失 |
resubMargin |
再代入分類マージン |
resubPredict |
学習済み分類器を使用した学習データの分類 |
沙普利 |
シャープレイ値 |
testckfold |
交差検証の反復により2つの分類モデルの精度を比較 |
フィッシャーのアヤメのデータセット用に単純ベイズ分類器を作成します。また,分類器の学習後に事前確率を指定します。
fisheriris
データセットを読み込みます。150 本のアヤメについて 4 つの花弁の測定値が含まれる数値行列X
を作成します。対応するアヤメの種類が含まれる文字ベクトルの细胞配列Y
を作成します。
负载fisheririsX =量;Y =物种;
予測子X
とクラスラベルY
を使用して,単純ベイズ分類器の学習を行います。fitcnb
では,各予測子が独立しており,既定の設定で正規分布を使用して各予測子をあてはめると仮定しています。
Mdl = fitcnb (X, Y)
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' ' 'normal' ' 'normal'} DistributionParameters: {3x4 cell}属性,方法
Mdl
は学習させたClassificationNaiveBayes
分類器です。一部のMdl
プロパティはコマンドウィンドウに表示されます。
ドット表記を使用して,Mdl
のプロパティを表示します。たとえば,クラスの名前と事前確率を表示します。
Mdl。一会
ans =3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
Mdl。Prior
ans =1×30.3333 0.3333 0.3333
Mdl。Prior
でのクラスの事前確率の順序は,Mdl。一会
でのクラスの順序に対応します。既定では,事前確率はデータ内のクラスのそれぞれの相対的頻度です。または,fitcnb
を呼び出すときに名前と値のペアの引数的之前的
を使用することにより,事前確率を設定できます。
ドット表記を使用して,分類器の学習後に事前確率を設定します。たとえば,事前確率をそれぞれ 0.5、0.2 および 0.3 に設定します。
Mdl。Prior = [0.5 0.2 0.3];
これで,この学習済みの分類器を使用して追加タスクを実行できるようになりました。たとえば,预测
を使用して新しい測定値にラベルを付けることや,crossval
を使用して分類器を交差検証することができます。
単純ベイズ分類器の学習と交差検証を行います。fitcnb
が既定で10分割交差検証を実装します。次に,交差検証分類誤差を推定します。
电离层
データセットを読み込みます。安定させるため,最初の2つの予測子を削除します。
负载电离层X = X(:, 3:结束);rng (“默认”)%的再现性
予測子X
とクラスラベルY
を使用して,単純ベイズ分類器の学習と交差検証を行います。クラス名を指定することが推奨されます。fitcnb
は,各予測子が条件付き正規分布に従うと仮定しています。
CVMdl = fitcnb (X, Y,“类名”,{“b”,‘g’},“CrossVal”,“上”)
CVMdl = ClassificationPartitionedModel CrossValidatedModel: 'NaiveBayes' PredictorNames: {1x32 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' ' 'g'} ScoreTransform: 'none'属性,方法
CVMdl
は,交差検証した単純ベイズ分類器ClassificationPartitionedModel
です。あるいは,学習済みのClassificationNaiveBayes
モデルをcrossval
に渡すことにより,このモデルを交差検証できます。
ドット表記を使用して,CVMdl
の最初の学習分割を表示します。
CVMdl。训练有素的{1}
ans = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' ' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}属性,方法
各分割はデータの90%で学習させたCompactClassificationNaiveBayes
モデルです。
完全でコンパクトな単純ベイズモデルは,新しいデータの予測に使用されません。代わりに,CVMdl
をkfoldLoss
に渡すことにより,そのモデルを使用して汎化誤差を推定してください。
genError = kfoldLoss (CVMdl)
genError = 0.1852
平均すると汎化誤差は約19%です。
予測子に別の条件付き分布を指定することや,条件付き分布パラメーターを調整して汎化誤差を減らすことができます。
bag-of-tokensモデルでは,予測子jの値は観測値のトークンjの発生数を表す非負の数値です。この多項モデルのカテゴリ(ビン)の数は,異なるトークンの数(予測子の数)です。
“単純ベイズ”は密度推定をデータに適用する分類アルゴリズムです。
アルゴリズムはベイズの定理を活用し,クラスが与えられる場合,予測子が条件付きで独立していると(単純に)仮定します。通常,実際はこの仮定に反して,単純ベイズ分類器から得られる事後分布は,バイアス付きのクラス密度を推定する場合,特に事後分布が0.5(判定境界)であれば,信頼性が高い傾向があります[1]。
単純ベイズ分類器は観測を最も確率の高いクラスに割り当てます(つまり,"最大事後確率"決定ルールです)。明示的に,アルゴリズムは以下の手順を実行します。
各クラス内の予測子の密度を推定します。
ベイズルールに従って,事後確率をモデル化します。つまり,すべてのk = 1,……Kについて,次のようになります。
ここで
Yは観測のクラスインデックスに対応する確率変数です。
X1X、…Pは観測の無作為な予測子です。
は,クラスインデックスがkである事前確率です。
各クラスの事後確率を推定して観測値を分類し,最大の事後確率を発生するクラスに観測値を割り当てます。
予測子が多項分布を構成する場合,事後確率は になります。ここで, は多項分布の確率密度関数です。
fitcnb
を使用してMdl
に学習させる際に“DistributionNames”、“锰”
を指定する場合,多項分布はbag-of-tokensモデルを使用してあてはめられます。トークンj
がプロパティDistributionParameters {
のクラスk
,j
}k
に出現する確率が保存されます。加法平滑化[2]を使用すると,推定確率は次のようになります。
ここで,以下になります。
はクラスkにおけるトークンjの重み付き発生数です。
nkはクラスk内の観測数です。
は観測値我の重みです。クラス内の重みは、その合計がクラスの事前確率になるように正規化されます。
は,クラスkに含まれているすべてのトークンの重み付き発生数の合計です。
fitcnb
を使用してMdl
に学習させる際に“DistributionNames”、“mvmn”
を指定すると,ソフトウェアは以下の手順を実行します。
予測子ごとに一意のレベルのリストが収集され,並べ替えられたリストはCategoricalLevels
に保存され,各レベルはビンと見なされます。予測子とクラスの各組み合わせは、個別の独立した多項確率変数です。
クラスkの予測子がj
の場合,CategoricalLevels {
に保存されたリストを使用して,カテゴリカルレベルごとのインスタンスがカウントされます。j
}
クラスk
の予測子j
が,プロパティDistributionParameters {
においてレベルLをもつ場合,すべてのレベルの確率はk
,j
}CategoricalLevels {
に保存されます。加法平滑化[2]を使用すると,推定確率は次のようになります。j
}
ここで,以下になります。
は,クラスk内の予測子jがLに等しい観測値の重み付き個数です。
nkはクラスk内の観測数です。
xij= Lの場合は ,それ以外の場合は0です。
は観測値我の重みです。クラス内の重みは、その合計がクラスの事前確率になるように正規化されます。
米jは予測子jの異なるレベルの数です。
米kはクラスk内の重み付けされた観測値の数です。
哈斯蒂,特雷弗,罗伯特·蒂布希拉尼和杰罗姆·弗里德曼。《统计学习的要素:数据挖掘、推理和预测》,第二版,施普林格系列。纽约,纽约:施普林格,2009。https://doi.org/10.1007/978 - 0 - 387 - 84858 - 7。
[2] Manning, Christopher D., Prabhakar Raghavan, Hinrich Schütze。《信息检索导论》,纽约:剑桥大学出版社,2008年。
使用上の注意事項および制限事項:
関数预测
はコード生成をサポートします。
fitcnb
を使用して単純ベイズモデルに学習をさせる場合,以下の制限が適用されます。
名前と値のペアの引数“DistributionNames”
の値に“锰”
を含めることはできません。
名前と値のペアの引数“ScoreTransform”
の値を無名関数にすることはできません。
詳細は,コード生成の紹介を参照してください。
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドをMATLABコマンドウィンドウに入力して実行してください。WebブラウザーはMATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。