可变长度的输入数据 - 两种场景

数据挖掘 文本 毫升 特征
2022-02-21 23:53:29

我试图弄清楚如何训练具有可变长度输入的神经网络。这个问题出现在我试图解决的以下 2 个场景中。

场景 1:我有一长串不同跑步者的跑步距离列表,看起来像有 3 列:跑步者、日期、距离。显然,有些跑步者有很多参赛作品,而另一些则没有。我正在尝试预测给定跑步者接下来要跑的英里数。所以我猜我需要将我的数据转换为每个跑步者一行,这给了我可变长度的特征。如何在 ML 应用程序中处理这个问题?

场景 2:我想获取各种字符串(“teststring”、“P@ssword”、“NotAPassword123”等)并将其归类为密码。我想我正在试图弄清楚如何a)将字符串转换为数字以进行训练,以及b)如何处理它们具有可变长度的事实。

感谢您阅读到这里...

2个回答

对于场景 1,如果您对每个跑步者都有足够的数据,则可以为它们构建单独的模型,否则您可以通过对跑步者进行热编码然后尝试您的模型来将跑步者添加为分类变量。对于场景 2,您可以通过手工制作特征为每个字符串创建固定大小的向量,例如辅音计数、元音计数、特殊字符的存在等。

场景 1:您似乎正在处理可能缺少数据的列。您有几个选项可以为某些列中没有信息的行分配值,每个选项都有取决于您的数据集的优点和缺点。一个示例是为NaN条目分配该列的平均值或中值,这具有减少数据方差的缺点。这是一篇关于该主题的文章,应该对您有所帮助。

场景2:对于“b”部分,一种常见的方法是简单地找到一个应该“足够大”的长度,并为“太短”的序列(或者,在你的情况下是字符串)添加填充。对于“a”部分,一个非常简单的方法是在字符级别应用词袋。或者,您可以尝试在密码文本上训练字符嵌入模型;此类模型将创建文本的矢量化表示,您可以将其提供给用于密码分类的任何模型!