特征工程:提取电子邮件通讯的效果

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