最小错误率贝叶斯决策 matlab,最小错误贝叶斯决策规则

设C个类$\omega_{1},...,\omega_{C}$分别具有类先验概率$p(\omega_{1}),...p(\omega_{C})$。如果除了已知这些类概率分布以外,其他信息不得而知,则使分类错误率最小的决策规则是,若对象的

$$p\left( w_{j}\right) > p\left( w_{k}\right),k=1,...,C; k\neq j$$

则将该对象归属于$w_{j}$类。这种分类决策按照最大先验概率把所有对象进行分类,而对那些具有同等先验概率的样本,随机的归入这些类中的任何一个。

对于观察向量或测量向量$\vec x$,希望将其归入C类的某一类。

如果向量$\vec x$ 关于$w_{j}$类的概率,即$p(w_{j}|\vec x)$,比关于其它所有类$w_{1},...,w_{c}$的概率都大,则基于概率的决策规则将$\vec x$归于$w_{j}$类。也就是说,如果:

$$p\left( w_{j}|\vec x\right) >p\left( w_{k}|\vec x\right),k=1,...,C; k\neq j$$

则将$\vec x$归入$w_{j}$类。这种决策规则将测量空间划分成C个区域$\Omega_{1},...,\Omega_{C}$(区域$\Omega_{j}$可能是不联通的),如果$\vec x\in\Omega_{j}$,则$\vec x$属于$w_{j}$类。

利用贝叶斯定理,可以获得先验概率$p(w_{i})$和类条件概率密度函数$p(\vec x|w_{i})$表示的后验概率$p(w_{i}|\vec x)$:

$$p(w_{i}|\vec x)=\frac{p\left( x|w_{i}\right)p\left( w_{i}\right) }{p(\vec x)}$$

由此,决策规则写成:若

$$p(\vec x|w_{j})p(w_{j})>p(\vec x|w_{k}), k=1,...,C;k\neq j$$

则将$\vec x$归入$w_{j}$类这就是最小错误贝叶斯决策规则。

对于两类问题,决策规则可以写成:若

$$l_{r}(\vec x)=\frac{p(\vec x|w_{1})}{p(\vec x|w_{2})}>\frac{p(w_{2})}{p(w_{1})},则\vec x\in w_{1}类$$

函数$l_{r}(\vec x)$称为似然比。

分类错误概率p(error)可以表示为

$$p(error)=\sum ^{C}_{i=1}p(error|w_{i})p(w_{i})$$

其中,$p(error|w_{i})$是来自$w_{i}$类的样本的错分概率,可以通过对$[\Omega_{i}]$的补集上的类条件概率密度函数的积分获得

$$p\left( error|w_{i}\right) = \int _{C\left[ \Omega 1\right] }p\left( x|w_{i}\right) dx$$

其中,$C[\Omega_{i}]$指除$\Omega_{i}$以外的测量空间(C为补集算子),即$\sum ^{C}_{j=1,j\neq i}\Omega_{j}$。因此,样本的错分概率写成:

$$p(error) = \sum ^{C}_{i=1}\int _{C[\Omega_{i}] }p(\vec x|w_{i}) dx$$ $$ \qquad\qquad\qquad\qquad = \sum ^{C}_{i=1}p\left( w_{i}\right) (1-\int _{\Omega 1}p\left(\vec x|w_{i}\right) dx$$ $$ \qquad\qquad\qquad\quad =1- \sum ^{C}_{i=1}p(w_{i})\int _{\Omega_{1}}p(\vec x|w_{i}) dx$$

可以看出,最小化错分概率等价于最大化正分概率

$$\sum ^{C}_{i=1}p(w_{i})\int _{\Omega_{1}}p(\vec x|w_{i}) dx$$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最小错误率贝叶斯决策方法是一种常见的分类方法,主要思想是将输入向量分配到使总体错误率最小的类别中。在MATLAB中实现该方法可以遵循以下步骤: 1.准备数据集,将数据集分为训练集和测试集。 2.对于每个类别,计算先验概率,并计算出每个特征在每个类别中的条件概率。 3.使用测试集中的输入向量,计算出每个类别的后验概率。 4.根据后验概率将测试向量分配到最有可能的类别中。 5.计算分类错误率。 下面是一个简单的MATLAB代码示例,假设数据集包含两个类别和两个特征: ```matlab % 准备数据集 train_data = [1 2; 2 3; 3 4; 4 5; 5 6; 6 7; 7 8; 8 9]; train_labels = [1; 1; 1; 1; 2; 2; 2; 2]; test_data = [1.5 2.5; 3.5 4.5; 5.5 6.5]; test_labels = [1; 1; 2]; % 计算先验概率和条件概率 num_classes = 2; num_features = 2; prior_probs = zeros(num_classes, 1); cond_probs = zeros(num_features, num_classes); for i = 1:num_classes prior_probs(i) = sum(train_labels == i) / length(train_labels); for j = 1:num_features cond_probs(j, i) = mean(train_data(train_labels == i, j)); end end % 计算后验概率和最小错误率贝叶斯决策 num_tests = size(test_data, 1); post_probs = zeros(num_tests, num_classes); for i = 1:num_tests for j = 1:num_classes post_probs(i, j) = prod(normpdf(test_data(i, :), cond_probs(:, j)', 1)) * prior_probs(j); end [~, pred_labels(i)] = max(post_probs(i, :)); end % 计算分类错误率 accuracy = sum(pred_labels' == test_labels) / length(test_labels); error_rate = 1 - accuracy; disp(['错误率为: ' num2str(error_rate)]); ``` 注意,在上述代码中,我们使用normpdf函数计算高斯分布的概率密度函数,其中第一个参数是输入向量,第二个参数是均值向量,第三个参数是方差。如果特征之间相关性很强,则可以使用协方差矩阵来表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值