Max*_*Max 5 machine-learning random-forest feature-engineering
如何为随机森林算法准备循环序数特征,例如一天中的时间或一周中的一天?
仅用午夜后的分钟来编码时间,23:55 和 00:05 之间的信息差异将非常大,尽管只有 10 分钟的差异。
我在这里找到了一个解决方案,其中使用午夜后秒数特征的余弦和正弦将时间特征分为两个特征。但这适合随机森林吗?使用随机森林时,无法确定每次分割都会出现所有特征。通常,决策时有一半的时间会缺少信息。
期待您的想法!
如果您有一个日期变量,其值如“2019/11/09”,您可以提取单个特征,如年 (2019)、月 (11)、日 (09)、星期几 (星期一)、季度 (4) ),学期(2)。如果您知道特定事件的日期,您可以继续添加其他功能,例如“是银行假日”、“是周末”或“广告活动”。
如果您有一个时间变量,其值例如 23:55,您可以提取小时 (23)、分钟 (55),如果您有,则可以提取秒、纳秒等。如果您有有关时区的信息,您也可以获取此信息。
如果您的日期时间变量的值类似于“2019/11/09 23:55”,则可以将上述内容结合起来。
如果您有超过 1 个日期时间变量,您可以捕获它们之间的差异,例如,如果您有出生日期和申请日期,您可以确定特征“申请时的年龄”。
有关日期时间选项的更多信息可以在 pandas dt 模块中找到。检查方法在这里。
链接中的循环转换用于重新编码循环变量,例如一天中的小时或一年中的月份,例如 12 月(12 月)比 7 月(7 月)更接近 1 月(1 月),而如果您用数字进行编码,则不会捕获这种关系。如果这就是您想要表示的内容,您将使用此转换。但这不是转换这个变量的标准方法(据我所知)。
你可以查看Scikit-learn关于时间相关特征工程的教程。
随机森林捕获特征和目标之间的非线性关系,因此它们应该能够处理月份等数值特征或周期性变化。
可以肯定的是,最好的方法是尝试两种工程方法,看看哪个特征可以带来更好的模型性能。
您可以使用开源包Feature-engine 直接应用循环变换。检查CyclicalTransformer。
| 归档时间: |
|
| 查看次数: |
1102 次 |
| 最近记录: |