以什么顺序使用哪些学习算法——降维、贝叶斯网络结构、回归?

数据挖掘 机器学习 神经网络 聚类 逻辑回归 贝叶斯网络
2022-01-23 23:47:59

数据是对数十个变量的大量观察,所有变量(可能以某种方式)与二分结果变量相关,并且所有(可能)彼此相关,或与未知/未观察到的事物相关。

我认为“仅仅”应用逻辑回归或任何相关的扩展或改进(如分类和回归树等)可能是不够的,因为似乎存在“基本”贝叶斯网络结构(基于专家意见) - 这意味着观察到的变量以某种方式描述了贝叶斯网络中的不同节点,但它们如何描述这些节点的确切公式尚不清楚,这些节点对结果的最终预测能力也是如此。

这是一个高度简化的示例中的确切问题:

我们有两名跑者将在 400 米短跑中相互竞争。我们有一个包含两名跑步者的数千次此类比赛的观察数据集,每个观察结果包含两名跑步者中的每一个的(a)年龄,(b)大小,(c)过去 6 周的训练次数和( d) 过去 6 周内每次训练的平均里程数。

现在,我们认为(a)和(b)将决定(e)“短跑天赋”,(c)和(d)将决定(f)“当前形式”,并且(e)和(f)一起将给出获胜的概率 - 但我们不知道 (a) 和 (b) 如何确定 (e) 或 (c) 和 (d) 如何确定 (f)(例如,它是“年龄乘以大小”还是“年龄乘以 2 而年龄低于 45”等)。此外,我们也不知道 (e) 和 (f) 如何共同决定获胜的概率......

是否有任何“已知”的方法来解决这样的问题,即确定将初始变量连接到确定结果的后来变量的公式的方法,然后进一步确定结果网络的预测能力?

或者这是不必要的(即仅在某些算法中使用原始变量 - 哪一个? - 应该给出相同的结果)?还是不可能(太多未知的事情)?我应该怎么做/阅读/学习解决这个问题?

此外,有没有办法检查我的原始假设(即(a)和(b)确定(e)等)是否正确,例如通过某种聚类算法、PCA……?

面对这样的问题,你会怎么做?

非常感谢您通过为我指出正确的方向来帮助一个相当新的数据科学学习者!

4个回答

是否有任何“已知”的方法来解决这样的问题,即确定将初始变量连接到确定结果的后来变量的公式的方法,然后进一步确定结果网络的预测能力?

这是一个关于建模方法以及不同类型模型的问题。我认为最好从更简单的模型开始,例如简单的逻辑回归。在这种情况下,您试图预测哪个赛跑者会获胜,所以这是 0/1 的结果。因此,您可以将所有变量放入逻辑回归模型中,并查看它在准确性方面的表现。如果你有很多预测变量,你可以添加一个惩罚项,比如 L1 或 L2。最简单的模型用作比较更复杂模型的基准,这可能并不总是更好。

您描述的公式似乎很常见。这些通常被称为潜在变量模型,或者其他人可能更喜欢称它们为贝叶斯网络模型。这个想法是我们不能直接测量特定数量,但我们可以使用间接测量来估计它们。因此,如果您的感觉是“冲刺天赋”和“当前形式”是预测谁赢得比赛的更好预测指标,那么您可以使用潜在变量的方法。我已经有一段时间没有运行这些了,但是有一些常见的算法,比如 EM 算法或 Markov Chain Monte Carlo 采样。

因此,通过拟合两个不同的模型,您可以看到通过添加潜在变量结构与不对结构进行假设相比,您获得了多少准确度。有一些方法可以尝试和估计贝叶斯网络结构,但它们通常需要大量数据。在这种情况下,您可能没有足够的数据来连接神经网络或其他东西。

在这种情况下,我认为降维不一定有帮助。您似乎确实有时间序列数据,您可以将其直接包含在逻辑回归方程中。如果你有足够的数据,你甚至可以尝试 LSTM 或序列模型。

这些是我脑海中的一些想法,但我认为从简单模型开始,对它们进行基准测试,然后尝试更复杂的模型的想法是学习和避免迷路的最佳方式。哈哈。快乐奔跑。

存在学习贝叶斯网络结构的方法。

它们似乎不是很受欢迎,所以我认为您不会在标准工具包中找到它们。

所以我们在处理 Word Embedding 时也面临着类似的问题。在那里,我们生成单词之间的关联关系,然后使用生成的关联关系,尝试预测相关单词。

我应该说可能有一种统计方法来检查您的假设,但我宁愿尝试编写我的想法,通过在一些测试集上检查它的正确性来检查它。这样,我们可以缩小我们方法的缺点,然后朝那个特定的方向思考。

每当我们有相关数据时,我们都会使用像t-SNE这样的算法来进行降维。然后,您可以轻松地可视化它或根据您的要求以任何方式使用它。

您可以使用基于图形的机器学习: Stellar