【问题标题】:Supervised Learning for User Behavior over Time随着时间的推移用户行为的监督学习
【发布时间】:2011-08-09 00:37:26
【问题描述】:

我想使用机器学习来识别转换为网站订阅者的用户的签名,因为他们在一段时间内的行为。

假设我的网站有 6 种不同的功能,可以在订阅前使用,用户可以随时转换为订阅者。

对于给定的用户,我有统计数据,表示该用户每天与功能 1-6 交互的连续范围内的强度,因此:

  • D1: f1,f2,f3,f4,f5,f6
  • D2: f1,f2,f3,f4,f5,f6
  • D3: f1,f2,f3,f4,f5,f6
  • D4: f1,f2,f3,f4,f5,f6

假设在第 5 天,用户进行了转化。

哪台机器使用算法可以帮助我确定哪些是最常见的特征使用模式并导致转换?

(我知道这是一个超级基本的分类问题,但我找不到使用纵向数据的好例子,其中输入向量像我一样按时间排序)


为了进一步发展这个问题,我们假设每个特征都有 3 个强度,用户可以在这些强度下进行交互(H、M、L)。

然后我们可以将每个用户表示为一系列交互强度状态。因此,对于用户:

  • LLLLMM LLMMHH LLHHHH

这意味着在第一天他们只与功能 5 和 6 进行了显着交互,但到第三天他们与功能 3 到 6 进行了高度交互。

N-gram 样式

我可以将这些状态单词和用户的生命周期变成一个句子。 (可能还需要在词汇表中添加一个“转换”词)

如果我通过一个 n-gram 模型运行这些“句子”,我可以得到一个用户可能的未来状态,因为他/她过去的几个状态有点有趣。但是,我真正想知道导致转换词的最常见的 n-gram 集。我不想输入一个 n-gram 并获得下一个预测词,而是想给出预测词并取回 10 个最常见的 n-grams(从我的数据中),这可能会导致这个词。

Amaç Herdağdelen 建议将 n-gram 识别为实际的 n,然后计算每个用户拥有多少 n-gram 状态。然后与转换数据相关(我猜这个例子中没有转换词)。我担心的是会有太多的 n-gram 来使这种方法实用。 (如果每个状态有 729 种可能性,而我们使用的是三元组,那就有很多可能的三元组!)

或者,我是否可以通过记录导致转换词的 n-gram 的数据,然后对它们运行某种类型的聚类以查看转换的常见路径是什么?

生存风格

Iterator 建议,我理解生存问题的类比,但这里的文献似乎侧重于预测死亡时间,而不是导致死亡的常见事件序列。此外,在查找 Cox Proportional Hazard 模型时,我发现它不能容纳随时间变化的变量(它有利于区分性别和种族等静态属性) - 所以它似乎非常适合与我的问题不同的问题.

决策树样式

这似乎很有希望,尽管我无法完全理解如何构建数据。由于数据不是平坦的,树建模是否有可能从一种状态移动到另一种状态以及何时导致转换?这与我能够找到的决策树数据文献非常不同。

此外,需要明确如何识别导致转化的模式,而不是模型预测给定序列后可能发生的转化。

【问题讨论】:

  • 注:添加了统计标签。这是一个分类问题,但更类似于生存分析问题。不过,我没有将其标记为生存分析,因为这可能会吓跑大部分 SO 人群。我还建议发布到 stats.SE 网站(交叉验证)。在 SO 上,可能会得到算法答案,在 stats.SE 上,您可能会得到更倾向于统计的答案。
  • 是否应该将句子“...interaction with features 1-5 on daily based...”重写为“1-5”替换为“1-6”,符合句子之前和之后的表?
  • N-gram 是一系列状态变化,但本质上是完全连续的。决策树能够进行状态更改,但不受一维嵌入的限制(如字符或单词)。数学需要一些时间来解释,但决策树总是优于将事物编码为一系列状态,因为它包含相同的模型空间等等。
  • 您的功能似乎每天都没有变化。

标签: statistics machine-learning


【解决方案1】:

理论上,hidden markov models 可能是解决您问题的合适方法。您网站上的功能将构成字母表,您可以将交互序列用作正面或负面实例,具体取决于用户最终是否订阅。我不知道隐藏状态的数量应该是多少,但毕竟为该参数找到合适的值是问题的一部分。

作为旁注,正面实例很容易识别,但用户到目前为止尚未订阅的事实并不一定意味着他/她不会。您可能会考虑将您的数据限制为年龄足够大的用户。

我还会考虑将数据转换为固定长度的向量,并应用概念上更简单的模型,这些模型可以让您对正在发生的事情有一些直觉。你可以使用n-grams(长度为n的连续交互序列)。

例如,假设给定用户的交互序列是“f1,f3,f5”,“f1,f3,f5”将构成一个 3-gram(三元组)。同样,对于相同的用户和相同的交互序列,您将有“f1,f3”和“f3,f5”作为 2-grams(bigrams)。为了将每个用户表示为一个向量,您将识别所有 n-gram,直到实际 n,并计算用户使用给定 n-gram 的次数。向量中的每一列将代表给定用户观察给定 n-gram 的次数。

然后——可能借助一些合适的归一化技术,例如pointwise mutual informationtf-idf——你可以查看 n-gram 和最终结果之间的相关性,以了解发生了什么,执行feature selection 查找用户参与的最突出的序列,或应用最近邻、支持机器或朴素贝叶斯等分类方法构建预测模型。

【讨论】:

  • 几个问题: 1:HMM 用于有限的离散空间。 OP 没有说明这些功能是否适用于离散空间。 2:n-grams 和 tf.idf 是信息表示方法,不是预测模型。 3:特征选择是在拟合模型的上下文中进行的过程,通常不被称为“进行特征选择拟合模型......”。
  • 1) 你是对的。 OP 没有明确说这些特征是离散的——这是我的假设。如果特征是连续的(例如,交互的强度),那么他必须根据阈值对特征进行离散化以应用 HMM。 2) 你说得对,n-gram 和 tf-idf 不是预测模型——尽管我没有说它们是?
  • 3) 我不同意。您可以将特征选择用于解释目的,并且您用于特征选择的模型不必与您将用于预测目的的模型相同(例如,具有降维或互信息的 PCA 对于预测分析并不实用,但它可以帮助 OP 了解哪些功能很重要,并深入了解交互和订阅之间的关系。
  • 关于#3,只需阅读维基百科条目的第一句话。 :) 当然,他可以去做一些无人监督的事情,但问题的标题是“监督学习……”;-)
  • 感谢两位深思熟虑的回答!我希望我对该领域有更好的了解,以便更好地感谢;)所以,我实际上拥有的特征统计数据是连续的,但如果有帮助的话,我可以将它们离散化。我现在要在接下来的几天里研究和总结你们提出的一些选择,我会报告回来。
【解决方案2】:

这更像是一个生存分析问题:随着时间的推移,用户将转换或可能会退出人群,或者将继续出现在数据中并且(尚未)不属于任何一个阵营。为此,您可能会发现 Cox 比例风险模型很有用。

如果您想从不同的角度来追求事物,即从图形模型的角度多一个角度,那么卡尔曼滤波器可能更有吸引力。它是由@AmaçHerdağdelen 提出的 HMM 的泛化,适用于连续空间。

为了便于实施,我推荐生存方法。它是最容易分析、描述和改进的。牢牢掌握数据后,请随意使用其他方法。

【讨论】:

  • 我是否遗漏了有关如何正确实施生存方法的内容?请在上面修改后的问题中查看我的担忧。
  • 是的。危险率类似于转化率。 Cox 只是一种方法,协变量的使用是相当标准的,甚至是随时间变化的。 Wikipedia entry 是一个不错的起点,尽管它的统计数据可能比您目前想要解决的要重一些。如果您想要一个非常简单的模型,决策树就可以了,而且它非常易于解释。
【解决方案3】:

除了马尔可夫链,我建议使用决策树或贝叶斯网络。这两种方法都可以让您了解用户在序列后进行转换的可能性。

我之前忘了提这个。您可能还想看看 Google PageRank 算法。它将帮助您说明用户完全消失 [不订阅]。其结果将帮助您鼓励使用某些功能。 [因为他们更有可能给你打折]

【讨论】:

  • 感谢您的回复!我考虑了如何处理决策树并在修改后的问题中添加一些注释。
【解决方案4】:

我认为 Ngramm 是最有前途的方法,因为数据挖掘中的所有序列都被视为依赖于几个基本步骤(HMM、CRF、ACRF、马尔可夫场)的元素所以我将尝试使用基于 1-gram 和 2 -克。

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2017-06-27
    • 2013-03-24
    • 2021-10-17
    • 2012-07-01
    • 2018-08-11
    • 2017-12-08
    • 2019-02-20
    • 2017-11-02
    相关资源
    最近更新 更多