创建机器学习模型时将 IP 地址作为特征处理

数据挖掘 机器学习 数据科学模型
2022-02-20 01:15:52

我正在研究用于欺诈检测的 ML 模型,我拥有的两个功能是 sender_IP_address 和 receiver_IP_address。

我认为这是一个非常重要的功能,不容忽视。我的问题是,我该如何处理这种功能?

我的数据集大约有 100k 行和 80 列。

我知道 IP 是分类数据,我可以使用OneHotEncoder(例如),但是从这 100k 行中,我有大约 70k 个唯一 IP 地址(一个 IP 地址可以出现 1 到 800 次)。如果我对其进行编码,我将拥有 +70k 的训练特征,并且我将不得不在数据上有很大的差异。此外,与 IP 地址相关的分类数据也会出现很大的不平衡,因为我将有 80% 的 IP 出现 1 次,而 20% 的 IP 出现超过 1 次(甚至 300 次)。

我已经读过可以做到这样的事情,但我不知道它是否合法,并且将 IP 地址视为数字数据。例如,对于 IP 地址 46.242.124.174 分为 4 个列/特征,每列都有一个数字,在本例中为 46|242|124|174。这是正确的方法吗?

另外,sender_IP_address 和receiver_IP_address 是否有任何类比,例如:

sender_IP_address: 46.242.124.174 receiver_IP_address: 225.242.12.174

两个 IP 地址有一些相同的数字(242 和 174)这是否意味着什么?

1个回答

One-hot 编码已经无法在这种规模下工作——70,000 个特征给某些算法带来了问题,不仅在性能方面,而且在准确性方面。由于信息分布在 70,000 个功能中,它可能会淹没所有其他功能和/或难以了解有关单个 IP 的任何信息。显然有数十亿个潜在的 IP 地址。

将八位字节视为数字是没有意义的。它们没有顺序意义;46.* 不比 250.* 更接近 47.*。

IP几乎是类似ID的信息,ID除了唯一性之外没有任何有意义的内容。但不完全是。IP地址有一些结构。您可以使用它是否是 A/B/C 类来屏蔽子网并使用它。数量会更少,并且作为“类别”会更有意义。

但是,您最好的选择可能是从 IP 收集一些辅助信息,例如地理位置,并尝试使用该信息 - 它来自哪个国家或地区。IP本身没有多大意义。