首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >欺诈检测分类ML的经纬度转换

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

Stack Overflow用户
提问于 2018-04-10 00:01:03
回答 1查看 5.6K关注 0票数 6

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

代码语言:javascript
复制
>>> 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)但是我不知道在我的分类用例中这是否真的是必要的?我已经考虑过将纬度和经度合并为每个记录的一个变量。然而,有些地区的经度值为负值。此外,有些欺诈者可能位于高纬度和经度区域,而另一些欺诈者可能位于低纬度和经度区域。所以,也许把纬度和经度组合成一个变量无助于训练模型?

我也可以把纬度和经度转换成城市名称。但如果我这样做了,一个城市会有类似的拼写与另一个非常遥远的城市,这可能也无助于训练模式。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-10 07:33:01

有多种方法来处理这个问题。您共享的链接谈到了这样一个事实,即单独处理lat-长,并对它们执行功能缩放。这种方法是很好的,因为假设在球面坐标系中,它们之间的距离更近,在现实生活中它们实际上更接近。

但你的问题不一样。我想你需要知道如何处理你的模型。您可以通过以下方式进行操作。

1.选择正确的模式

并不是所有的机器学习技术都要求您对这些特性进行缩放或规范化。尺度归一化通常是为了使模型相信所有特征都是相等的。这是必需的,因为有些机器学习模型是基于距离度量的,比如KNN、Logistic回归。因此,如果您不执行功能的缩放,它可能会破坏学习。如果您正在使用一些基于树的模型,如DTs或随机森林模型或XGBoost或GBM,我认为您可以使用这些特性,即使不进行缩放。因此,您可以直接在您的功能集中使用lat-long。

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

在这类情况下,您可以使用一些集群技术(如KMeans )来执行lat long的集群,在您的数据集中创建一个名为cluster的特性,并给出其值(集群号距离)与集群中心之间的距离,然后删除lat长列。您还可以为每个集群创建一个单独的特性,并获取每个集群中心的距离,并将该距离存储到这些变量中。

3.逆向地理编码

正如您已经提到的,您还可以执行反向地理编码以获得城市和国家名称。但在你的情况下,这种方法可能不是一个强有力的预测欺诈。但仅供参考,

代码语言:javascript
复制
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这样的分层聚类。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49743337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档