不同 ML 分类器的不同性能,我能推断出啥?
Posted
技术标签:
【中文标题】不同 ML 分类器的不同性能,我能推断出啥?【英文标题】:Different performance by different ML classifiers, what can I deduce?不同 ML 分类器的不同性能,我能推断出什么? 【发布时间】:2016-05-13 00:33:00 【问题描述】:我使用 ML 方法使用 python scikit-learn 进行研究。我发现 SVM 和逻辑回归分类器效果最好(例如:85% 的准确率),决策树的效果明显较差 (65%),然后朴素贝叶斯的效果明显较差 (40%)。
我将写出结论来说明一些 ML 分类器明显优于其他分类器,但基于这些观察,我还能对我的学习任务或数据结构说些什么呢?
版本:
数据集涉及 500,000 行,我有 15 个特征,但其中一些特征是某些文本的子字符串的各种组合,因此它作为稀疏矩阵自然扩展到数万列。我使用人名来预测一些二进制类(例如:性别),尽管我从名称实体中进行了很多特征工程,例如名称的长度、名称的子字符串等。
【问题讨论】:
我希望您调整所有尝试过的分类器的参数,尤其是决策树分类器。你能更详细地描述一下你的数据集吗? 是的,我在调优的时候确实尝试了很多参数。数据集涉及 500,000 行,我有 15 个特征,但其中一些特征是某些文本的子字符串的各种组合,因此它作为稀疏矩阵自然扩展到数万列。我确实了解不同的 ML 通常如何适合不同大小的行和列,但是如果您对它们都进行了测试并得到不同的结果,我想知道还能推导出什么其他结论。 【参考方案1】:我建议您访问 scikit-learn 团队 http://scikit-learn.org/stable/tutorial/machine_learning_map
制作的关于选择正确的估算器的这张很棒的地图描述您自己案例的细节将是一项艰巨的任务(我完全理解您没有这样做!)我鼓励您问自己几个问题。因此,我认为“选择正确的估算器”的地图是一个好的开始。
从字面上看,转到地图中的“开始”节点并按照路径:
我的样本数是否 > 50?等等。最后,您可能会在某个时候结束,看看您的结果是否与地图中的建议相匹配(即,我是否最终进入了 SVM,这给了我更好的结果?)。如果是这样,请深入了解文档并问自己为什么一个分类器在文本数据或您获得的任何见解上表现更好。
正如我告诉你的,我们不知道你的数据的细节,但你应该可以问这样的问题:我有什么类型的数据(文本,二进制,...),有多少样本,要预测多少类,...所以理想情况下,您的数据会为您提供有关问题背景的一些提示,因此为什么有些估计器比其他估计器表现更好。
但是,是的,您的问题非常广泛,可以在一个答案中掌握(特别是在不知道您正在处理的问题类型的情况下)。例如,您还可以检查是否存在更倾向于过度拟合的方法。
建议列表可能无穷无尽,这就是为什么我鼓励您开始定义您正在处理的问题的类型和您的数据(加上样本数量,它是否已标准化?它是分散的吗?您是否在稀疏矩阵中表示文本,您的输入是否从 0.11 浮动到 0.99)。
无论如何,如果您想分享有关您的数据的一些细节,我们或许能够更准确地回答。不过,希望这会有所帮助;)
【讨论】:
谢谢,我添加了有关我的数据的更多详细信息。我确实遇到过你推荐的地图,我之前没有深入研究过,因为我有很多数据,而且地图似乎在确定路径时对数据大小起着很大的作用。尽管如此,我会仔细研究它。在我看来,在很多机器学习论文中,作者通常使用一堆机器学习分类器,比如鱼网,然后接受性能最高的分类器。所以我的问题实际上并不是关于识别正确的分类器,而是当我查看我的结果或其他人的结果时,我可以通过不同的表现推断出什么。 同样在分类域的map中,没有简单的logistic reg和decision tres。而且我的线性 SVC 似乎“有效”,但我想了解为什么 NB 性能(我的数据基于名称,即 test(?) 数据)要差得多,我的数据或学习任务中有什么导致低 NB 性能(而我在使用 NB 的类似研究中看到更好的性能)。 好的,现在我明白你的担心了。是的,我还猜测(从您的问题更新中读取)NB 应该表现良好。好吧,实际上它很大程度上取决于您如何对样本进行编码(您是否执行某种 tf-idf?)。顺便说一句,你想从名字中预测性别,还是只是一个例子?因为如果是这种情况,我无法避免尝试提出一些甚至与机器学习无关的东西,例如使用 python 中的 sexmachine 库,例如 (pypi.python.org/pypi/SexMachine)。如果您的问题更广泛或您的目标是学术性的,请忘记我所说的;) 是的,这就是为什么我很困惑为什么 NB 表现如此糟糕并试图寻求解释。性别作为阶级只是一个例子,我试图预测人们的种族。以上是关于不同 ML 分类器的不同性能,我能推断出啥?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Spark ML 感知器分类器的 F1 分数很高,而 TensorFlow 上的相同模型表现很差?