数值类型&类别型&特征归一化&评估指标&PR曲线&ROC&AUC&K折交叉验证&特征工程&留出法&自助法
数值类型&类别型&特征归一化&评估指标&PR曲线&ROC&AUC&K折交叉验证&特征工程&留出法&自助法
文章目录
NO.1 数值类型
1.结构化数据。结构化数据类型实际上可以看做是关系型数据库的一张表,每一列都有清晰的定义,包含了数值型、类别性两种基本类型;每一行数据都表示一个样本的信息。
2.非结构化数据。非结构化数据主要包括文本、图像、音频、视频数据,其中包含的信息无法用一个简单的数值表示,也没有清晰的定义,并且每条数据的大小各不相同。
NO.2 特征归一化
1.对数值类型的特征做特征归一化可以将所有的特征都统一到一个大致相同的数值区间内。通常是为了消除数据特征之间的量纲影响,使得不同特征之间具有可比性。
(1)线性函数归一化,对原始数据进行线性变换,是结果映射到【0,1】的范围内,实现原始数据的等比例缩放。公式如下:
(2)零一均值归一化,将原始数据映射到均值为0,标准差为1的分布上。
说明:在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但对与决策树模型不适用。(以C4.5为例,因为信息增益比跟特征是否归一化无关)
NO.3 类别型特征
1.类别型特征只要是指性别,血型等只在有限选项内取值的特征。类别性特征原始输入通常是字符串形式,除了决策树等少数模型可以直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别行特征必须经过处理转换为数值型特征才可以正确工作。
(1)序号编码,常用于处理类别之间具有大小关系的数据。例如成绩,可分为L,M,H三档(L<M<H),则可以对应编号为:1,2,3
(2)独热编码,常用于处理类别之间不具有大小关系的特征。例如血型取值为(A型,B型,AB型,O型),则独热码表示依次为:A型(1,0,0,0),B型(0,1,0,0),AB型(0,0,1,0),O型(0,0,0,1)。
(3)二进制编码,此法先用序号为每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。下表所示:
NO.4 工作流程简述
1.问题建模,首先收集问题的资料,深入理解问题,然后将问题抽象为机器可预测的问题。此过程中要明确业务指标和和模型的预测目标,根据目标选择合适的评估指标用于模型评估,接着从原始数据中选择最相关的样本子集用于模型训练,并对样本子集划分训练集和测试集,应用交叉验证的方法对模型进行选择和评估。按如下定义,此步骤包含对数据的筛选,清洗操作。
2.特征工程,就是对数据抽取特征,不仅需要对模型和算法有深入的理解,还需要有扎实的专业领域知识。
3.模型选择,进行特征工程是为了将特征输入给模型,然模型从数据中学习规律。但是模型众多,使用场景不同,能后处理的特征也有很大差异。
4.模型融合,采用模型融合的方法,充分用不同模型的差异,进一步优化目标。
NO.5 评估指标
一,分类指标
1.精确率和召回率 (或者说:查准率与查全率),精确率和召回率多用于二分类问题,结合混淆矩阵生成。如下表:
理想情况下,精确率和召回率两者都越高越好,但事实上,两者在某些情况下是矛盾的。(精确率高,召回率低;而精确率低时,召回率高),例如在搜索网页时,如果只返回最相关的那一个网页,则精确率为100%,而召回率就很低;如果返回全部的网页,那召回率为100%,而精确率就很低。
1.1 P-R曲线
$$
用精确率P作为纵轴,用召回率R作为横轴,可以画出P-R曲线.曲线越靠近右上角性能越好,曲线下面的面积叫做AP分数,
$$
能在一定程度上反应精确率和召回率都高的比例.但此值不容易计算:
通常由各种指标来考量:
以及常用的准确率和错误率:
1.2 ROC和AUC
ROC曲线是以“真正例率”和“假正例率”分别作为纵轴和横轴,图像如下:
AUC即ROC曲线下面的面积,取值越大说明模型越可能将正样本排在负样本前面。AUC有一些性质:AUC等于随机挑选一个正样本(P)和负样本(N)时,分类器将正样本排在负样本前面的概率;AUC和基尼(Gini)系数有联系,满足:Gini+1 = AUC*2。
AUC的计算方法:
(1)从物理意义角度,AUC是ROC曲线下的面积:
(2)从概率意义角度理解,AUC考虑的是样本的排序质量,它与排序误差有密切关系,计算公式:
NO.6 样本选择
样本选择的好处:
- 当数据量过大时,程序有时候会耗费大量的计算时间,甚至不能成功运行。减少数据量能有效缩减模型的运行时间,使得某些因为数据量过大无法应用机器学习模型的问题变得可能。
- 全部的数据集包含丰富的信息,但是一个具体的问题,通常只需要选取一部分问题相关的信息,相关性太低的数据对解决特定的问题可能没有帮助。
- 数据中噪声数据几乎不可能避免,这些噪声可能是系统原因导致数据有错误,重复等。通过去除噪声,可以提高模型训练集的数据质量,改善模型的效果。
噪声数据可能是特征值不对,比如特征值缺失、超出特征值范围等;也可能是标注不对,比如二分类正样本标注成负样本。但实际上,噪声特征也带有一定的信息能够用于构建模型,比如特征缺失时,可以认为没有特征也是一个特征,也可以描述一定的信息。
针对误标注实例,常见的有继承过滤法(EF)、交叉验证委员会过滤法(CVCF)、迭代分割过滤法(IPF),这些方法都是基于融合或者投票的思想进行数据过滤的。
NO.7 交叉验证
训练集上的误差称为训练误差或者经验误差,测试集上的误差称为测试误差。将划分训练集和测试集的方法统称为交叉验证。
1.1 留出法
通常的做法是:2/3作为训练集,1/3作为测试集,而且会多次进行。
1.2 K折交叉验证
K折交叉验证是将数据集D划分成K分互斥的数据集,满足各子数据集的并集为全集。一般是平均分配且使得数据分布尽可能一致。每次使用一份数据测试,其余的K-1份数据作为训练,需要迭代K轮,得到K个模型;
1.3 自助法
自助法(Bootstrapping)以自主采样(Bootstrap Sampling)为基础,使用有放回的重复采样方式进行训练集,测试集构建。比如说:为了构建n条样本的训练集,每次从D中采样一条放入训练集,然后又放回重新采样,重复n次得到n条样本的训练集,然后将没有出现过的样本作为测试集、这里很显然有一部分样本重复出现,有一部分样本从未出现。每条样本没有被采集到的概率为1-1/n,n次操作:取极限可得:
这就说明,当数据量很大的时候,约有36.8%的样本不会出现在训练集中。留出法和K折交叉验证在训练模型的时候用的数据都是整个数据集的一个子集,得到的模型会因为训练集大小不一致产生一定的偏差。而自助法能够很好的解决这个问题,但是自助法又改变了初始数据集的分布,会引入估计偏差,所i在数据量足够时,一般使用留出法和交叉验证法,而在数据量很小的时候(难以有效区分训练集和测试继)时,自助法很有效。
NO.8 特征工程
基于大量数据的简单模型胜于基于少量数据的复杂模型。更多的数据胜于聪明的算法,而好的数据胜于多的数据。
吴恩达曾说过:“特征工程不仅操作困难、耗时、而且需要专业领域知识。应用机器学习基本上就是特征工程。”
1.1 特征提取
特征抽取就是对原始数据进行变换的过程。大多数模型和算法都要求输入是维度相同的实向量,因此特征工程首次需要将原始数据转换为实向量。“如果特征工程足够复杂,即便是最简单的模型,也能表现出非常好的效果,然而复杂的模型一定程度上减少了特征工程要做的工作。”对于线性模型,需要将类别变量进行独热码等处理,但对于一些复杂的模型比如树模型,可以直接处理类别型变量。对于高级的神经网络模型,模型可以自动进行特征表示。
1.1.1 探索性数据分析
探索性数据分析(Exploratory Data Analysis, EDA)是采用各种技术(大部分为可视化技术)在尽量少的先验假设条件下,探索数据内部结构和规律的一种数据分析方法。EDA的目的是:尽可能的洞察数据集、发现数据的内部结构、提取重要的特征、检测异常值、检验基本假设、建立初步的模型。
EDA技术通常可以分为两类:(1)可视化技术,如箱型图、直方图、多变量图、链图、帕累托图、散点图、茎叶图、平行坐标、让步化、多维度尺度分析、目标投影追踪、主成分分析、多线性主成分分析、降维、非线性降维等。
(2)定量技术:如样本均值、方差、分位数、峰度、偏度等。
1.1.2 数值特征
数值类型的数据具有实际测量意义,例如人的身高、体重等,或者是计数,例如一个网站被点击了多少次。**数值类型的数据可以分为离散型和连续型。**离散型数据表示的量是可数的,其可以是有限个值,也可以是无限个值。(例如,100次硬币投掷,正面朝上的次数取值为0到100,但是获得100次正面朝上所需要的投掷次数取值为0到正无穷)。连续型数据表示测量得到的量,其取值是不可数的,可以使用实数轴上的区间表示,为了便于记录,通常只保留部分有效数字,(例如:人的体重,取值可以是70.41KG,或者是70.41483KG)。
对于数值特征,我们主要考虑的是它的大小和分布。
对于目标变量为输入特征的光滑函数的模型:如线性回归、逻辑回归等,其对输入特征的大小很敏感。因此使用光滑函数建模时,要对输入进行归一化。
而对于基于树的模型,例如随机森林、梯度提升树等,对其输入特征的大小不敏感,输入特征不需要进行归一化。
- 截断。有时太多的精度可能是噪声,可对特征进行截取。对于长尾的数据,可以先进行对数转换,然后进行截断。
- 二值化。数值特征的一种常用类型是计数特征,例如网站访问量、餐厅评论数。处理计数特征时首先要考虑的是:保留原始计数还是转换为二值变量来标识是否存在或者进行分桶操作。
- 分桶。常见的有固定宽度的分桶(每个桶的值域是固定的),对于此法如果桶的大小一样,它也称为均匀分桶。例如将人的年龄分为:09岁、1019岁等。另一种是分位数分桶,对于数值变量的取值存在很大的间隔时,采用此法。分桶操作可以看做是对数值变量的离散化,因此分桶之后也可以将分桶当做类别变量进行处理。
- 缩放。将数值变量缩放到一个确定的范围内。常见的缩放有:标准化缩放(也称为Z缩放),即将数值变量的均值变为0,方差变为1.最大最小绝对值缩放;
- 缺失值处理。第一种方法是:补充一个均值,更健壮的方法是补充一个中位数;除此之外还可以使用模型预测缺失值。另外一种是:直接忽略缺失值。有一些模型可以直接处理缺失值,例如XGBoost.
- 特征交叉。特征交叉可以表示数值特征之间的相互作用。例如可以对两个数值变量进行加减乘除。特征交叉可以在线性模型中引入非线性性质,提升模型的表达能力。
- 非线性编码。例如使用多相似核,高斯核等。
1.1.3 类别特征
类别型数据表示的量可以是人的性别、婚姻状况、家乡或者他们喜欢的电影类型等。类别数据的取值可以是数值类型(例如:“1”代表男性,“2”代表女性),但是数值没有任何的数学意义,他们不能进行数学运算。类别型特征也称为:定性数据,不仅可以通过原始数据直接提取,也可以通过将数值特征离散化得到。
类别型特征常见的编码方式,见上。