带有标签问题的时间序列二元分类

数据挖掘 机器学习 分类 时间序列 特征工程 半监督学习
2022-02-08 23:09:52

我的情况相当复杂,所以我将给出一个来自更简单领域的类似示例。假设我们想尝试预测移动游戏用户何时会进行购买(如果给定销售)。几乎每个用户总是瞬间成为非购买者,因为每个人都在不断地不购买任何东西。有些人买东西是为了瞬间成为购买者,但又回到了不购买的标准状态。我们有该购买的时间戳。如果我们能够充分了解用户行为,我们就可以在用户购买之前预测他们何时购买。如果是这种情况,那么行为和游戏状态与购买者非常相似但实际上并未购买的用户在进行销售时会这样做。所以问题是我们如何把它变成一个机器学习问题。我目前的计划是通过将 YES 案例标记为购买者来使用二进制分类,因为那些以正常价格购买的人会在出售时购买。我根据最近回顾窗口中的操作构建我的功能,例如在最后一天有多少类型的操作。对于从不购买的所有用户,我选择随机时间戳,构建我的功能并将它们用作 NO 案例。因为我可以选择任意数量的 NO 时间戳,所以我已经做了 100 次我的 YES 案例。然后我可以使用分类器,我喜欢树集成方法,但我认为分类器在这里并不重要。对于从不购买的所有用户,我选择随机时间戳,构建我的功能并将它们用作 NO 案例。因为我可以选择任意数量的 NO 时间戳,所以我已经做了 100 次我的 YES 案例。然后我可以使用分类器,我喜欢树集成方法,但我认为分类器在这里并不重要。对于从不购买的所有用户,我选择随机时间戳,构建我的功能并将它们用作 NO 案例。因为我可以选择任意数量的 NO 时间戳,所以我已经做了 100 次我的 YES 案例。然后我可以使用分类器,我喜欢树集成方法,但我认为分类器在这里并不重要。

问题是这不起作用。有两件事值得注意,我认为这是我遇到的问题的核心。首先,我们试图预测“何时”,而不仅仅是“谁”。经常玩或之前购买过的用户通常更有可能购买,因此很容易制作一个与时间无关的分类器并预测谁可能购买。这意味着对简单的时间无关问题有用的特征可能会“污染”特征集。我已经删除了其中的一些功能并看到了一些改进。第二个问题与标签有关。我们为购买者提供了许多“是”案例,但如何定义“否”案例。我在上面描述了我正在做的事情,但我不确定这是否真的是最好的方法。

另外,我应该指出两种情况,这不是。这不是一类二元分类,它通常在不平衡情况下使用大类,将问题减少到无监督异常/异常值检测。这也不是半监督的情况,我将两个类都标记为数据的子集。我确实只有一些肯定的案例,没有一个没有案例。欢迎任何想法。

2个回答

从您对数据的描述来看,这不是时间序列问题。时间在这里不是一个因素,对于每个用户,您在选择时间阈值后都有一组变量。尽管您寻求“何时”,但根据您的解释,这可能是您无法企及的。

如果我理解正确,您正在进行分类,但您不确定您的“数据收集过程”,至少对于标记为“否”的 obs。

为什么不固定一个时间戳,记录所有你认为与结果相关的变量,并保持你定义的结果(从不购买=“否”,至少购买一次=“是”)。

我会将其视为分类问题,但不是查看经典指标(来自混淆矩阵),而是对您从每个 obs 获得的概率更感兴趣,而不是事实(到目前为止您知道及时)。

想象一个用户,估计概率为 0.90 (90%),但标签说“不”。他是模特认为应该买但没有买的人,他很有可能对出售感兴趣。

也许您可以在此类信息上进行聚类,在您的模型错误的地方创建用户组,但它对它的估计非常有信心。基本上,您对误报 obs 更感兴趣。

但假阴性也可以让你洞察力,再次看看你得到的概率。

我知道这不太可能,但是如果您可以收集更多数据,我建议您使用一个(或更多)变量来衡量用户与销售之间的关系。

另外,我同意删除用户长时间游戏这一事实的决定,这可能与您的结果“过于相关”。

在不了解更多数据的情况下,这是我的两分钱。

我找到了解决方案。我的怀疑是正确的,有办法解决这两个问题。

对于只知道确定的“是”而不知道“是”和“否”的问题,有一种机器学习专门用于这种情况,称为PU-learning有一些基于scikit-learn构建的这种类型的机器学习根据训练数据学习二进制分类问题,其中目标被标记为是或根本不是。然后它试图通过将未标记的数据分类为是或否来找到决策边界。这并没有完全解决决策边界应该在哪里的问题,因为谁将是一个很好的人来提供销售,但我可以通过在业务限制下调整我的 ROC 曲线来做到这一点。

第二个问题是关于数据和特征工程的。基本上,为不同的类做不同的数据准备是一个坏主意。通过购买事件标记我的“是”案例然后回顾活动并不好。当您预测正确时,我需要选择随机时间来获得分布。如果你不这样做,你的概率是不准确的。我还需要每个用户有许多时间戳来采样该用户的不同状态。这意味着您将获得一些事件标记为用户的“是”,而某些事件未标记为同一用户。然后人们会期望在每个用户的决策边界的任一侧使用一些未标记的时间戳来绘制边界。然后,这将抑制仅从时间独立的角度来看是好的特征的污染问题。明确的方法是选择所有(或一部分)登录事件。您可以以任何您认为合适的方式基于该事件构建您的功能。标记是通过加入购买活动来完成的,以期待他们在不久的将来是否会购买。“接近”的定义需要调整,但您可能会根据情节做出有根据的猜测。如果存在购买事件,则该登录事件标记为是,否则不标记。PU 学习完成其余的工作。如果存在购买事件,则该登录事件标记为是,否则不标记。PU 学习完成其余的工作。如果存在购买事件,则该登录事件标记为是,否则不标记。PU 学习完成其余的工作。