首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的理想分类器,以适应稀疏的高维特征(具有层次分类)

python中的理想分类器,以适应稀疏的高维特征(具有层次分类)
EN

Stack Overflow用户
提问于 2013-07-18 13:54:29
回答 1查看 1.6K关注 0票数 3

这是我的任务:

我有一组层次化的类(例如。“对象/建筑/建筑/住宅/房屋/农舍”)--我写了两种分类方法:

  1. 独立对待每个类(整体使用一个模型/分类器)
  2. 使用一棵树,其中每个节点表示一个决策(根表示"object/",每个级别降低了通用性),以及每个节点的特定模型/分类器(这里,我考虑出每个节点的c(通常为3)最高概率,并将概率向下传播(将日志概率之和)传播到叶子上,并选择最高的概率。 我还必须引入一种激励方法,以激励更深入的树(因为它可以停在对象/架构/建筑(如果有相应的培训数据)),并使用一个任意的尝试和错误的过程来具体决定(我对此感到不舒服): 如果n == 4:+=1 elif num类别==5:==5 +=1.3 elif num门类==6:==6 +=1.5 elif num门类>6: tempscore +=2

还需要注意的是,我有大约290 k训练样本和~150 k(目前/大部分)布尔特性(用1.0或0.0表示)--尽管它非常稀疏,所以我使用了use的稀疏矩阵。此外,还有~6500个独立类(尽管方法2中每个节点的类较少)。

使用方法1,使用scikit的sgdclassifier(loss=hinge),我获得了大约75-76%的准确度,而线性and则得到了76-77% (尽管速度慢了8-9倍)。

然而,对于第二种方法(我认为这可以/最终表现得更好),这两种分类器都不会产生真正的概率,尽管我试图对他们的.decision_functions()产生的信心分数进行评估,但效果并不好(准确率为10-25%)。因此,我切换到logisticregression(),这使我得到了62-63%的准确性。而且,基于NB的分类器的性能似乎要差得多。

最后,我有两个问题:

  1. 在python中实现的分类器(可能是scikit或mlpy/nltk/orange/等等)中是否有更好的分类器(比logisticregression()更好),能够(i)处理稀疏矩阵,(ii)产生(接近)概率,(iii)处理多类分类?
  2. 有什么办法能更好地处理方法二吗?具体来说,是否有更好的方法来激励分类器产生更深层次的结果?
EN

回答 1

Stack Overflow用户

发布于 2019-04-24 13:17:39

一些你可以尝试的想法:

  1. 在您的特性上应用一些嵌入技术,以避免大的稀疏矩阵。然而,它并不适合每一种情况,也需要大量的工作
  2. 使用自定义丢失函数的XGBoost。在这个损失函数中,您基本上可以应用您所描述的关于预测类深度的逻辑,并为模型提供一个激励,以便更经常地得到更深层次的预测。此外,基于树的模型将考虑到您的特性之间的相关性,从而使您受益。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17725461

复制
相关文章

相似问题

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