在选择机器学习算法或进行初始设置时,您的经验法则是怎样的?

我有一组数据,存储在一个.tsv文件中,可以在这里获取。我已经编写了几种分类器来判断给定的网站是短暂的还是长久的。

我的初始做法是快速原型设计,我尝试了随机分类器、1R分类器、进行了一些特征工程、线性回归、逻辑回归、朴素贝叶斯等各种方法。

然而,我所有的尝试都是杂乱无章的。我想知道,如果你得到了一组数据(为了讨论方便,就用上面提到的数据),你会如何分析它来找到合适的分类器?你会从数据集中最初提取哪些信息来理解它?

在高层次编程的时代,我可以在一个晚上运行5/6种算法,我所做的是正确的吗?快速原型设计的方法在这里是最好的选择吗,还是有更合理的、逻辑性的方法可以采用?

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

接下来我该怎么做?我需要考虑哪些方面?我在这里应该思考什么?


回答:

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

  • 朴素贝叶斯分类器假设所有变量都是独立的。也许事实并非如此?但这种分类器速度快且易于使用,因此即使变量不是真正独立的,它仍然是许多问题的良好选择。
  • 线性回归对远离分类边界的样本赋予过多的权重。这通常不是一个好主意。
  • 逻辑回归试图解决这个问题,但仍然假设输入变量之间存在线性相关。换句话说,类别之间的边界在输入变量空间中是一个平面。

当我研究一组数据时,我通常会从绘制每个变量在每个样本类别的分布开始,以找到最具区分性的变量。

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

这些图表还可以帮助你发现数据集中的问题。

但总的来说,像你所做的那样尝试多种分类器并优化它们的参数以在交叉验证中获得最佳结果,这是一种实用且有效的方法,并且这在某个阶段是必须要做的。

从这个帖子的标签来看,我了解到你使用了scikit-learn的分类器。如果你还没有注意到,这个包还提供了强大的交叉验证工具 http://scikit-learn.org/stable/modules/cross_validation.html

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注