在选择合适的机器学习方法上是否有共识?

数据挖掘 机器学习 神经网络 深度学习 分类 数据科学模型
2021-10-05 09:02:57

我目前正在学习数据科学,我们学习了各种令人眼花缭乱的基本回归/分类技术(线性、逻辑、树、样条、ANN、SVM、MARS 等......),以及各种额外的工具(bootstrapping、boosting、bagging、ensemble、ridge/lasso、CV 等)。有时这些技术会给出上下文(例如,适用于小型/大型数据集,适用于少量/大量预测变量等),但在大多数情况下,对于任何回归或分类问题,似乎都存在一系列令人眼花缭乱的选项从中选择。

如果我现在开始从事数据科学的工作并且遇到了一个建模问题,我认为我最好的办法就是尝试所有我知道的基本配置技术,使用交叉验证评估它们并选择最好的。但肯定不止于此。

我想一个有经验的数据科学家非常了解技术目录,并遵循一些心理流程图来决定尝试哪些技术,而不是盲目地尝试所有技术。我想这个流程图是 a) 预测变量数量的函数;b) 变量类型;c) 关于可能关系(线性/非线性)的领域知识;d) 数据集的大小;e) 计算时间等方面的限制。

是否有任何这样的约定俗成的流程图可供遵循,以选择技术?或者它真的可以归结为“尝试很多事情,看看什么最适合所需的措施,例如交叉验证”?

2个回答

我的数据科学研究始于应用统计学硕士学位。其中一门课程是机器学习,它与您所描述的方法相似。所以,我可以对你目前的观点有点同情。但是,就像您在生活中可能学到的其他东西一样,您在学术环境中做事的方式和您在商业环境中(即为客户)做事的方式是完全不同的。以下是我从最初学习以来所学到的:

1 - 学习 Python

当然,还有其他工具,它们很好(我曾经用最好的工具编写 R 代码),但 Python 是未来的所在。另外,很少有工具可以像 Python 一样扩展,如果你想处理一些非常酷的东西,这一点很重要。

2 - 这一切都归结为实施

你猜怎么着?您现在正在学习的所有这些东西(混淆矩阵、因子减少等)对您的客户来说并不重要。他们只会看着你说,“产品是什么?你什么时候要在我的手机上部署一些东西?我的 webapp 在哪里点击?”。你工作的很大一部分是将你所有的工作变成一个产品,你会发现自己戴着一顶准软件开发者的帽子。这也是学习python的另一个好理由。

3 - 数据管道需要时间

你的很多工作都在数据操作上,只是确保你需要的数据管道在那里。当然,您有一个数据库——但是您将如何更新它呢?你需要什么预处理?你的结果存储在哪里?您将花费大量时间来弄清楚这些东西。你会怀念你的学生时代,那时数据集以干净整洁的方式提供给你 :)

4 - 神经网络踢屁股

一旦你咬了一口这个苹果,就很难再回去了:)。学习 Keras 并享受旅程。过了一会儿,你必须提醒自己什么是决策树:)

5 - 模型搜索现在更容易了

100% 清楚,您现在正在做的“模型搜索”方法是非常宝贵的经验。你绝对应该在这些课程上努力学习。但是,如果您有时间,请查看 (1) Data Robot 或 (2) Watson Analytics。这两个软件包基本上都做同样的事情。他们将获取您的数据集并为您找到最佳模型。您上面描述的所有项目都在几秒钟内为您完成。它们的速度几乎令人恐惧,而且它们在帮助您减少工作方面非常有效。但是,请注意,这些软件包仅支持受监督的数据。对于无监督数据(或标记一些数据并使用神经网络),您仍然需要使用老式的方法。

6 - 我仍然使用其他模型背后的理论

即使我经常使用神经网络,其他模型仍然有用。您仍将使用线性回归或决策树来解决基本问题。当我决定阅读有关 archivx 或其他什么的研究论文时,它也很有帮助。所以,我仍然会用它们来学习和理解,但仅此而已。

玩得开心!

好吧,让我们这样说。尽管有许多学习方法,但每种方法都适用于特定情况。对于一个问题,您可能有多种选择每种学习方法都有一个特殊的应用领域,这就是为什么人们通常知道在哪里使用决策树以及在哪里选择神经网络,例如,在所有输入都是实数值的情况下,尝试使用决策树并不是明智的选择。我试图解释 ML 从业者通常考虑的主要问题。

可用功能的数量

特征的数量很重要,因为在有这么多特征的情况下无法轻松地可视化它们。这可能导致无法识别数据是否线性可分。如此多的特征并不意味着数据集不是线性可分的。因此,假设您想使用神经网络对问题进行建模。您不应该从具有如此多的层和神经元的复杂网络开始。您必须从单个神经元开始,相当于分类任务的逻辑回归,以确定您的数据是否线性可分。如果你观察到你没有很好的表现,你可以添加额外的神经元和层。如何?看看如何设置神经网络中的神经元和层数

特征空间

关于选择 ML 方法,很容易考虑每种算法在特征空间方面的局限性。例如,决策树不适用于具有许多特征的问题,其中一些是数字特征。他们可能会变得非常大。SVMs由于您必须指定内核大小,因此对于具有如此多特征的非线性问题不是很好。对于特征空间中的不同区域,单个内核大小可能没有价值。概括地说,输入空间非常大的问题通常使用神经网络来处理。如果问题有这么多特征,但它们是例如二元特征或分类特征,选择较少,那么问题的特征空间较小,输入空间,可以考虑其他ML方法。

数据集大小

根据您的问题、特征类型和特征范围,输入空间可能非常小或非常大。因此,可能数据的数量可能会因输入空间而异。如前所述,对于大输入空间,神经网络对于映射非常强大。

分布和贝叶斯错误

对于不同的任务,例如分类,您必须进行统计分析以更好地了解您的可用数据集。您必须调查是否存在相同但标签不同的输入模式。如果是这样,为什么?是不是专家错误。当前的特征空间对于理解问题是无效的。解决这些问题后,您可以使用贝叶斯误差来调查最佳方法对您的数据的准确性。