gpt4 book ai didi

machine-learning - 使用大量数据偏向某一类别来预测类别

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

我有一个关于如何处理一些有趣数据的问题。

我目前有一些数据(计数是真实的,但情况是假的),我们可以预测人们今天会在网上购买的 T 恤数量。我们对每个人的特征属性都了解很多,而且这些属性每天都在变化。我们还知道每个人前几天购买了多少件 T 恤。

我想要的是一种算法,能够生成一个连续变量,该变量是该人今天要购买的 T 恤数量的排名或“分数”。我的最终目标是,如果我可以将这个分数附加到每个人身上,我可以根据分数对他们进行排序并在特定的 UI 中使用它们。目前,我一直在使用 sci-kit 的随机森林回归,其中我的目标类别是每个人昨天购买 T 恤的数量。效果非常好,只是我的数据有点困难,因为有很多人购买了 0 件 T 恤。这是一个问题,因为我的随机森林给了我很多预测的 0 类,但我无法有效地对它们进行排序。我明白为什么会发生这种情况,但我不确定解决它的最佳方法。

我想要的是一个非零分数(即使它是一个接近 0 的非常小的数字),它可以告诉我有关特征和预测类别的更多信息。我觉得我的一些特征一定能够告诉我一些事情,并给我一个比 0 更好的预测。

我认为固有的问题是使用随机森林回归器作为算法。每棵树都获得投票;但是,零太多,以至于有很多森林,所有树都投票给 0。我想尝试另一种算法,但我不知道哪种算法效果最好。目前,我正在对整个数据集进行训练,并使用 scikit 提供的袋外估计。

这里是数据类的计数(使用Python的Counter([target classes])。设置如下:{predicted_class_value: counts_of_that_value_in_the_target_class_list}{0: 3560426、1: 121256、2: 10582、3: 1029、4: 412、5: 88、6: 66、7: 35、8: 21、9: 17、10: 17、11: 10、12 : 2、13: 2、15: 2、21: 2、17: 1、18: 1、52: 1、25: 1}

我尝试了一些方法来操纵训练数据,但我真的在猜测要做的事情。

我尝试过的一件事是将训练集中的零数量缩放为基于其他数据的线性缩放量。因此,我没有向算法传递 350 万个 0 类行,而是将其缩小到 250,000 个。所以我的训练集看起来像:{0: 250,000, 1: 121256, 2: 10582, 3: 1029, … }。这对算法返回的 0 数量有很大影响。我已经从算法将 99% 的数据猜测为 0 变成了大约 50%。然而,我不知道这是否是一件有效的事情,或者是否有意义。

我尝试过的其他事情包括增加森林大小 - 然而这并没有太大的效果,告诉随机森林仅对每棵树使用 sqrt 特征 - 这已经产生了相当好的效果,并使用袋外估计——这似乎也有很好的结果。

总而言之,我有一组数据,其中一个类别的数据量不成比例。我希望有某种方法来生成一个连续值,该值是预测数据集中每个值的“分数”,以便我可以对它们进行排序。

感谢您的帮助!

最佳答案

这是一个不平衡的类问题。您可以做的一件事是过采样/欠采样。欠采样意味着您从多数类中随机删除实例。过度采样意味着您使用少数类中的替换实例进行采样。或者您可以结合使用两者。您可以尝试的一件事是 SMOTE[1],它是一种过采样算法,但它不只是从少数类中采样现有实例,而是创建合成实例,这将避免过度拟合,并且理论上会更好地泛化。

[1] Chawla、Nitesh V. 等人。 “SMOTE:合成少数过采样技术。”人工智能研究杂志(2002):321-357。

关于machine-learning - 使用大量数据偏向某一类别来预测类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32189310/

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