gpt4 book ai didi

python - 如何使用 IP 地址作为神经网络中的特征

转载 作者:行者123 更新时间:2023-11-30 08:51:21 27 4
gpt4 key购买 nike

使用Keras ,我想构建一个 LSTM 神经网络来分析我系统中的用户行为。我的功能之一是包含用户 IP 地址的字符串,可以是 IPv4 或 IPv6。

据我所知,我需要嵌入地址,以便将其用作功能。在 Keras documentation没有明确的解释如何做这样的事情。

什么是一个好的起点?

最佳答案

在模型中对 IP 地址进行编码的最佳方法取决于它们与您的问题相关的语义。有几种选择:

One-hot 编码

这种方式假设 IP 地址之间根本没有关系。假定 1.2.3.41.2.3.5 的差异与 255.255.255.255 一样。为了防止出现 2^32 个特征,您只需将训练数据中的 IP 地址编码为特征,并将新 IP 地址视为未知。实现这一目标的一种方法是 sklearnLabelBinarizer :

train_data = ['127.0.0.1', '8.8.8.8', '231.58.91.112', '127.0.0.1']
test_data = ['8.8.8.8', '0.0.0.0']

ip_encoder = LabelBinarizer()
print('Train Inputs:\n', ip_encoder.fit_transform(train_data))
print('Test Inputs:\n', ip_encoder.transform(test_data))

打印:

Train Inputs:
[[1 0 0]
[0 0 1]
[0 1 0]
[1 0 0]]
Test Inputs:
[[0 0 1]
[0 0 0]]

请注意 One-hot encoding and dummy encoding 之间的区别.

使用 32 或 128 个功能

在这里,您对 IP 中的每一位使用一个功能。

优点:

  1. 该模型可以更轻松地识别属于同一子网的 IP。
  2. 即使训练数据中有大量不同的 IP 地址,特征数量仍然很少。

缺点:

  1. 模型不知道子网如何工作。如果您的训练数据实际上证明将多个 IP 推广到其子网是合理的,则该模型很可能不会 100% 正确地应用子网机制。我的意思是,它可能会学习使用 1.1.1.11.1.1.2 的第二部分和第三部分来检测此特定子网,从而处理 0.1。 1.1 也是该子网的 IP。
  2. 减少特征数量固然很好,但也会让模型更难检测两个 IP 地址是否相同。当使用 One-Hot-Encoding 时,它直接在功能中包含此信息,而使用这种方法时,它需要在内部学习 32/128 个“if”语句才能查看 IP 地址是否相同。但是,如果更少的“if”语句足以正确区分,神经网络就不太可能完全学习这一点。这类似于子网的处理。例如,如果“1.2.3.4”在训练数据中是一个非常具有辨别力的 IP,即该 IP 很可能产生特定结果,则模型可能会学习根据其位的特定子集来检测该 IP。因此,模型将类似地处理这些特定位具有相同值的不同 IP。

总的来说,这种方法需要谨慎对待。

One-hot 编码频繁 IP

如果不同 IP 的数量太多而无法为每个 IP 创建新特征,您可以检查每个 IP 是否实际上足够重要以合并到模型中。例如,您可以检查 IP 的直方图。训练数据中只有少量样本的 IP 可能值得忽略。如果样本较少,模型可能会过度拟合这些 IP,或者完全忽略它们。因此,您可以对训练数据中最常见的 1000 个 IP 进行 one-hot 编码,并为所有其他 IP 添加一项功能。同样,您可以尝试进行一些数据预处理并根据 IP 的位置等对 IP 进行聚类。

使用数字输入

对于 IPv4 使用单个 int32 功能或四个 int8 功能可能很诱人。这是一个坏主意,因为它允许模型对 IP 进行算术运算,例如 1.1.1.1 + 2.2.2.2 = 3.3.3.3

词嵌入

这是您在问题( https://keras.io/layers/embeddings/ )中链接的方式。这些嵌入适用于 Word Embeddings并且应该接受句子/文本的培训。它们通常不应该用于对 IP 进行编码。

关于python - 如何使用 IP 地址作为神经网络中的特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48259511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com