首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >贝叶斯分类器

贝叶斯分类器
EN

Stack Overflow用户
提问于 2012-11-12 21:29:52
回答 1查看 2.1K关注 0票数 0

在matlab中使用贝叶斯分类器时,避免过度拟合和不准确的最佳方法是什么?

我目前使用1000个样本作为训练数据,其中750份为“正常”,250份为“异常”(某一种)。

是否有人发现其中有很好的百分比可以训练分类器,或者每个问题都需要特定数量的训练数据。我会假设后者,但我正在努力找出如何提高准确性,我可以使用什么方法。任何例子都将不胜感激。

下面是我目前使用的一个例子:

代码语言:javascript
复制
training_data = data;
target_class = Book2(indX,:)

class  = classify(test_data,training_data, target_class, 'diaglinear')
confusionmat(target_class,class)


% Display Results of Naive Bayes Classification
input = target_class;
% find the unique elements in the input
uniqueNames=unique(input)';
% use string comparison ignoring the case
occurrences=strcmpi(input(:,ones(1,length(uniqueNames))),uniqueNames(ones(length(input),1),:));
% count the occurences
counts=sum(occurrences,1);
%pretty printing
for i=1:length(counts)
disp([uniqueNames{i} ': ' num2str(counts(i))])
end

% output matching data
dataSample = fulldata(indX, :)
EN

回答 1

Stack Overflow用户

发布于 2013-06-10 18:48:54

这是一个老生常谈的问题,但也许从谷歌来到这里的人仍然能从答案中获益。我没有在Matlab中使用朴素的Bayes,但在其他环境中有经验,并且编写了红宝石。你至少有几个问题,所以让我们解开它们。

过度拟合和准确性。不买炒作--朴素贝叶斯绝对容易过度拟合,所以在测量分类器的有效性时,一定要使用交叉验证。我发现,好的特征选择(例如,删除无用的术语/标记)通常会提高准确性,并有助于减少过度拟合。当然,更多的数据不会对你造成伤害(但是如果你已经有了很多数据的话,那就不会有帮助了)。

类不平衡问题。,看起来您正在尝试将新实例分类为“正常”或“异常”。通常,您希望类的平衡与现实世界中的存在(您正在建模的内容)相匹配。如果您选择不这样做,可能是因为异常实例太少,那么请确保手动将类上的先前分布设置为它们的实际值。

关于更详细的信息,我强烈建议摘自斯坦福IR书:http://nlp.stanford.edu/IR-book/html/htmledition/naive-bayes-text-classification-1.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13351864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档