gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:25:15 25 4
gpt4 key购买 nike

我正在尝试构建一个 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。选择合适的型号

并非所有机器学习技术都需要您缩放或规范化特征。尺度归一化通常是为了让模型相信所有特征都是平等的。这是必需的,因为某些机器学习模型基于距离度量,例如 KNN、逻辑回归。因此,如果您不执行特征缩放,则可能会搞砸学习。如果您正在使用一些基于树的模型,例如 DT、随机森林、XGBoost 或 GBM,我认为您甚至可以在不缩放的情况下使用这些特性。因此,您可以直接在您的功能集中使用经纬度。

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 等层次聚类。

关于python - 欺诈检测分类ML的经纬度转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49743337/

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