哪种 ML/DL 方法更适合这个问题?

数据挖掘 机器学习 深度学习 张量流 随机森林
2022-03-02 11:31:45

我们有一个巨大的数据集,如下所示

Factor -|- ... -|- Rank1 -|- Rank2 -|- Calls
A11-----|- ... -|-0.1234--|-3.2345--|- Cat A
A11-----|- ... -|-1.1234--|-0.2345--|- Cat B
A12-----|- ... -|-2.1234--|-3.2345--|- Cat C
A12-----|- ... -|-2.1234--|-3.2345--|- Cat C
...
A13-----|- ... -|-0.1234--|-3.2345--|- Cat A
A13-----|- ... -|-3.1234--|-0.1345--|- Cat B
A13-----|- ... -|-2.1234--|-2.2345--|- Cat C
A14-----|- ... -|-4.1234--|-4.2345--|- Cat C

我们有大约 1000 万个这样的数据点。我们还有一个包含大约 20 万个数据点的测试集,我们需要将它们准确地归入不同的类别。

在这一点上,我们正在尝试混合使用 (python2.7-sklearn) 中编码的 K-means 和随机森林方法,这为我们提供了大约 90% 的分类准确率,但我们想要获得更多。

我有兴趣对此应用某种深度学习方法,这就是我学习 TensorFlow 的原因。但是,我在深度学习会谈(tf 文档 + youtube 视频)中浏览的每个链接都只涉及 CNN 和图像识别(MNIST .. 等),我不知道如何开始解决这个问题。

我正在寻找有关如何解决此类问题/要堆叠哪些神经元或如何为此类数据构建模型的建议和指导?我愿意在为此提供的任何链接和建议上分一杯羹,但我需要知道我是否通过尝试使用 DL 来解决它的想法是否正确,或者是否有任何其他方法可以处理此类数据哪个可能更好,或者要解决这个问题我应该学习或学习什么?

编辑 1: 所以,我设法浏览了 MNIST 的 TensorFlow 文档,也许我可以看到一些相关性。

从某种意义上说,如果我将 rank1 和 rank2 作为np.array2 个神经元输入层的输入,并且每个调用都作为 one_hot np.array,其中 Cat A = [1,0,0],Cat B = [0,1,0],Cat C = [0,0,1] 并在最外层放置 3 个神经元,每个神经元通过 softmax 函数预测一个 Cat(类别),这行得通吗?

即使是这样,我应该使用什么作为内部/隐藏层?我可以在输入层中使用其他因素吗?我需要将它们转换为数字(int/float)吗?我应该将这些 rank 1 和 rank 2 值按原样传递给输入层,还是应该事先设计它们?

1个回答

是的,您可以使用 DL 网络来解决这个问题。这是一个简单的多类分类任务。只有一个完全连接的网络才能完成这项工作。

要构建网络,我建议使用易于使用的Keras 。并且在训练网络之前,最好对数据进行预处理(标准化数字列,嵌入字符串列)。

编辑:

对于数据规范化,您可以参考此博客:神经网络数据规范化和编码,其中显示了基本方法和代码。