特征工程:提取电子邮件通讯的效果
Feature Engineering: extracting the effect of email newsletter
我对机器学习和应用建模还很陌生。目前我正在做一个预测项目,并为我的功能收集各种数据。我经常读到只选择独立特征是不够的,你想在现有特征的基础上提取新特征。
假设一家公司发送了一份新年通讯,我有以下标题,其中包含日期和邮件列,其中邮件列中的 1 代表通讯已发送,0 代表未发送通讯
library(tidyverse)
tibble <- tibble(date=as_date(1:31, origin="2019-12-31"),
mail=factor(c(1, rep(0,30))))
# A tibble: 31 x 2
date mail
<date> <fct>
1 2020-01-01 1
2 2020-01-02 0
3 2020-01-03 0
4 2020-01-04 0
5 2020-01-05 0
6 2020-01-06 0
7 2020-01-07 0
8 2020-01-08 0
9 2020-01-09 0
10 2020-01-10 0
# ... with 21 more rows
基于邮件功能,我想构建一个新功能来表示一种滞后的邮件效果,因为客户既不会立即检查他们的邮件,也不会立即访问商店或因此购买东西。所以效果可能会持续4、5天。
我可以将 1
添加到以下 4 个日期。但我无法想象这将是最佳实践。所以我的问题是模拟这种效果的最佳做法是什么。
如有任何建议,我们将不胜感激
如果我没理解错的话,您想要一个列(特征)来表示新闻通讯是否在过去 4 天内的任何时间发送? lag
函数可以帮助:
tibble %>%
mutate(mail_lagged =
as.numeric(
mail == 1 |
lag(mail, 1) == 1 |
lag(mail, 2) == 1 |
lag(mail, 3) == 1 |
lag(mail, 4) == 1))
# A tibble: 31 x 3
date mail mail_lagged
<date> <fct> <dbl>
1 2020-01-01 1 1
2 2020-01-02 0 1
3 2020-01-03 0 1
4 2020-01-04 0 1
5 2020-01-05 0 1
6 2020-01-06 0 0
7 2020-01-07 0 0
8 2020-01-08 0 0
9 2020-01-09 0 0
10 2020-01-10 0 0
# … with 21 more rows
我对机器学习和应用建模还很陌生。目前我正在做一个预测项目,并为我的功能收集各种数据。我经常读到只选择独立特征是不够的,你想在现有特征的基础上提取新特征。
假设一家公司发送了一份新年通讯,我有以下标题,其中包含日期和邮件列,其中邮件列中的 1 代表通讯已发送,0 代表未发送通讯
library(tidyverse)
tibble <- tibble(date=as_date(1:31, origin="2019-12-31"),
mail=factor(c(1, rep(0,30))))
# A tibble: 31 x 2
date mail
<date> <fct>
1 2020-01-01 1
2 2020-01-02 0
3 2020-01-03 0
4 2020-01-04 0
5 2020-01-05 0
6 2020-01-06 0
7 2020-01-07 0
8 2020-01-08 0
9 2020-01-09 0
10 2020-01-10 0
# ... with 21 more rows
基于邮件功能,我想构建一个新功能来表示一种滞后的邮件效果,因为客户既不会立即检查他们的邮件,也不会立即访问商店或因此购买东西。所以效果可能会持续4、5天。
我可以将 1
添加到以下 4 个日期。但我无法想象这将是最佳实践。所以我的问题是模拟这种效果的最佳做法是什么。
如有任何建议,我们将不胜感激
如果我没理解错的话,您想要一个列(特征)来表示新闻通讯是否在过去 4 天内的任何时间发送? lag
函数可以帮助:
tibble %>%
mutate(mail_lagged =
as.numeric(
mail == 1 |
lag(mail, 1) == 1 |
lag(mail, 2) == 1 |
lag(mail, 3) == 1 |
lag(mail, 4) == 1))
# A tibble: 31 x 3
date mail mail_lagged
<date> <fct> <dbl>
1 2020-01-01 1 1
2 2020-01-02 0 1
3 2020-01-03 0 1
4 2020-01-04 0 1
5 2020-01-05 0 1
6 2020-01-06 0 0
7 2020-01-07 0 0
8 2020-01-08 0 0
9 2020-01-09 0 0
10 2020-01-10 0 0
# … with 21 more rows