特征生成(特征创建)

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

前言


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


一、特征生成的作用


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完全指南.


总结


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

相关文章
|
机器学习/深度学习 算法 数据可视化
无监督学习的集成方法:相似性矩阵的聚类
在机器学习中,术语Ensemble指的是并行组合多个模型,这个想法是利用群体的智慧,在给出的最终答案上形成更好的共识。
217 0
|
机器学习/深度学习 算法 数据可视化
浅析特征数据离散化的几种方法(上)
什么是离散化? 离散化就是把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:
|
3月前
|
自然语言处理 数据挖掘
数据特征包括分布特征、统计特征、对比特征、帕累托特征和文本特征
数据特征包括分布特征、统计特征、对比特征、帕累托特征和文本特征
139 4
|
3月前
|
机器学习/深度学习 数据挖掘
数据特征
数据特征
118 1
|
机器学习/深度学习 编解码 索引
神经网络风格化过程的特征控制
翻译:《Controlling Perceptual Factors in Neural Style Transfer》
|
存储 机器学习/深度学习 编解码
使用训练分类网络预处理多分辨率图像
说明如何准备用于读取和预处理可能不适合内存的多分辨率全玻片图像 (WSI) 的数据存储。肿瘤分类的深度学习方法依赖于数字病理学,其中整个组织切片被成像和数字化。生成的 WSI 具有高分辨率,大约为 200,000 x 100,000 像素。WSI 通常以多分辨率格式存储,以促进图像的高效显示、导航和处理。 读取和处理WSI数据。这些对象有助于使用多个分辨率级别,并且不需要将图像加载到核心内存中。此示例演示如何使用较低分辨率的图像数据从较精细的级别有效地准备数据。可以使用处理后的数据来训练分类深度学习网络。
352 0
|
机器学习/深度学习 存储 自然语言处理
文档级关系抽取:基于结构先验产生注意力偏差SSAN模型
文档级关系抽取:基于结构先验产生注意力偏差SSAN模型
文档级关系抽取:基于结构先验产生注意力偏差SSAN模型
|
机器学习/深度学习 自然语言处理 算法
稀疏特征和密集特征
在机器学习中,特征是指对象、人或现象的可测量和可量化的属性或特征。特征可以大致分为两类:稀疏特征和密集特征。
231 0
|
机器学习/深度学习 算法 数据可视化
特征工程系列之非线性特征提取和模型堆叠
特征工程系列之非线性特征提取和模型堆叠
特征工程系列之非线性特征提取和模型堆叠
|
数据采集 机器学习/深度学习 算法
浅析特征数据离散化的几种方法(下)
什么是离散化? 离散化就是把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如: