我有一个用户数据集,每个用户都有关于他的活动的日常信息(代表他的身体活动的一些测量值的数值)。
此外,每个用户每天都有一个布尔值,表示他/她是否采取了特定行动。
数据集如下所示
+------+----------+----------+----------+-------+
|userID| date| activity1| activity2| action|
+------+----------+----------+----------+-------+
| user1|2016-06-05| 5.3| 6| false|
| user1|2016-06-04| 3.1| 8| true|
| user1|2016-06-03| 2.0| 13| false|
| user1|2016-06-02| 4.7| 1| false|
| user1|2016-06-01| 1.3| 9| false|
| user1| ...ect.| ...| ...| ...|
| user2|2016-06-05| 0.6| 5| ture|
| user2|2016-06-04| 3.0| 5| false|
| user2|2016-06-03| 0.0| 0| false|
| user2|2016-06-02| 2.1| 3| false|
| user2|2016-06-01| 6.3| 9| false|
| user2| ...ect.| ...| ...| ...|
| user3|2016-06-05| 5.3| 0| false|
| user3|2016-06-04| 5.3| 11| false|
| user3|2016-06-03| 6.8| 5| false|
| user3|2016-06-02| 4.9| 2| false|
| user3| ...ect.| ...| ...| ...|
+------+----------+----------+----------+-------+
请注意,数据集不是固定的,因此每个新的一天都会为每个用户添加一个新行。但是列数是固定的。
目标
建立一个模型来预测哪个用户可能在不久的将来采取行动(例如,在接下来的 7 天内)。
方法
我的方法是构建代表每个用户在一段时间内的活动值的特征向量,并使用操作列作为基本事实的来源。然后我将ground-truth和特征向量提供给二进制分类训练算法(例如SVM或随机森林),以生成能够预测用户是否可能采取行动的模型。
问题
我从积极的例子开始,即采取行动的用户。为了提取正例的特征向量,我结合了行动前 X(30 或 7 或 1)天(包括采取行动的日期)的活动值。
当我转向负例时,它变得不那么明显了,我不确定如何选择负例以及如何从中提取特征。这实际上让我重新质疑我选择正例和构建特征向量的方式是否正确。
问题
- 如何建立正面(确实采取行动的用户)和负面(没有采取行动的用户)示例的基本事实?
- 在这种情况下,什么是反面例子?是用户在固定时间内没有采取行动吗?如果他在这个固定期限内没有采取行动,而是在之后立即采取行动呢?
- 选择日期范围以从中提取特征向量的可能方法是什么。
理性问题
有没有更合适的方法(除了分类)来解决这类问题?