需要特征工程建议

数据挖掘 机器学习 特征工程 数据科学模型
2021-09-19 16:36:46

我在特征工程期间遇到问题。寻找一些建议。问题陈述:我有多个客户 3 天的使用数据。有些只有 1 天的使用量,有些是 2 天,有些是 3 天。数据与每天发送的电子邮件数量/添加的联系人数量等有关。

我将此时间序列数据转换为按列,即客户在第 1 天发送的电子邮件数量作为一项功能,客户在第 2 天发送的电子邮件数量作为一项功能,依此类推。但问题是,对于不同的客户,使用可以是递增顺序或递减顺序。

即,示例 1:客户 'A' --> ' 1st 发送的电子邮件数量。天' = 100 。'第 2 天发送的电子邮件数量'=0

示例 2:客户 'B' --> ' 1st 发送的电子邮件数量。天' = 0 。'第 2 天发送的电子邮件数量'=100

示例 3:customer 'C' --> 'number of emails sent on 1st . 天' = 0 。'第 2 天发送的电子邮件数量'=0

示例 4: customer 'D' --> 'number of emails sent on 1st . 天' = 100 。'第 2 天发送的电子邮件数量'=100

在前两种情况下 => 我的新功能将具有“-100”和“100”作为值。我想这有利于区分。但是当新特征值在两种情况下都为“0”时,第 3 列和第 4 列会出现问题,任何人都可以建议一种方法来处理这个问题。

处理此问题的一种方法:

我可以在这些情况下添加“没有变化”,但我对一件事感到困惑。如果我这样做,我将不得不将新特征设为分类,这并不理想,因为其他值将是连续的。

相反,我可以在新功能中使用绝对值,并将趋势表示为“+1”或增加“-1”表示减少“无变化”表示没有变化,如果两个值都为“0”,则表示“0”。那会是一个好方法吗?

最终目标是预测用户是否会继续使用该应用程序。所以它基本上是一个二分类模型。而且我想捕捉甚至使用的规模,即“A 用户每天发送 100 封电子邮件”应该不同于“B 用户每天发送 10000 封电子邮件”

1个回答

好吧,您想确定使用情况的变化,您可以尝试以下操作:

F(d一个是的1,d一个是的2)=d一个是的2-d一个是的1+δ||d一个是的2-d一个是的1+δ||×||d一个是的2+d一个是的1(d一个是的2+d一个是的1+1)(d一个是的2-d一个是的1+1)||

在哪里δ是您机器的 eps(需要求和以区别于其他浮点数的最小值)

那会给你

F(100,0)-98.02
F(0,100)=100
F(100,100)0.995
F(0,0)=0

你可以看看我的实验here

这将映射所有非更改[0,1]在哪里F(0,0)映射到0F(,)映射到1

这个从哪里来?只需手动调整功能。但我认为这可能足以满足您的应用程序

解释这个想法

您想要一个包含大量信息的功能: - 使用量是否大于零?- 是增加还是减少?- 如果停止,使用量是多少?

好吧,您的使用因整数值而异,因此您可以将整个不变但高于 0 的情况映射到以前未使用的间隔。

上面的函数将映射到[0,1]所有不变的可能性,以指数的方式(一个(-1s一个Ge)) 你也可以从正变化中提取实际值和负变化的近似值(当跌幅很高时,这是一个更好的近似值)

这不是完美的场景,但它是我可以压缩成 1 个变量而损失很小的最大信息。