特征生成(特征创建)

简介: 特征生成(特征创建)

前言


数据决定了模型效果的上限,使用复杂模型只能逼近上限!


一、特征生成的作用


1、增加特征表达能力,提升模型效果。

2、可以融入业务上的理解设计特征,增加模型的可解释性。


二、特征生成的方法


2-1、转换方式


转换方式

1、数值类型:加减乘除等运算、排序编码、多个列统计。

2、字符串类型


  • 截取:当字符类型的值过多时,通常可以对字符类型变量做截取,以减少模型的过拟合。
  • 统计频次:统计字符出现的频次。
  • 统计字符长度:统计字符串出现的长度。


3、日期类型:日期间隔、月份、周几、小时数。

分组聚合方式:计数、求最大值、最小值、平均值、求和、方差、均差、绝对值自定义函数。

# 
import numpy as np
df['c'] = np.sum(df[['a', 'b']], axis=1)
# 其他聚合函数
# np.var()
# np.max()
# np.min()
# np.abs()

使用决策树创造新特征


三、自动化特征生成工具FeatureTools


介绍:Featuretools是执行自动化特征工程的框架。它擅长将时间和关系数据集转换为用于机器学习的特征矩阵, 把常见的特征工程方法进行了自动化封装,即所谓的dfs(深度特征合成).


3-1、涉及概念&安装


实体:即一张表或者是一个dataframe,多张表的集合叫做实体集。一个实体可以看作是一个pandas的数据框表示,多个实体的集合称为实体集合。

关系:表之间的关联键的定义。

算子:指的是一些特征工程的函数。

原理:DFS(一种特征工程方法,支持从单个或者多个数据框中构造新特征, 把常见的特征工程方法进行了自动化封装。)通过将特征算子应用于Entityset的实体关系来构建新特征。

安装:

pip install featuretools -i https://mirror.baidu.com/pypi/simple


3-2、官方小栗子

导入数据集

data :相当于有三个数据表,包括客户、会话、事务表。

import featuretools as ft
data = ft.demo.load_mock_customer()
customers_df = data["customers"]
customers_df


输出


cb9e7bd0c6e642c1b9a401eca883970b.png

sessions_df = data["sessions"]
sessions_df.sample(5)


输出

06afb2ffe01144309595662c320ea22b.png

transactions_df = data["transactions"]
transactions_df.sample(5)


输出

b55bfba1687e4ac397ef37fb4a238228.png

# 指定字典,包含数据集中所有数据表的字典,数据表与其索引列和时间索引列一起传入。
dataframes = {
     "customers" : (customers_df, "customer_id"),
     "sessions" : (sessions_df, "session_id", "session_start"),
     "transactions" : (transactions_df, "transaction_id", "transaction_time")
}
# 指定数据表之间的关系
# 当两个数据帧具有一对多关系时,我们将“一个”数据帧称为“父数据帧”。父项和子项之间的关系定义如下:
# (parent_dataframe, parent_column, child_dataframe, child_column)
# 创建数据表之间的关联
relationships = [("sessions", "session_id", "transactions", "session_id"),
                 ("customers", "customer_id", "sessions", "customer_id")]
# 使用深度特征合成构建特征。
# 设置主实体为customers
feature_matrix_customers, features_defs = ft.dfs(
    dataframes=dataframes,
    relationships=relationships,
    target_dataframe_name="customers",
)
feature_matrix_customers

输出:


faa5f8d77ff2434fa0aae6a8d0bfec1d.png


四、自动化特征生成简易算法包ATOM


参考文章:

FeatureTools官方文档.

featuretools完全指南.

featuretools入门尝试.

机器学习实战 | 自动化特征工程工具Featuretools应用.

阿里云开发者社区:featuretools完全指南.


总结


自古表白多白表,常与生人道人生。

相关文章
|
1月前
|
机器学习/深度学习 数据采集 算法
探索LightGBM:类别特征与数据处理
探索LightGBM:类别特征与数据处理
298 5
|
机器学习/深度学习 算法 数据可视化
浅析特征数据离散化的几种方法(上)
什么是离散化? 离散化就是把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:
|
1月前
|
机器学习/深度学习 存储 数据可视化
MambaOut:状态空间模型并不适合图像的分类任务
该论文研究了Mamba架构(含状态空间模型SSM)在视觉任务(图像分类、目标检测、语义分割)中的必要性。实验表明,Mamba在这些任务中效果不如传统卷积和注意力模型。论文提出,SSM更适合长序列和自回归任务,而非视觉任务。MambaOut(不带SSM的门控CNN块)在图像分类上优于视觉Mamba,但在检测和分割任务中略逊一筹,暗示SSM在这类任务中可能仍有价值。研究还探讨了Mamba在处理长序列任务时的效率和局部信息整合能力。尽管整体表现一般,但论文为优化不同视觉任务的模型架构提供了新视角。
35 2
|
10月前
|
机器学习/深度学习 编解码 索引
神经网络风格化过程的特征控制
翻译:《Controlling Perceptual Factors in Neural Style Transfer》
|
机器学习/深度学习 存储 自然语言处理
文档级关系抽取:基于结构先验产生注意力偏差SSAN模型
文档级关系抽取:基于结构先验产生注意力偏差SSAN模型
文档级关系抽取:基于结构先验产生注意力偏差SSAN模型
|
机器学习/深度学习 JavaScript 算法
机器学习 -决策树算法中子数据集的划分
本文介绍机器学习 -决策树算法中,子数据集的划分及其Python实现
80 0
|
机器学习/深度学习 自然语言处理 算法
稀疏特征和密集特征
在机器学习中,特征是指对象、人或现象的可测量和可量化的属性或特征。特征可以大致分为两类:稀疏特征和密集特征。
175 0
|
存储 机器学习/深度学习 数据可视化
特征工程之类别特征
特征工程之类别特征
|
数据采集 机器学习/深度学习 算法
浅析特征数据离散化的几种方法(下)
什么是离散化? 离散化就是把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:
|
机器学习/深度学习 算法
特征工程:什么是「组合特征」?要如何处理「高维组合特征」?
为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。在实际问题中,需要面对多种高维特征,简单地两两组合,依然容易存在参数过多、过拟合等问题。
257 0