欺诈检测分类ML的经纬度转换

Posted

技术标签:

【中文标题】欺诈检测分类ML的经纬度转换【英文标题】:Conversion of latitude and longitude for fraud detection classification ML 【发布时间】:2018-09-19 11:10:27 【问题描述】:

我正在尝试构建一个 ML 分类模型,用于在帐户注册时进行欺诈检测。我手头的数据是:姓名、电子邮件地址、坐标(注册时 IP 地址的纬度和经度)和标签(欺诈与非欺诈)。以下是我的数据集的简短摘要:

>>> dataset.summary
Index(['name', 'email','latitude','longitude','label'],dtype='object')
>>> dataset.shape
(93207, 4)

到目前为止,我在训练模型时无法理解如何处理坐标变量。 StackExchange 上的一些用户建议使用正弦和余弦函数的某些组合将纬度和经度转换为 X、Y 和 Z 坐标。 (即https://datascience.stackexchange.com/questions/13567/ways-to-deal-with-longitude-latitude-feature)但我不知道这在我的分类用例中是否真的必要?我曾考虑将纬度和经度组合成每条记录的 1 个变量。但是,某些地区的经度值为负值。此外,一些欺诈者可能位于高纬度和经度区域,而其他欺诈者可能位于低纬度和经度区域。因此,也许将纬度和经度组合成 1 个变量无助于训练模型?

我还可以将纬度和经度转换为城市名称。但如果我这样做了,一个城市的拼写就会与另一个很远的城市有相似的拼写,这也可能无助于训练模型。有什么建议吗?

【问题讨论】:

【参考方案1】:

有多种方法可以解决此问题。您共享的链接谈到了单独处理 lat-long 并对它们执行特征缩放的事实。这种方法很好,因为假设如果在球坐标中它们彼此更接近,那么在现实生活中它们实际上会更接近。

但是你的问题是不同的。我想您需要知道如何处理模型中的经纬度。您可以通过以下方式进行。

1。选择合适的型号

并非所有机器学习技术都要求您对特征进行缩放或规范化。尺度归一化通常是为了让模型相信所有特征都是平等的。这是必需的,因为一些机器学习模型基于距离指标,如 KNN、Logistic 回归。所以如果你不执行特征的缩放,它可能会搞砸学习。如果您使用一些基于树的模型,例如 DTs 或 Random-Forests 或 XGBoost 或 GBMs,我认为即使没有缩放也可以使用这些功能。因此,您可以直接在功能集中使用 lat-long。

2。执行聚类以创建虚拟变量

在大多数情况下,您可以使用 KMeans 等一些聚类技术对经纬度进行聚类,在数据集中创建一个名为 cluster 的特征并为其赋值聚类编号距聚类中心的距离,然后删除经纬度列。您还可以为每个集群创建一个单独的特征,并获取每个集群中心的距离并将该距离存储到这些变量中。

3。反向地理编码

正如您所提到的,您还可以执行反向地理编码来获取城市和国家/地区名称。但在您的情况下,这种方法可能不是欺诈的有力预测指标。但仅供参考,

from pygeocoder import Geocoder
location = Geocoder.reverse_geocode(12.9716,77.5946)
print("City:",location.city)
print("Country:",location.country)

4。我的建议

执行一些层次聚类而不是 KMeans,因为如果特征空间本质上是线性的,KMeans 会沿着最大化方差工作,但如果它是非线性的,那么最好使用像 PAM、CLARA 和 DBSCAN 这样的层次聚类。

【讨论】:

Mayukh,你认为我可以在这个用例中使用随机森林分类器吗?我喜欢随机森林模型,因为它简单且无需对输入变量进行特征缩放或标准化。通常我可以把经纬度作为整数作弊。然而,一些经纬度的小数点比其他的多。如果我将所有经纬度记录限制为小数点后 2 位,您认为位置仍然准确吗?此外,如果我要将地理编码 IP 反转为城市,我不确定如何将城市从分类变量转换为数字。 随机森林很好。但是尝试使用大量的交叉验证数据并检查学习曲线,以确保您是否存在任何偏差或差异。如果遇到方差,您应该从随机森林切换到提供更好正则化的 XGBoost。对于分类值的编码,您可以使用 sklearn 的编码库。 sklearn 确实有一个 'preprocessing.LabelEncoder()' 功能。但我不知道它是否适用于城市名称。例如,柏林和伯克利可能有类似的编码,但一种在德国,一种在美国。假设在数据集中,来自伯克利的账户注册很可能是欺诈,而来自柏林的账户注册可能不是欺诈。编码如何处理这种细微差别? @Stanleyrr 该数字不会相似,因为您执行的是纯标签编码,它们会采用不同的数字。然而标签编码位置并不是一个好主意,因为它会给不同的地方提供不同的偏好,如果位置太多,那么虚拟编码也会增加维度。所以总的来说编码是个坏主意。此外,我不认为位置名称是一个重要的特征。 @Stanleyrr 姓名和电子邮件似乎也不是一个好的预测指标。

以上是关于欺诈检测分类ML的经纬度转换的主要内容,如果未能解决你的问题,请参考以下文章

坐标转换经纬度

经纬度转换高斯坐标怎么转换,高手帮忙一下?

如何把IP转换成经纬度

经纬度转换成XYZ坐标

如何将WGS84坐标转换成经纬度坐标

求帮忙高斯坐标转换经纬度