您最初选择机器学习算法/进行初始设置的经验法则是什么?

时间:2014-01-26 16:21:13

标签: python numpy machine-learning artificial-intelligence scikit-learn

我在.tsv文件中有一组数据here。我写了几个分类器来决定一个给定的网站是短暂的还是常青树。

我最初的做法是快速原型制作,做了随机分类器,1R分类器,尝试了一些特征工程,线性回归,逻辑回归,朴素贝叶斯等等。

然而,我以混乱,不连贯的方式做了所有这些。我想知道的是,如果您获得了一组数据(为了论证,上面公布的数据),您将如何分析它以找到合适的分类器?您最初会从数据集中提取含义的内容是什么?

在这个高级编程时代,我能做些什么是正确的,我可以在一夜之间对我的数据运行5/6算法?快速原型制作方法在这里是最好的想法还是有更合理的逻辑方法可以采取?

目前,我已经清理了数据,删除了所有无意义的行(这些行中有少量因此可以丢弃)。我编写了一个脚本来交叉验证我的分类器,因此我有一个度量标准来测试偏差/方差,并检查整体算法性能。

我从哪里开始?我需要考虑哪些方面?我在这里想些什么?

1 个答案:

答案 0 :(得分:2)

你可以投入一些理论元素。例如:

  • 朴素贝叶斯分类器假设所有变量都是独立的。也许情况并非如此? 但是这个分类器既快速又简单,所以它仍然是许多问题的好选择,即使变量不是真正独立的。
  • 线性回归对远离分类边界的样本给予太多权重。这通常是一个坏主意。
  • 逻辑回归是尝试解决此问题,但仍假设输入变量之间存在线性相关性。换句话说,类之间的边界是输入变量空间中的平面。

当我研究数据集时,我通常首先绘制每个样本类的每个变量的分布,以找到最具辨别力的变量。

然后,对于每一类样本,我通常会绘制一个给定的输入变量与另一个,以研究变量之间的相关性:是否存在非线性相关性?如果是的话,我可能会选择能够处理这种相关性的分类器。 两个输入变量之间是否存在强相关性? 如果是,可以删除其中一个变量以减少问题的维数。

这些图表还可以让您发现数据集中的问题。

但毕竟,尝试使用许多分类器并优化其参数以便在交叉验证中获得最佳结果是一种务实且有效的方法,而且必须在某些时候完成。

我从这篇文章的标签中了解到你使用了scikit-learn的分类器。 如果您还没有注意到,此软件包还提供了强大的交叉验证工具http://scikit-learn.org/stable/modules/cross_validation.html