特征工程入门与实践笔记
特征工程是什么
将数据转换为能更好的表示潜在问题的特征,从而提高机器学习性能
特征工程内容
转换数据的过程
特征工程适用于任何阶段的数据,通常将数据处理成表格形式,数据组织成行(观察值)列(属性)的形式。
特征
特征是对机器学习的过程有意义的数据属性。
无意义的只是普通属性,而有意义的才称之为特征
更好的表示潜在问题
需要使用的数据代表了某领域内的某问题,转换数据的目的是为了更好的表达更大的问题
提高机器学习性能
特征工程不仅需要获得更干净的数据,而且最重要在机器学习流水线中使用这些数据。
特征工程的目的是让我们获取更好的数据,以便学习算法从中挖掘模式,取得更好的效果
数据和机器学习的基础知识
监督学习(预测分析)
监督学习算法专门处理一个值的任务,通常是用数据中的其他属性来预测余下的一个属性
- 响应(response):希望预测的属性
- 特征(feature):剩余属性
也可以认为监督学习是一种利用数据结构的算法:利用漂亮的数据提取模式。 通过探索结构进行预测
漂亮的数据:使用特征工程处理的数据
无监督学习
从数据中提取结构,一般对数据的数值矩阵或迭代过程应用数学变换,提取新特征
例如聚类:从一堆数据中对一些相似的值,将其划分成为某一类,成为一个新的特征
机器学习算法和特征工程的评估
- 特征和属性是有明显的区分的
- 特征:对机器学习有益的类
- 属性:表格数据的列(可能存在某些属性对机器学习系统不一定有益,甚至有害)
特征工程的评估步骤
- 在应用任何特征工程前,得到机器学习模型的基准性能
- 应用一种或多种特征工程
- 对于每种特征工程,获取一个性能指标,并与基准性能进行对比
- 如果性能的增量大于某个阈值(自己定义),则认为该特征工程有益,并在机器学习上应用
- 性能的改变一般按照百分比计算(基准性能从40%上升到76%的准确率,那么改变就是90%)
评估监督学习算法
将监督学习分为两种更具体的类型:分类和回归
分类(预测定性响应)
使用5折交叉验证计算逻辑回归模型的准确率
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
X = some_data_in_tabular_format
y = response_variable
lr = LinearRegression()
scores = cross_val_score(lr, X, y, cv=5, scoring='accuracy')
scores
回归(预测定量 响应)
使用均方误差(MSE)进行评估,使用五折交叉验证
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
X = some_data_in_tabular_format
y = response_variable
lr = LinearRegression()
scores = cross_val_score(lr, X, y, cv=5, scoring='mean_squared_error')
scores
- 使用这两个线性模型的原因是因为可以更加确定,性能的增长直接和特征工程相关
评估无监督学习算法
因为无监督学习不做出预测,所以无法直接更具模型预测的准确率进行评估。
- 聚类:将数据按特征行为进行分类
- 主要使用轮廓系数作为测量指标
attributes = tabular_data
cluster_labels = outputted_labels_from_clustering
from sklearn.metrisc import silhouette_score
silhouette_score(attributes, cluster_labels)
统计检验
相关系数、t检验、卡方检验、以及其他方法评估并量化原始数据和转换后数据的的效果
特征理解
- 结构化与非结构化数据
- 数据的四个等级
- 识别数据的缺失值
- 探索性数据分析
- 描述性统计
- 数据可视化
特征增强:清洗数据
利用对数据的理解修改数据集,使用数据变换增强给定数据,但是并不删除或插入新数据
- 对非结构化数据进行结构化
判断数九是否具有机构,数据表格化工具 - 数据填充-缺失数据填充
- 删除缺失值
- 在其他特征上进行机器学习,填充缺失值
- 填充大量数据之后可以测量缺失值对机器学习算法的影响
- 数据归一化:
- 标准化(z分数标准化)
- 极差法(min-max标准化)
- L1和L2正则化(将数据投影到不同的空间)
特征选择
属性在何种程度上才能成为真正的特征
哪些列对机器学习没有帮助且有害,如何决定删除数据集中的哪些数据
- 相关系数
- 识别并移除多重共线性
- 卡方检验
- 方差分析
- 理解p值
- 迭代特征选择
- 用机器学习测量熵和信息增益
特征构建
构建全新的特征,并正确插入数据集
目的:生成新的模式
构建特征来源:
- 现有特征构建新特征,对现有特征进行转换,将结果向量和原向量放置在一起
- 从其他系统中引入特征
例如基于购物行为对顾客群进行聚类,加入人口普查数据
- 该方法有可能增加这个步骤的维度,但是也经常会创造出一个非常密集、数据丰富的环境
如何通过高度非结构化的数据手动创建特征(文本-图像)
特征转换
自动创建特征,如果数据理解为一个n维空间的向量,考虑创建一个k维(k<n)的子集,完全或几乎完全表示愿数据,从而提升机器学习速度或者性能
其实就是降维算法:PCA主成分分析法或者LDA
特征学习:以AI促AI
用算法自动构建特征,以改善机器学习和AI流水线
尝试对数据进行理解和建模的一种架构,从而发觉数据的模式并创建新数据
- 神经网络算法
- RBM 受限玻耳兹曼机
- Word2Vec算法
小节
- 特征理解:学习如何事变定量数据和定性数据
- 特征增强:清洗和填充缺失值,最大化数据集的价值
- 特征选择:通过统计方法选择一部分特征,以减少噪声
- 特征构建:构建新的特征,探索特征间的联系
- 特征转换:提取数据中的盈仓结构,用数据方法转换数据集、增强效果
- 特征学习:利用深度学习,以全新的视角看待数据,从而揭示新的问题,并解决