如何对呈螺旋状的数据进行分类?

人工智能 神经网络 机器学习 张量流 回归
2021-10-28 21:02:53

我一直在tensorflow 操场上胡闹。输入数据集之一是螺旋。无论我选择什么样的输入参数,无论我制作的神经网络有多宽和多深,我都无法拟合螺旋。数据科学家如何拟合这种形状的数据?

4个回答

有很多方法可以解决这类问题。最明显的一个就是创建新功能我能想到的最好的功能是将坐标转换为球坐标

我还没有找到在操场上做这件事的方法,所以我只是创建了一些应该对此有所帮助的功能(罪恶功能)。500 次迭代后,它会饱和并以 0.1 分波动。这表明不会做进一步的改进,很可能我应该使隐藏层更宽或添加另一层。

毫不奇怪,在隐藏层仅添加一个神经元后,经过 300 次迭代,您很容易得到 0.013。添加一个新层会发生类似的事情(0.017,但经过明显更长的 500 次迭代。也不足为奇,因为传播错误更难)。很可能您可以使用学习率或进行自适应学习以使其更快,但这不是重点。

在此处输入图像描述

理想情况下,神经网络应该能够自行找出函数,而无需我们提供球面特征。经过一些实验,我能够达到一个我们不需要任何东西的配置,除了X1X2. 这个网络在大约 1500 个相当长的 epoch 后收敛。所以最好的方法可能仍然是添加额外的特性,但我只是想说没有它们仍然可以收敛。

没有附加功能的解决方案

通过作弊...thetaarctan(y,x),r(x2+y2).

理论上,x2y2应该可以工作,但是在实践中,它们以某种方式失败了,即使有时它可以工作。

在此处输入图像描述

vanilla tensorflow游乐场螺旋解决方案

这是一个普通的 Tensorflow 游乐场的例子,没有添加任何功能,也没有修改。Spiral 的运行时间在 187 到 300 个 Epoch 之间,具体取决于。我使用了套索正则化 L1,所以我可以消除系数。我将批量大小减少了 1 以防止输出过度拟合。在我的第二个示例中,我向数据集添加了一些噪声,然后提高了 L1 以进行补偿。

在此处输入图像描述