如何提高 Weka 中 SMO 分类器的性能?
Posted
技术标签:
【中文标题】如何提高 Weka 中 SMO 分类器的性能?【英文标题】:How to improve performance of SMO classifier in weka? 【发布时间】:2012-08-23 21:06:55 【问题描述】:我正在使用 weka SMO 分类器对文档进行分类。smo 有许多可用的参数,例如内核、容差等。我使用不同的参数进行了测试,但在大型数据集上我没有得到很好的结果。
对于超过 90 个类别,只有 20% 的文档得到正确分类。
请任何人告诉我在 SMO 中获得最高性能的最佳参数集。
【问题讨论】:
没有通用的最佳参数设置。这完全取决于您的数据和要求。为了让我们给出任何答案,我们需要您使用 which data 准确指定 您想要什么。 您尝试过线性支持向量机等更简单的方法吗?你有什么特点? 除了 SlimJim 的问题,你的文件是什么,类别是什么? html 格式文档和咖啡、棉花、大米等 90 多个类别, 【参考方案1】:这里的主要问题不是分类本身,而是选择合适的特征。使用原始 HTML 会导致非常大的噪音,进而导致分类结果非常差。因此,要获得好的结果,请执行以下操作:
-
提取相关文本。不仅要删除 HTML 标签,还要准确获取描述项目的文本。
创建关键词词典。例如。卡布奇诺、拿铁、白米饭等。
使用stemming 或lemmatization 获取单词的基本形式并避免将例如“cotton”和“cottons”视为2 个不同的单词。
根据文本制作特征向量。属性(特征名称)应该是字典中的所有单词。值可能是:二进制(如果单词出现在文本中,则为 1,否则为 0)、整数(文本中出现问题的单词的次数)、tf-idf(如果您的文本长度非常不同,则使用此值)等。
只有在完成所有这些步骤后,您才能使用 classifer。
很可能分类器类型在这里不会发挥重要作用:无论使用何种分类技术,基于字典的特征通常都会产生非常准确的结果。您可以使用 SVM (SMO)、朴素贝叶斯、ANN 甚至 kNN。更复杂的方法包括创建类别层次结构,例如,类别“咖啡”包含在类别“饮料”中,而类别“饮料”又是类别“食物”的一部分。
【讨论】:
以上是关于如何提高 Weka 中 SMO 分类器的性能?的主要内容,如果未能解决你的问题,请参考以下文章
Weka 的 SMO 分类器在 buildClassifier 上崩溃