主要内容

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

ClassificationNaiveBayes

マルチクラス分類のための単純ベイズ分類

説明

ClassificationNaiveBayesはマルチクラス学習のための単純ベイズ分類器です。学習させたClassificationNaiveBayes分類器は学習データ,パラメーター値,データ分布および事前確率を格納します。これらの分類器を使用して,再代入予測値の推定(resubPredictを参照),新しいデータのラベルや事後確率の予測(预测を参照)などのタスクを実行します。

作成

ClassificationNaiveBayesオブジェクトの作成にはfitcnbを使用します。

プロパティ

すべて展開する

予測子のプロパティ

このプロパティは読み取り専用です。

予測子名。文字ベクトルの细胞配列を指定します。PredictorNamesの要素の順序は,予測子名が学習データXに現れる順序に対応します。

このプロパティは読み取り専用です。

展開された予測子名。文字ベクトルの细胞配列を指定します。

モデルでカテゴリカル変数用にダミー変数のエンコードを使用している場合,ExpandedPredictorNamesには展開された変数を表す名前が含まれます。それ以外の場合,ExpandedPredictorNamesPredictorNamesと同じです。

このプロパティは読み取り専用です。

カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictorsには,カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値を格納します。どの予測子もカテゴリカルではない場合,このプロパティは空([])になります。

データ型:|

このプロパティは読み取り専用です。

多変量多項レベル。细胞配列として指定します。CategoricalLevelsの長さは予測子の数(大小(X, 2))と同じです。

CategoricalLevelsのセルは,学習中に“mvmn”として指定した予測子に対応します。つまり,多変量多項分布になります。多変量多項分布に対応しないセルは空です([])。

予測子jが多変量多項の場合,CategoricalLevels {jは標本内の予測子jのすべての異なる値のリストです。独特的(X (:, j))から削除されます。

このプロパティは読み取り専用です。

単純ベイズ分類器の学習に使用する,標準化されていない予測子。数値行列として指定します。Xの各行は1つの観測値に対応し,各列は1つの変数に対応します。ソフトウェアは,欠損値が少なくとも1つ含まれている観測値を除外し,対応する要素をYから削除します。

予測子分布のプロパティ

このプロパティは読み取り専用です。

予測子分布。文字ベクトル,または文字ベクトルの细胞配列として指定します。fitcnbは予測子分布を使用して予測子をモデル化します。次の表は,使用できる分布の一覧です。

説明
“内核” カーネル平滑化密度推定
“锰” 多項分布。を指定するとすべての特徴量は多項分布の成分となります。したがって,“锰”を文字ベクトルの细胞配列または字符串配列の要素として含めることはできません。詳細は,多項分布の推定確率を参照してください。
“mvmn” 多変量多項分布。詳細は,多変量多項分布の推定確率を参照してください。
“正常” 正規(ガウス)分布

DistributionNamesが文字ベクトルによる1行P列の细胞配列である場合,fitcnbは细胞配列の要素jの分布を使用して特徴量jをモデル化します。

例:“锰”

例:{“内核”、“正常”、“内核”}

データ型:字符|字符串|细胞

このプロパティは読み取り専用です。

细胞配列として指定する,分布パラメーターの推定。DistributionParametersはK行D列の细胞配列です。ここで,セル (k,d) はクラス k における予測子 d のインスタンスを推定した分布パラメーターを含みます。行の順序は一会プロパティのクラスの順序に,予測子の順序はXの列の順序に対応します。

クラスkに予測子jの観測値がない場合,{分布kjは空([])です。

DistributionParametersの要素は予測子の分布に依存します。次の表は,DistributionParameters {kjの値について説明しています。

予測子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はカーネル分布を対応する予測子にあてはめません。

次の表はサポートされるカーネル平滑化のタイプについて説明しています。我{你}はインジケーター関数を表します。

カーネル
“盒子” ボックス(一様)

f x 0.5 | x | 1

“epanechnikov” Epanechnikov

f x 0.75 1 x 2 | x | 1

“正常” ガウス

f x 1 2 π 经验值 0.5 x 2

“三角形” 三角形

f x 1 | x | | x | 1

例:“盒子”

例:{“epanechnikov”、“正常”}

データ型:字符|字符串|细胞

このプロパティは読み取り専用です。

カーネル平滑化密度のサポート。细胞配列として指定します。万博1manbetxの長さは予測子の数(大小(X, 2))と同じです。セルはfitcnbがカーネル密度を適用する領域を表します。セルが空([])の場合,fitcnbはカーネル分布を対応する予測子にあてはめません。

次の表はサポートされるオプションについて説明します。

説明
1行2列の数値行ベクトル 密度のサポートは指定された範囲((L U)など)に適用されます。ここで,lUはそれぞれ下限と上限を表します。
“积极” 密度のサポートはすべての正の実数に適用されます。
“无限” 密度のサポートはすべての実数に適用されます。

このプロパティは読み取り専用です。

カーネル平滑化ウィンドウの幅。数値行列として指定します。宽度はK行P列の行列であり,Kはデータ内のクラスの数,Pは予測子の数(大小(X, 2))です。

宽度(kjはクラスkに含まれる予測子jのカーネル平滑化密度のカーネル平滑化ウィンドウ幅です。列jに含まれるは,fitcnbが,カーネル密度を使用して予測子jをあてはめなかったことを示しています。

応答のプロパティ

このプロパティは読み取り専用です。

モデルの学習に使用した一意なクラス名。绝对配列、文字配列、logical ベクトル、数値ベクトルのいずれか、あるいは文字ベクトルの cell 配列として指定します。

一会Yと同じデータ型であり,文字配列の場合はK個の要素(行)が含まれます。(字符串配列は文字ベクトルの细胞配列として扱われます)。

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

このプロパティは読み取り専用です。

応答変数名。文字ベクトルを指定します。

データ型:字符|字符串

このプロパティは読み取り専用です。

単純ベイズ分類器の学習に使用したクラスラベル。绝对配列、文字配列、logical ベクトル、数値ベクトルのいずれか、あるいは文字ベクトルの cell 配列として指定します。Yの各行は,Xの対応する行の観測された分類を表します。

Yのデータ型は,モデルの学習に使用したYのデータと同じです。(字符串配列は文字ベクトルの细胞配列として扱われます)。

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

学習プロパティ

このプロパティは読み取り専用です。

ClassificationNaiveBayesモデルの学習に使用するパラメーター値。オブジェクトとして指定します。ModelParametersには,単純ベイズ分類器の学習に使用する名前と値のペアの引数値などのパラメーター値が格納されます。

ModelParametersのプロパティにアクセスするには,ドット表記を使用します。たとえば,Mdl.ModelParameters.万博1manbetxSupportを用いてカーネルサポートにアクセスします。

このプロパティは読み取り専用です。

XおよびYに格納されている学習データ内の学習観測値の個数。数値スカラーとして指定します。

事前確率。数値ベクトルとして指定します。之前の要素の順序はMdl。一会の要素に対応します。

fitcnbは,設定された事前確率を,名前と値のペアの引数“之前”を使用して正規化するため,总和(前)1となります。

之前の値は最適なあてはめのモデルに影響しません。したがって,ドット表記を使用してMdlに学習させた後,之前をリセットすることができます。

例:Mdl。Prior = [0.2 0.8]

データ型:|

このプロパティは読み取り専用です。

観測値の重み。Yと同じ行数をもつ非負値のベクトルを指定します。Wの各エントリは,Yで対応する観測値の相対的な重要性を指定します。fitcnbによって,名前と値のペアの引数“重量”に設定した値が正規化され,特定のクラス内の重みはそのクラスの事前確率の合計となります。

分類器のプロパティ

誤分類コスト。数値正方行列を指定します。成本(i, j)は,真のクラスがである場合に点をクラスjに分類するコストです。行は真のクラスに,列は予測するクラスに対応します。成本の行と列の順序は,一会のクラスの順序に対応します。

誤分類コスト行列は対角線上に0をもたなければなりません。

成本の値は学習に影響しません。ドット表記を使用してMdlに学習させた後,成本をリセットすることができます。

例:Mdl。成本=[0 0.5 ; 1 0]

データ型:|

このプロパティは読み取り専用です。

ハイパーパラメーターの交差検証最適化。ハイパーパラメーターおよび関連する値が含まれているテーブルまたはBayesianOptimizationオブジェクトを指定します。モデルを作成するときに名前と値のペアの引数“OptimizeHyperparameters”が空以外であった場合,このプロパティは空以外になります。HyperparameterOptimizationResultsの値は,モデル作成時の構造体HyperparameterOptimizationOptions优化器フィールドの設定によって変化します。

优化器フィールドの値 HyperparameterOptimizationResultsの値
“bayesopt”(既定の設定) BayesianOptimizationクラスのオブジェクト
“gridsearch”または“randomsearch” 使用したハイパーパラメーター,観測された目的関数の値(交差検証損失),および最低(最良)から最高(最悪)までの観測値の順位が格納されているテーブル

分類スコア変換。文字ベクトルまたは関数ハンドルとして指定します。次の表は、使用可能な文字ベクトルをまとめています。

説明
“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モデルです。

完全でコンパクトな単純ベイズモデルは,新しいデータの予測に使用されません。代わりに,CVMdlkfoldLossに渡すことにより,そのモデルを使用して汎化誤差を推定してください。

genError = kfoldLoss (CVMdl)
genError = 0.1852

平均すると汎化誤差は約19%です。

予測子に別の条件付き分布を指定することや,条件付き分布パラメーターを調整して汎化誤差を減らすことができます。

詳細

すべて展開する

アルゴリズム

すべて展開する

参照

哈斯蒂,特雷弗,罗伯特·蒂布希拉尼和杰罗姆·弗里德曼。《统计学习的要素:数据挖掘、推理和预测》,第二版,施普林格系列。纽约,纽约:施普林格,2009。https://doi.org/10.1007/978 - 0 - 387 - 84858 - 7。

[2] Manning, Christopher D., Prabhakar Raghavan, Hinrich Schütze。《信息检索导论》,纽约:剑桥大学出版社,2008年。

拡張機能

R2014bで導入