机器学习实战|第6周|第4章:特征工程|18:00~20:30

目录

机器学习实战 第4章 特征工程

1 开发特征时如何做数据探索?怎样选择有用的信息?

1.1 特征理解

(1)区分结构化数据与非结构化数据

(2)区分定量数据和定性数据

2 如何发现数据中的异常值

(1)可视化数据

(2)统计指标和描述统计分析

(3)异常检测算法

(4)领域知识和业务规则

(5)数据审查和比对

(6)数据聚合和分组分析

3 缺失值如何处理?

(1)删除缺失值

(2)插补缺失值

(3)特殊编码

(4)多重插补方法

4 对于数值类型数据,怎样处理?

为什么要做归一化?

归一化有哪些方法?

(1)最小-最大归一化(Min-Max Scaling)

(2)Z-score标准化(Standardization)

离散化有哪些方法?

(1)等宽离散化

(2)等频离散化

离散化和归一化有些有哪些优缺点?

离散化的优点

离散化的缺点

归一化的优点

归一化的缺点

5 类别型数据,比如游戏品类、地域、设备,是如何处理的?

(1)独热编码

(2)标签编码

(3)有序编码

6 序号编码、独热编码、二进制编码都是什么?

(1)序号编码

(2)独热编码

(3)二进制编码

适合怎样的类别型数据?

7 时间类型数据的处理方法是什么?

8 文本数据如何处理?

(1)词袋法

(2)Count Vectorizer

(3)TF-IDF

9 计算特征之间的相关性方法有哪些?有什么优缺点?

Pearson相关系数

Spearman等级相关系数

判定系数

互信息

卡方检验


机器学习实战 第4章 特征工程

机器学习问题,始于构建特征

特征质量的好坏,直接影响到最终的模型结果。

构建特征是一个很大的工程,包括特征理解、特征增强、特征构建,特征选择,特征学习这6部分。


1 开发特征时如何做数据探索?怎样选择有用的信息?

在开发特征时,数据探索是一个重要的步骤,它帮助我们理解数据的特点、关系和潜在的模式。以下是一些常用的方法和指导原则,可用于数据探索和选择有用的信息:

数据可视化: 使用图表、图像和可视化工具来分析数据。绘制直方图、散点图、箱线图、热力图等,以揭示数据的分布、趋势、异常值和相关性。可视化能够直观地展示数据,帮助找到重要的信息。

描述统计分析: 利用统计指标(如均值、标准差、百分位数等)来描述数据的集中趋势、离散程度和分布形态。这些指标提供了对数据的基本了解,可以帮助发现数据中的特殊模式或异常情况。

相关性分析: 探索不同特征之间的相关性。计算相关系数(如Pearson相关系数、Spearman等)来衡量特征之间的线性或非线性关系。此外,绘制相关矩阵或热图也可以提供对特征之间相互关系的洞察。

特征重要性评估: 使用机器学习算法中的特征重要性评估方法(如基于决策树的方法、LASSO回归等)来确定每个特征对目标变量的影响程度。这有助于筛选出对目标变量预测最有用的特征。
领域知识和专家经验: 利用领域知识和专家经验来指导特征选择。了解关于数据的背景信息、领域规则和专家建议是发掘有意义特征的重要来源。

在数据探索过程中,我们希望发现那些与任务目标紧密相关、具有较强预测能力、信息丰富度高的特征。这些特征可能具有以下特点:与目标变量的关联性强,具有较大的差异和变化范围,包含有用的结构信息,与领域知识一致等。同时,还需注意探索过程中的陷阱,如过拟合、多重共线性等问题。

数据探索是一个迭代的过程,需要不断地尝试和评估不同的特征选择策略,结合领域知识和实际需求进行调整。

1.1 特征理解

(1)区分结构化数据与非结构化数据

结构化数据:以表格形式进行存储的数据;

非结构化数据:文本、报文、日志等。

(2)区分定量数据和定性数据

定量数据:指的是一些数值,用于衡量某件东西的数量;

定性数据:指的是一些类别,用于描述某件东西的性质;

定类:分类,分类之间没有大小可比性;

定序:相比于定类,多了一个“可排序”的属性;

定距:就是变量之间可以做加法、减法计算,可以引入均值、方差之类的名词,可以画出直方图📊

定比:相比于定距更加严格,不仅有定距的所有属性,有一个“绝对零点”的概念,可以做加、减、乘、除运算。


2 如何发现数据中的异常值

发现数据中的异常值是数据分析和清理过程中的重要步骤之一。下面是一些常见的方法和技巧,可以帮助您发现数据中的异常值:

(1)可视化数据

使用图表和可视化工具来显示数据的分布情况。直方图、箱线图、散点图等可以帮助您观察数据是否有不符合预期的极端值或离群点。异常值通常与其他样本有明显的差异。

(2)统计指标和描述统计分析

计算数据的统计指标,如均值、标准差、中位数等。根据这些指标,可以检测是否存在超出正常范围的异常值。比如,使用离群值检测方法,如基于均值和标准差的Z-score或基于箱线图的IQR方法进行异常值判断。

(3)异常检测算法

使用异常检测算法来自动发现异常值。常见的方法包括基于统计模型的方法(如正态分布、孤立森林等),基于距离的方法(如K近邻、LOF等),以及基于聚类的方法(如DBSCAN等)。这些方法能够识别数据中的异常模式或离群点。

(4)领域知识和业务规则

借助领域知识和专家经验,了解数据中可能存在的异常情况。根据领域规则或业务逻辑,可以定义和判断异常值的界限。

(5)数据审查和比对

对数据进行仔细审查和比对。比较不同数据源的数据是否一致,检查是否存在录入错误或测量错误导致的异常值。

(6)数据聚合和分组分析

对数据进行聚合和分组分析,可以发现特定组别或子集中的异常行为。比如,对时间序列数据进行季节性分析,或者按照特定属性进行分组,观察每个组别中的异常情况。

请注意,异常值并非总是错误或无效的数据,有时它们可能包含有用的信息。在处理异常值时,需要结合具体领域知识和数据分析任务来决定是保留、修改还是剔除这些异常值。同时,要注意异常值的影响,可能会对统计分析、机器学习模型等产生偏差。因此,在处理异常值时需要谨慎而全面地进行数据处理和分析。


3 缺失值如何处理?

处理缺失值是数据处理和分析中的重要任务。在处理缺失值时,可以考虑以下几种常见的方法:

(1)删除缺失值

当数据样本中存在缺失值时,最简单的方法是删除包含缺失值的样本。这适用于缺失值较少或者样本量较大的情况。但是,这种方法可能会导致样本量减少和信息损失,因此需要谨慎使用。

(2)插补缺失值

另一种常见的方法是使用插补技术来填充缺失值。插补的目标是根据已有的数据和特征之间的关系来预测缺失值。常用的插补方法有:

均值、中位数或众数插补:对于数值型数据,可以使用整体均值、中位数或众数来填充缺失值。

回归插补:利用其他变量的信息建立回归模型,根据已有的特征值预测缺失值。

插值法:使用插值技术(如线性插值、样条插值等)在已有的数据点之间进行插值,填充缺失值。

热平台插补:对于时序数据,可以使用热平台分析技术,根据时间趋势和相邻值的变化来填充缺失值。

最常见的插值技术是均值插补,用整个特征列的平均值替换缺失数据;或者用最频繁的值来替代缺失数据。

(3)特殊编码

对于某些模型,可以将缺失值视为一个特殊的类别,并单独进行编码处理。这样可以保留缺失值作为一个特征,并为其赋予一个特定的值或标记。

(4)多重插补方法

多重插补是一种利用模型估计缺失值的方法。它通过多次迭代来生成多个完整的数据集,在每次迭代中利用模型预测缺失值。然后,根据多个完整数据集的结果进行分析,以考虑缺失值的不确定性。

在处理缺失值时,需要根据数据的特点、缺失值的原因和领域知识来选择合适的方法。同时,要注意处理后的数据是否保持原有的分布特性和信息准确性,并且要对填充缺失值的方法和过程进行透明记录和说明。


4 对于数值类型数据,怎样处理?

对于数值型数据,处理的目标通常是使得数据在一个统一的尺度范围内,以便更好地进行数据分析和建模。常见的处理方法包括归一化和标准化。

为什么要做归一化?

归一化的目的是将数值特征缩放到一个统一的范围,通常是[0, 1]或[-1, 1]之间。归一化的主要原因是消除由于不同尺度带来的误差,以及使得不同特征对模型的影响权重更加均衡。归一化也有助于加速模型的收敛和优化过程。

归一化有哪些方法?

(1)最小-最大归一化(Min-Max Scaling)

将数据线性缩放到指定的范围。公式为:x_scaled = (x - min) / (max - min),其中x_scaled为归一化后的值,x为原始值,min和max分别为特征的最小值和最大值。

(2)Z-score标准化(Standardization)

通过计算特征的均值和标准差,将数据转换为均值为0、方差为1的标准正态分布。公式为:x_scaled = (x - mean) / std,其中x_scaled为标准化后的值,x为原始值,mean和std分别为特征的平均值和标准差。

离散化有哪些方法?

离散化是将连续型数值变量转换为离散型变量的过程。它将连续的取值范围划分为若干个区间或者分类,并用对应的符号或者数值表示。离散化能够处理一些对连续型变量不敏感的算法,且能够减小异常值或者极端数据对模型的影响。

常用的离散化方法包括:

(1)等宽离散化

将数据的取值范围划分为相同宽度的区间。例如,将特征的取值范围等分为几个区间,每个区间的宽度相同。

(2)等频离散化

将数据的取值分布划分为相同数量的区间。例如,将特征的取值按频率等分为几个区间,每个区间包含相同数量的样本。

离散化和归一化有些有哪些优缺点?

离散化的优点

可以处理一些对连续型变量不敏感的算法,减小极端值对模型的影响,能够提取特征间的非线性关系。

离散化的缺点

可能会损失一些信息,将连续性的数据转换为分段的表示,增加了特征的维度,并且可能导致边界效应。

归一化的优点

消除了不同特征尺度带来的误差,使得不同特征权重更加均衡,加速了模型的收敛和优化过程。

归一化的缺点

可能会放大异常值的影响,使得原始数据的分布信息丢失。


5 类别型数据,比如游戏品类、地域、设备,是如何处理的?

完成了分类变量的填充工作,接下来就需要对分类变量进行编码了(因为大多数的机器学习算法都是无法直接对类别变量进行计算的),一般有独热编码、标签编码和分箱处理。

处理类别型数据在数据分析和机器学习中是一项重要任务。以下是几种常见的处理方法:

(1)独热编码

独热编码(One-Hot Encoding):独热编码是将每个类别值转换为一个二进制向量的方法。对于一个有N个不同取值的类别特征,独热编码将其转换为一个长度为N的二进制向量,只有对应类别的位置是1,其他位置是0。例如,对于地域特征,可以将"中国"编码为[1, 0, 0],"美国"编码为[0, 1, 0],以此类推。

独热编码主要是针对定类变量的,也就是不同变量值之间是没有顺序大小关系的,一般可以使用 Scikit-learn里面的OneHotEncoding来实现,但这里还是使用自定义的方法来加深理解。

(2)标签编码

标签编码(Label Encoding):标签编码是将每个类别值映射为一个整数的方法。这种方法适用于类别之间存在一种有序关系或者大小关系,可以使用整数来表示类别的相对大小。例如,对于游戏品类特征,可以将"射击游戏"编码为0,"角色扮演游戏"编码为1,以此类推。

标签编码是针对定序变量的,也就是有顺序大小的类别变量,就好像案例中的变量ordinal_column的值(dislike、somewhat like 和like 可以分别用0、1和2来表示),同样地可以写一个自定义的标签编码器。

(3)有序编码

有序编码(Ordinal Encoding):有序编码是一种介于独热编码和标签编码之间的方法。它为每个类别分配一个有序的数值,但不保持类别之间的等距。这可以通过手动指定类别的顺序或者根据某种统计指标来确定。例如,可以根据设备的性能将"高性能设备"编码为2,"中性能设备"编码为1,"低性能设备"编码为0。

选择哪种方法取决于类别特征的性质和机器学习算法的要求。在使用独热编码时,需要注意当类别数目较多时,会导致特征空间的维度增加,可能会给计算和存储带来负担。标签编码和有序编码可以减少维度,但需要对类别进行有序性或大小关系的假设。

还有一种是分箱处理,将数值变量分箱操作。


6 序号编码、独热编码、二进制编码都是什么?

(1)序号编码

序号编码(Ordinal Encoding):将类别型数据映射为整数序列的编码方式。每个不同的类别被赋予一个唯一的整数值,可以按照类别的顺序进行编码。

(2)独热编码

独热编码(One-Hot Encoding):将每个类别转换为一个二进制向量的编码方式。对于具有N个不同类别的特征,独热编码将生成一个大小为N的二进制向量,其中只有一个元素为1,其余元素为0。主要针对定类变量的,也就是不同变量值之间是没有顺序大小关系的,一般可以使用Scikit-learn里面的OneHotEncoding来实现,但这里还是使用自定义的方法来加深理解。

(3)二进制编码

二进制编码(Binary Encoding):将类别型数据转换为二进制表示的编码方式。二进制编码通过将每个类别映射为一系列二进制位来表示,可以在较少的维度下有效地编码大量的类别。对于具有大量类别的特征,二进制编码可以提供更紧凑的表示,并且在某些情况下可以捕捉到类别之间的某种关系。

适合怎样的类别型数据?

序号编码适合有序的类别型数据,适用于类别之间有一定顺序关系的数据,例如低、中、高等有序的类别。但需要注意的是,模型在直接使用序号编码时可能会错误地将编码值的大小与类别之间的关系相关联。

独热编码适用于无序且互斥的类别型数据,没有明显的顺序关系、并且类别之间互斥的数据。例如,在性别特征中,可以使用独热编码将"男"和"女"分别编码为[1, 0]和[0, 1]。

二进制编码适用于大量类别的数据,且类别之间无明显顺序关系,类别较多且类别之间无明显顺序关系的数据。


7 时间类型数据的处理方法是什么?

数据格式转换:将时间数据从原始数据中提取,并转换为适合分析的时间格式,如日期、时间戳等。这可以使用编程语言或库中的日期时间函数来完成。

时间分解:根据时间数据的层次结构,将时间数据分解为更细粒度的时间组成部分,如年、月、日、小时、分钟等。这样可以更好地理解和分析数据的时间特征。

时间对齐与排序:对于多个时间序列数据,可以将它们对齐到相同的时间点,以便进行比较和分析。这可以通过插值或截取方法实现。此外,对时间数据进行排序也非常重要,确保时间的顺序正确。

时间周期性处理:对于具有周期性的时间数据,例如季节性或周期性模式,可以进行周期性分析和调整。这可以帮助识别和建模周期性行为,以及对趋势和季节性效应进行校正。

特征提取与转换:根据特定的分析目标,可以从时间数据中提取各种特征,如时间间隔、时间延迟、时间差分等。这些特征可以用于构建模型或进行预测。

时间序列分析:对于时间序列数据,可以应用一系列的统计方法和机器学习技术,如平滑方法、自回归模型、移动平均模型、ARIMA模型、Prophet模型等。这些方法可用于描述、预测和分析时间序列数据。


8 文本数据如何处理?

文本处理一般在NLP自然语言处理领域应用最为广泛,一般都是需要把文本进行向量化,最为常见的方法有词袋法(Bag of Words)、CountVectorizer、TF-IDF。

(1)词袋法

词袋法分成3个步骤,分别是分词(Tokenizing)、计数(Counting)、归一化(Normalizing).

(2)Count Vectorizer

将文本转换为矩阵,每列代表一个词语,每行代表一个文档,所以一般出来的矩阵会是非常稀疏的,在sklearn.feature_extraction. text 中调用 CountVectorizer即可使用。

(3)TF-IDF

TF-IDF向量化器由两个部分组成,分别为代表词频的TF,以及代表逆文档频率的IDF,这个TF-IDF 是一个用于信息检素和聚类的词加权方法,在sklearn.feature_extraction.text 中调用TfidfVectorizer即可。

TF: Term Frequency,词频,也就是单词在文档中出现的频率。

IDF: Inverse Document Frequency,逆文档频率,用于衡量单词的重要度,如果单词在多份文档中出现,就会被降低权重。


9 计算特征之间的相关性方法有哪些?有什么优缺点?

计算特征之间的相关性是数据分析和机器学习中常用的任务之一。

Pearson相关系数

Pearson相关系数是用于测量连续变量之间线性相关性的常见方法。它的取值范围在-1到1之间,其中-1表示完全的负相关,1表示完全的正相关,0表示无相关。优点是计算简单且容易解释,缺点是对非线性关系不敏感。

Spearman等级相关系数

Spearman等级相关系数是用于测量变量之间的单调关系,对于非线性关系比较适用。它通过将原始数据转换为等级或顺序来计算相关性。优点是对于非线性关系比较敏感,缺点是在存在异常值时可能会产生不准确的结果。

判定系数

判定系数(Coefficient of Determination)用于度量因变量和自变量之间的相关性。它的值介于0和1之间,表示因变量中可以被自变量解释的比例。优点是可以表征因变量的变异程度,缺点是对于非线性关系不适用。

互信息

互信息(Mutual Information)是一种度量两个变量之间的相互依赖性和信息共享程度的方法。它适用于连续和离散变量,并且不仅限于线性关系。优点是对于非线性关系有一定的鲁棒性,缺点是在样本较少时可能会受到过拟合的影响。

卡方检验

卡方检验(Chi-square test)适用于衡量两个离散变量之间的相关性。它基于观察频数与期望频数之间的差异来判断变量之间是否存在相关性。优点是适用于离散变量,缺点是对于连续变量不适用。

这些方法的选择取决于数据类型、相关性的性质以及具体的分析目标。在应用时,需要综合考虑数据特点、方法的限制以及分析的目的,选择适合的方法来计算特征之间的相关性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值