如何使用具有大量和可变数量输入的神经网络?

数据挖掘 机器学习 数据挖掘 算法 神经网络
2022-02-14 21:25:35

我是机器学习的新手,但我有一个有趣的问题。我有大量的人和访问过的网站。有些人指出了性别、年龄和其他参数。现在我想将这些参数恢复给每个用户。

我要寻找哪种方式?哪种算法适合解决这个问题?我熟悉神经网络(监督学习),但似乎它们不适合。

3个回答

存在许多填充数据空白的可能性。

  • 最重复值:用最常见的值填补空白。
  • 创建分布:制作直方图并根据该分布删除值。
  • 创建一个新标签:由于您没有信息,因此不要假设任何值并创建另一个标签/类别以指示该值为空。
  • 创建分类器:在具有空白的变量和其余数据之间建立关系,并创建一个简单的分类器。这样,填充其余数据。

还有许多其他策略,但这些是最常见的策略。我的建议是不要填充和保持未知什么是未知的。

尽管 adesantos 已经给出了很好的答案,但我想补充一点背景信息。

您正在查看的问题的名称是“插补”。正如 adesantos 已经说过的,其中一种可能性是拟合分布。例如,您可以将多元高斯拟合到数据中。您将仅从您知道的样本中获得平均值,并且您仅从您知道的样本中计算协方差。然后,您可以使用标准 MVG 结果对缺失数据进行线性插补。

这可能是最简单的概率插补方法,并且已经相当复杂了。如果你是一个神经网络,最近提出的一种可以做到这一点的方法是 Rezende 等人的深度潜在高斯模型。然而,理解该方法需要大量的神经网络知识,相当多的关于马尔可夫链的变分贝叶斯知识。

另一种我听说效果很好的方法是训练生成随机网络(Bengio 等人)。这是通过对您拥有的数据训练去噪自动编码器来完成的(忽略重建损失中的缺失值)。假设你有一个重建函数 f 和一个输入 x。然后你将通过 x' = f(x) 重建它。然后用你从 x 中知道的值重置 x' 的值。(即你只保留重建之前丢失的值。)如果你这样做了很多次,你可以保证从给定你知道的值的分布中抽样。

但无论哪种情况,这些方法都需要相当多的统计知识和神经网络知识。

我遇到了几乎相同的问题:“恢复”社交网络用户的年龄、性别、位置。但是我使用了用户的自我网络,而不是访问过的网站统计数据。我面临两个几乎独立的任务:

  1. “恢复”或“预测”数据。你可以使用一堆不同的技术来完成这个任务,但我的投票是最简单的(KISS,是的)。例如,在我的情况下,对于年龄预测,自我网络用户年龄的平均值给出了令人满意的结果(对于大约 70% 的用户错误小于 +/-3 年,在我的情况下就足够了)。这只是一个想法,但您可以尝试使用年龄预测加权平均值,将权重定义为当前用户和其他人访问的站点集之间的相似性度量。
  2. 评估预测质量。来自 task-1 的算法几乎在所有情况下都会产生预测。第二个任务是确定预测是否可靠。例如,在自我网络和年龄预测的情况下:如果用户在他的自我网络中只有一个“朋友”,我们可以相信预测吗?这个任务更多的是关于机器学习:这是一个二元分类问题。您需要使用正确和错误的预测从数据中组合特征集、形成训练和测试样本。创建适当的分类器将帮助您过滤掉不可预测的用户。但是您需要确定您的功能集是什么。我使用了一些网络指标,以及自我网络中兴趣分布特征的汇总统计。

这种方法不会填补所有空白,而只会填补可预测的空白。