数据科学中特征工程如何自动化? - Reddit


我目前是一名数据科学家,我发现我的大部分时间都花在了特征工程上。

我的一般做法是,我创建数据的聚合(通过sql,因为需要处理的数据量很大),如sum,mean,avg,std,median,q25,q75。我需要在几十个特征上做这个工作。另外,我在不同的时间窗口上计算这些聚合:前一周,前一个月,前三个月。

最后我得到了数百个特征,我需要选择那些有意义的,包含相关信息的特征。目前,我在这个巨大的数据集上应用pandas profiling或sweetviz,并试图通过目测结果来分析它。

我的主要挑战是,这个过程是高度重复和手动的。我想知道是否有任何工具可以帮助我实现这一过程的自动化,并使某些部分可以重复使用?我喜欢有一个用户界面,特别是用于可视化的数据。
我是不是做错了什么,或者有什么工具是我明显没有注意到的?

回答:
这取决于你的目标是什么,但大多数时候,我认为ML'ers不需要太多的特征工程。

如果你只是想建立一个最好的、最具预测性的模型,那么密集的特征工程和选择过程已经有点过时了。15-20年前,盲目地把所有的特征扔给一个模型的想法经常被嘲笑--在我2000年中期的第一份工作中,我们会花75%的时间来建立、测试和删除特征;今天,我可能会花10-20%的时间在这上面。现在的趋势是走向更强大的非线性算法,更好的正则化,以及大量的计算+存储。一个GBM或DNN可以接受原始输入,结合它们,找到有用的模式,并忽略其他的。

如果你想从你的模型中学习,你不想自动化特征;你想给模型提供你知道对你很重要的输入。

如果你需要一个在推理/评分方面快速而简单的模型(例如,每秒数百万次的预测),那么特征自动化就真的很有价值。我的方法通常是自动建立一堆特征(所有的连续特征、离散特征的单次编码、交叉特征的比率和乘积等),用所有的特征建立一个具有积极的L1正则化的线性模型,然后用前N%的特征反复重建模型,直到性能降到阈值以下。我不知道有什么工具可以帮你做这个,但我用不到50行的Python在几个小时内就完成了。