机器学习:基本概念

1,机器学习概述

1.1,机器学习概念

机器学习即Machine Learning,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。目的是让计算机模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断完善自身的性能。简单来讲,机器学习就是人们通过提供大量的相关数据来训练机器。

DataAnalysis:基本概念,环境介绍,环境搭建,大数据问题_燕双嘤-CSDN博客1,概述1.1,数据的性质所谓数据就是描述事物的符号,是对客观事物的性质、状态和相互关系等进行记载的物理符号或者是这些物理符号的组合。在计算机系统中,各种文字、字母、数字符号的组合,图形、图像、视频、音频等统称为数据,数据经过加工后就成了信息。数据是对世界万物的记录,任何可以被测量或是分类的事物都能用数据来表示。在采集完数据后,可以对数据进行研究和分析,从而获得有价值的信息。数据与信息既有联系,又有区别。数据是信息的表现形式,而信息则是数据的内涵,信息是加载于数据之上的,对数据做具体含义的解释https://shao12138.blog.csdn.net/article/details/104797975#t3机器学习、人工智能和深度学习的目标都是让算法模拟“智能”,但是层次范围不同。

  • 人工智能:人工智能涵盖范围最广,任何学习都可以叫做人工智能,它关注的问题和方法也是最复杂,包括知识推理、逻辑规划以及机器人等方面。人工智能又可分为:弱人工智能(AlphaGo只会下棋不会辨别猫狗)、强人工智能(人类能干的脑力活动,机器都能)、超人工智能(几乎所有领域都比人类的大脑聪明)。
  • 机器学习:实现人工智能的方法,需要手动设计特征和模型,并学习数据分布。计算机利用已有的数据(经验),得出了某种模型,并利用此模型预测未来的一种方法。
  • 深度学习:侧重于从大量数据中直接学习高维、复杂的数据特征。原本是从机器学习的神经网络子算法分支发展出来的一系列成果,知识体系一脉相承,因为过于火热,所以另起名字“单飞”了。

机器学习:基本概念_第1张图片

1.2,机器学习的分类

机器学习按照任务分类:

  • 回归模型:预测某个无法枚举的数值,例如明天的股价。
  • 分类模型:将样本分为两类或者多类,例如信用风险识别中的异常识别。
  • 结构化学习模型:输出的不再是向量,而是其他结构,例如将给定的长文本聚集成短的总结。

机器学习按照学习方式划分:

  • 有监督学习:如果训练样本带有标签即为有监督学习,即通过已有的训练样本(即已知数据以及其对应的输出)来训练网络从而得到一个最优模型,再利用这个模型将所有新的数据样本映射为相应的输出结果,对输出结果进行简单的判断从而实现分类的目的,那么这个模型也就可以对未知数据进行分类。
  • 半监督学习:如果训练样本部分有标签,部分无标签则是半监督学习。半监督学习在训练阶段结合了大量未标记的数据和少量标签数据。与使用所有标签数据的模型相比,使用训练集的训模型在训练时可以更为精准,而且训练成本更低。
  • 无监督学习:如果训练样本全部无标签,则是无监督学习。例如聚类算法。详细地讲,就是根据样本间的相似性对样本集进行聚类试图使类内差距最小化,类间差距最大化。
  • 强化学习:强化学习是智能体(Agent)通过与环境进行交互获得的奖项来指导自己的行为,最终目标是使智能体获得最大的奖赏。与监督学习不同的是,强化学习中由环境提供的强化信号是对产生动作的好坏做一种评价,而不是告诉强化学习系统如何去产生正确的动作。
  • 迁移学习:迁移学习是运用已存有的知识或者数据对不同但有关联的领域问题进行求解的机器学习方法。主要目的是通过迁移已有的知识或者数据来解决目标领域中有标签样本数据比较少甚至没有的学习问题。

判别式模型和生成式模型:

  • 判别方法:由数据直接学习决策函数Y=f(X),或者由条件分布概率P(X|Y)作为预测模型为判别模式。常见的判别模型有:线性回归、boosting、SVN、决策树、感知机、线性判别分析(LDA)、逻辑斯蒂回归等算法。
  • 生成方法:由数据学习x和y的联合概率密度分布函数P(Y,X),然后通过贝叶斯公式求出概率分布P(Y|X)作为预测的模型为生成模型。常见的生成模型有朴素贝叶斯、隐马尔克可夫模型、高斯混合模型、文档主题生成模型(LDA)等。

1.3,常见的模型算法

框架体系 内在逻辑 算法
回归算法 线性回归 单变量线性回归算法、多变量线性回归算法、岭回归、Lasso回归等
分类算法 从线性回归到分类 逻辑回归算法
基于后验概率分类 贝叶斯分类算法
基于概率、损益值的分类 决策树分类及其集成学习算法

   K均值算法、层次聚类

K临近算法、支持向量机
基于仿生物技术的分类 人工神经网络
无监督算法 聚类 K均值算法、层次聚类

1.4,专业术语

数据集(样本集):一组数据的集合被称为一个“数据集”,其中每一条单独的数据,使关于一个事件或对象的描述,称为一个“样本”或“示例”。

  • 训练集:帮助我们训练模型,简单的说就是通过训练集的数据让我们确定拟合曲线的参数。它是总的数据集中用来训练模型的部分。根据数量的大小,通常只会取数据集中的一部分来当训练集。
  • 测试集:为了测试已经训练好的模型的精确度,​​​​​用来测试、评估模型泛化能力的部分,不会用在模型训练部分。
  • 验证集:也叫做开发集,用来做模型选择,即做模型的最终优化及确定的,用来辅助我们的模型的构建,即训练超参数,可选;也是比较特殊的一部分数据,主要为了防止训练出来的模型只对训练集有效,也是用来调整模型具体参数的,不参与训练。
  • 三者比例:机器学习(60%,20%,20%;70%,10%,20%)深度学习(98%,1%,1% (假设百万条数据))。

维度:维度指的是样本的数量或特征的数量,一般无特别说明,指的是特征的数量。除了索引之外,一个特征是一维,两个特征是二维,n个特征是n维。对于数组和Series来说,维度就是方法shape返回值的长度。对图像来说,维度就是图像中特征向量的数量。

降维:机器学习中的“降维”,指的是降低特征矩阵中特征的数量。而降维的目的是为了让算法运算更快,效果更好或者是为了更好的数据可视化。

标签:标签是要预测的事物,即简单线性回归中的y变量。有时根据数据是否有标签,也把数据分为有标签数据和无标签数据。

特征:特征是输入变量,反应事件或对象在某些方面的表现或性质,也称“属性”。即简单线性回归中的x变量。简单的机器学习项目可能会使用单个特征,而比较复杂的机器学习项目可能会使用数百万个特征。

特征向量:空间中的每个点都对应一个坐标向量,通常把组成样本的坐标向量称为一个“特征向量”。特征向量可以理解为是坐标轴,一个特征向量定义一条直线,是一维,两个相互垂直的特征向量定义一个平面,即一个直角坐标系,就是二维,三个互相垂直的特征向量定义一个空间,即一个立方直角坐标系,就是三维。三个以上的特征向量相互垂直,定义人眼无法看见,也无法想象的高维空间。

模型:简单地可以理解为定义了特征与标签之间关系的一种函数。就好像观察到大风和闪电,就会预测将会下雨。而模型就是通过已知的数据和目标,通过调节算法参数,即训练数据,最后得到针对这样的数据映射出预测结果。至于“训练的是什么”,“参数是什么”,这依赖于所选取的模型“模型”。而训练的结果简单来说就是得到一组模型参数,最后使用这些参数的模型来完成任务。

分类:分类即确定一个点的类别,是一个有监督学习过程,即目标样本有哪些类别是已知的,通过分类就是把每一个样本分到对应的类别之中。由于必须事先知道各个类别的信息,所有待分类的样本都是有标签的,因此分类算法也有了其局限性,当上述条件无法满足时,就需要尝试聚类分析。常用的分类算法是KNN。虽然大家都不喜欢被分类,被贴上标签,但数据研究的基础正是给数据“贴标签”进行分类。类别分得越精准,得到的结果越有价值。

回归:简单来说,连续变量的预测或定量输出是回归,而如果要预测的值是离散的即一个个标签或定型输出则称为分类,例如,预测明天的气温是多少度,这是一个回归任务,预测明天是阴、晴还是雨,就是一个分类任务。

机器学习:基本概念_第2张图片

二分类:对只涉及两个类别的分类任务,可以称为“二分类”,通常称其中一个类为“正类”,另外一个为“负类”。若涉及多个类别时,则称为“多分类”。

聚类:聚类是机器学习中一种重要的无监督算法,它可以将数据点归结为一系列特定的组合。理论上归为一类的数据点具有相同的特性,而不同类别的数据点则具有不相同的属性。在数据科学中,聚类会从数据中发掘出很多分析和理解的视角,让我们更深入地把握数据资源的价值,并据此指导生产生活。常用的聚类算法:K均值聚类、均值漂移算法、基于密度的聚类算法、利用高斯混合模型进行最大期望估计和凝聚层次聚类。

监督学习和无监督学习:根据训练数据是否拥有标记信息,学习任务可大致分为两大类:监督学习和无监督学习,分类和回归属于前者代表,聚类则是后者代表。

泛化能力:泛化能力是指模型利用新的没见过的数据而不是用于训练的数据做出正确的预测的能力。泛化能力针对的其实是学习方法,它用于衡量该学习方法学习到的模型在整个样本空间上的表现。

偏差:偏差反应的是模型在样本上的输出与真实值之间的误差,即算法的预测的平均值和真实值的关系,偏差越大,越偏离真实数据,表明模型的拟合能力越弱。可以通过引入更多的相关特征、采用多项式特征和减少正则化参数 \lambda 来降低高偏差。

方差:方差反应的是模型每一次输出结果与模型输出期望之间的误差,即不同数据集上的预测值和所有数据集上的平均预测值之间的关系,用来衡量随机变量或一组数据时离散程度的度量,方差越大,数据的分布越分散,表明了数据越不稳定。可以通过采集更多的样本数据、减少特征数量,取出非主要的特征和增加正则化参数\lambda来降低高方差。 

归纳偏好:归纳偏好是机器学习算法在学习过程中对某种类型假设的偏好,通俗来讲就是“什么模型更好”这么一个问题。在机器学习算法中,对某些属性可能更加有“偏好”,或者说更加在乎,给的权重更大,这将导致我们更偏向于得到这种模型的这么一个问题。机器学习中常见的归纳偏置有最大条件独立性、最小描述长度、最少特征数、最大边界和最近邻居等。

 1.5,欠拟合和过拟合

过拟合:过度拟合是指创建的模型与训练数据非常匹配,过分依赖训练数据,在训练集上表现好,但是在测试集上效果差,也就是说在已知的数据集和中非常好,但是在添加一些新的数据进行来训练效果就会差很多,造成这样的原因是考虑因素太多,超出自变量的维度过多。通常具有低偏差和高方差,以至于模型无法对新数据进行正确的预测。

欠拟合:欠拟合是指创建的模型与训练数据匹配不完全,即未能很好地学习训练数据中的关系,模型拟合不够,在训练集上表现效果差,没有充分的利用数据,预测的准确度低,通常具有高偏差和低方差,以至于模型不能很好地预测新数据。

机器学习:基本概念_第3张图片

过拟合产生的原因:

  • 在训练时经常会出现过拟合的问题,具体表现是在训练数据上误差渐渐减小,可是在验证集上的误差反而逐渐增大。详细来讲就是在训练初期,由于训练不足,学习器的拟合能力不够强,偏差比较大。
  • 随着训练程度的加深,学习器的你和能力逐渐增强,训练数据的扰动也能够渐渐被机器学到。而充分训练后,学习器的拟合能力已非常强,训练数据的轻微扰动都会导致学习器发生显著变化,进而产生过拟合。

过拟合和欠拟合的原因:

  • 欠拟合指模型不能在训练集上获得足够低的训练误差,往往是由于特征维度过少,导致拟合的函数无法满足训练集,导致误差较大。

解决欠拟合的方法:

  • 添加新的特征:当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘组合特征等新的特征,往往能够取得更好的效果。
  • 增加模型复杂度:简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
  • 减小正则化项的系数:正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。

解决过拟合的方法:

  • 获得更多的训练数据:使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。
  • 降维:即丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)。
  • 集成学习方法:集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。
  • 正则化:正则化(regularization)的技术,保留所有的特征,但是减少参数的大小,它可以改善或者减少过拟合问题。

1.6,正则化

L1 正则化:J(w)=\frac{1}{2}\sum_{i=1}^{m}[h(x^{(i)})-y^{(i)}]^2+\lambda \sum_{j=1}^{n}|w_j|

L_2 正则化:J(w)=\frac{1}{2}\sum_{i=1}^{m}[h(x^{(i)})-y^{(i)}]^2+\lambda \sum_{j=1}^{n}w_j^2

可以看到在正则化的限制之下,L_2 正则化给出的最优解 w^* 是使解更加靠近原点,也就是说 L_2 正则化能降低参数范数的总和。 

L1 正则化给出的最优解w^*是使解更加靠近某些轴,而其他的轴为0,所以 L1 正则化能使得到的参数稀疏化。

Elastic Net(弹性网络):J(w)=\frac{1}{2}\sum_{i=1}^{m}[h(x^{(i)})-y^{(i)}]^2+\lambda [\rho \sum_{j=1}^{n}|w_j|+(1-\rho )\sum_{j=1}^{n}w_j^2]

\lambda为正则化系数,调整正则化项与训练误差的比例,\lambda >0

1\geqslant \rho \geqslant 0 为比例系数,调整 L_1 正则化与 L_2 正则化的比例。

机器学习:基本概念_第4张图片

2,性能度量

衡量模型泛化能力的评价标准就是性能度量,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果。在性能度量时,回归问题和分类问题用的指标往往不同,所以需要分开讨论。

  • 损失函数(Loss Function)度量单样本预测的错误程度,损失函数值越小,模型就越好。常用的损失函数包括:0-1损失函数、平方损失函数、绝对损失函数、对数损失函数等。
  • 代价函数(Cost Function)度量全部样本集的平均误差。常用的代价函数包括均方误差、均方根误差、平均绝对误差等。
  • 目标函数(Object Function)代价函数和正则化函数,最终要优化的函数。

2.1,回归-性能度量指标

(1)均方误差:

MSE=\frac{1}{n}\sum_{i=0}^{n}(f(x_{i})-y_{i})^{2}

(2)均方根误差:均方差误差是观测值与真值偏差的平方和与观测次数m比值的平方根,用来衡量观测值同真值之间的偏差。如果存在个别偏离程度非常大的离群点时,即使离群点数量非常少,也会让RMSE指标变得很差。

RMSE=\sqrt{MSE}=\sqrt{\frac{1}{n}\sum_{i=0}^{n}(f(x_{i})-y_{i})^{2}}

(3)和方误差:

SSE=\sum_{i=0}^{n}(f(x_{i})-y_{i})^{2}

(4)Mean Absolute Error(MAE):直接计算模型输出与真实值之间的平均绝对误差。

MSE=\frac{1}{n}\sum_{i=0}^{n}|f(x_{i})-y_{i}|

(5)平均绝对百分比误差(MAPE):不仅考虑预测值与真实值的误差,还考虑了误差与真实值之间的比例,比RMSE具有更好的鲁棒性。

MAPE=\frac{1}{n}\sum_{i=}^{n}\frac{|f(x_{i})-y_{i}|}{y_{i}}

(6)平均平方百分比误差:

MASE=\frac{1}{n}\sum_{i=}^{n}(\frac{|f(x_{i})-y_{i}|}{y_{i}})^{2}

(7)决定系数:

R^{2}=1-\frac{\sum_{i=0}^{m}(y^{(i)}-\hat{y}^{(i)})^2}{\sum_{i=0}^{m}(y^{(i)}-\bar{y})^2}=\frac{SSR}{SST}=1-\frac{SSE}{SST}

SSE=\sum_{i=0}^{m}(y^{(i)}-\hat{y}^{(i)})^2

SSR=\sum_{i=0}^{m}(\hat{y}^{(i)}-\bar {y})^2

SST=\sum_{i=0}^{n}(y_{i}-\bar{y})^{2}

R^2 越接近1,说明模型拟合的越好。

其中, y^{(i)} 和 \hat{y}^{(i)} 分别表示第 i 个样本的真实值和预测值,m 为样本个数。

2.2,分类-性能度量指标

机器学习:准确率(A),精确率(P)、召回率(R)及F_燕双嘤-CSDN博客_数据挖掘准确率1,准确率(A)准确率(A)是对预测结果和原结果来说的,表示预测结果中有多少样本预测是正确的。说白了就是你预测的准确度。A = 6/102,精确率(P)精确率(P值)是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么P值计算如下:P=3/43,召回率(R)召回率(R值)是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那么R值计算如下:R=3/54,F值可能很多...https://shao12138.blog.csdn.net/article/details/105628734常用的性能度量指标有:A、P、R、F1、TPR、FPR。

预测为真 预测为假
真实为真 TP FN
真实为假 FP TN

(1)准确率(A)

Accuracy=\frac{TP+TN}{TP+TN+FP+FN}

(2)精确率(P)

Precision=\frac{TP}{TP+FP}

(3)召回率(R)

Recall=\frac{TP}{TP+FN}

(4)真正例率(TPR,正例被判断为正例的概率)

TPR=Recall=\frac{TP}{TP+FN}

(5)假正例率(FPR,反例被判断为正例的概率)

FPR=\frac{FP}{TN+FP}

(7)综合评价指标(F,F-Measure) 

在评价的时候,当然是希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,只搜索出了一个结果,那么Precision就是100%,但是Recall为1/6就很低;而如果我们抽取10个,那么比如Recall是100%,但是Precision为6/10,相对来说就会比较低。

P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score):

F=\frac{(a^{2}+1)P*R}{P+R}

当a=1时,就变成了常见的F1评价指标:

F=\frac{2*P*R}{P+R}

(8)错误率和准确率

e=\frac{1}{n}\sum_{i=0}^{n}I(f(x_{i}\neq y_{i}))

acc=1-e

2.3,聚类-性能度量指标

(1)均一性:类似于精确率,一个簇中只包含一个类别的样本,则满足均一性。其实也可以认为就是正确率(每个聚簇中正确分类的样本数占该聚簇总样本数的比例和)。

\small p=\frac{1}{k}\sum_{i=1}^{k}\frac{N(C_i==K_i)}{N(K_i)}

(2)完整性:类似于召回率,同类别样本被归类到相同簇中,则满足完整性(每个聚簇中正确分类的样本数占该类型的总样本数比例的和)。

\small r=\frac{1}{k}\sum_{i=1}^{k}\frac{N(C_i==K_i)}{N(C_i)}

(3)V-measure:均一性和完整性的加权平均。

\small V=\frac{(1+\beta)^2*pr}{\beta^2*p+r}

(4)轮廓系数:

样本 \small i 的轮廓系数:\small s(i)=\frac{b(i)-a(i)}{max\left \{ a(i),b(i) \right \}}

簇内不相似度:计算样本\small i到同簇其它样本的平均距离为 \small a(i),应尽可能小。

簇间不相似度:计算样本\small i到其它簇 \small C_j 的所有样本的平均距离 \small b(i),应尽可能大。

轮廓系数 \small s(i) 值越接近1表示样本\small i 聚类越合理,越接近-1,表示样本\small i应该分类到另外的簇中,近似为0,表示样本\small i应该在边界上;所有样本的\small s(i)的均值被成为聚类结果的轮廓系数。

假设数据集被拆分为4个簇,样本\small i 对应的 \small a(i)值就是所有 \small C_1 中其他样本点与样本\small i的距离平均值;样本对应的 \small b(i) 值分两步计算,首先计算该点分别到 \small C_2 ,\small C_3\small C_4 中样本点的平均距离,然后将三个平均值中的最小值作为\small b(i) 的度量。

(5)轮廓系数:调整兰德系数数据集 \small S 共有 \small N 个元素,两个聚类结果分别是:\small X=\left \{ X_1,X_2,...,X_r \right \}\small Y=\left \{ Y_1,Y_2,...,Y_s \right \}X 和 Y的元素个数为:a=\left \{ a_1,a_2,...,a_r \right \},b=\left \{ b_1,b_2,...,b_s \right \} 。记 \small n_{ij}=|X_i\cap Y_i| 。

机器学习:基本概念_第5张图片

\small ARI=\frac{\sum_{i,j}^{}C^2_{n_{ij}}-[(\sum_{i}C^2_{a_i})\cdot (\sum_{_i}C^2_{b_i})]/C_n^2}{\frac{1}{2}[(\sum_{i}C^2_{a_i})+(\sum_{i}C^2_{b_i})]-[(\sum_{i}C^2_{a_i})\cdot (\sum_{_i}C^2_{b_i})]/C_n^2}

ARI取值范围为[−1,1],值越大意味着聚类结果与真实情况越吻合。从广义的角度来讲,ARI衡量的是两个数据分布的吻合程度。

3,特征工程 

机器学习:基本概念_第6张图片

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见特征工程在一个机器学习项目中的重要位置。

定义:是把原始数据转变为模型的训练数据的过程。

目的:获取更好的训练数据特征,使得机器学习模型逼近这个上限。

作用:使模型的性能得到提升。

内容:特征选择/提取、特征降维、特征构建等。

3.1,特征构建

在原始数据集中的特征的形式不适合直接进行建模时,使用一个或多个原特征构造新的特征可能会比直接使用原有特征更为有效。

机器学习:基本概念_第7张图片

数据规范化:数据规范化主要是用来解决数据的量纲不同的问题,使不同的数据转换到同一规格。

  • 提升模型精度:不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
  • 加速模型收敛:最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。

机器学习:基本概念_第8张图片

常见的无量钢化方法有标准化区间缩放法:

  • 标准化的假设前提是特征值服从正态分布,标准化后,其转换成标准正态分布。处理后的数据均值为0,方差为1。数据标准化为了不同特征之间具备可比性,经过标准化变换之后的特征数据分布没有发生改变。当数据特征取值范围或单位差异较大时,最好是做一下标准化处理。
  • 归一化利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0,1]等。数据归一化的目的是使得各特征对目标变量的影响一致,会将特征数据进行伸缩变化,所以数据归一化是会改变特征数据分布的。

需要进行数据归一化/标准化:线性模型,如基于距离度量的模型包括KNN(K近邻)、K-means聚类、感知机和SVM。另外,线性回归类的几个模型一般情况下也是需要做数据归一化/标准化处理的。

不需要进行数据归一化/标准化:决策树、基于决策树的Boosting和Bagging等集成学习模型对于特征取值大小并不敏感(以C4.5为例,决策树在进行节点分裂时主要依据数据集D关于特征x的信息增益比,而信息增益比跟特征是否经过归一化是无关的,因为归一化并不会改变样本在特征x上的信息增益),如随机森林、XGBoost、LightGBM等树模型,以及朴素贝叶斯,以上这些模型一般不需要做数据归一化/标准化处理。

理论上,标准化适用于服从正态分布的数据,目前很多工程依赖大数据,所以在样本足够多的情况下,工程师往往直接使用标准化对数据进行无量纲化预处理。在深度学习里,将数据标准化到一个特定的范围能够在反向传播中保证更好的收敛。

Z-Score标准化:它会将原始数据映射到均值为0、标准化为1的分布上。如果不进行数据标准化,有些特征(值很大)将会对损失函数影响更大,使得其他值比较小的特征重要性降低。因此,数据标准化可以使得每个特征的重要性更加均衡。

{x}'=\frac{x-\mu }{\sigma }

\sigma^2=\frac{1}{m}\sum_{i=1}^{m}[x^{(i)}-\mu ]^2

\mu =\frac{1}{m}\sum_{i=1}^{m}x^{(i)}

归一化适用于数据量比较小的工程,对数值类型的特征做归一化可以将所有特征都统一到一个大致相同的数值区间内,就是利用两个最值进行缩放。

{x}'=\frac{x-min}{max-min}

序号编码,二进制编码,哑编码与独热编码

如果某一列数据是一些特征,例如中国、美国、德国这种国家属性性别、血型等只在有限选项内取值的特征),那就无法直接将这种信息应用到回归或分类里,所以要对数据进行哑编码或者独热编码,目的就是针对定性的特征进行处理然后得到可以用来训练的特征。

【序号编码】例如成绩,可以分为:低、中、高三挡,并且存在高>中>低排序关系。可以使用3、2、1分别表示。

【二进制编码】例如血型:A、B、AB、O,可用二进制数:00,01,10,11 分别表示。

哑编码与独热编码的区别主要是:哑编码任意去除一个状态位。这两种方式将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点,使得特征之间的距离计算更加合理。

【哑编码与独热编码】假设有一个特征国家,有中国、美国、德国、法国四种可能取值,那么独热编码会用一个四维的特征向量表示该特征,其中每个维度对应一个国家,也叫作状态位,独热编码保证四个状态位有一个位置是1,其余是0。而哑编码的只需要三个状态位,当三个状态位都是0时,根据既不是中国又不是美国、德国的逻辑,就可以确认是法国了。

缺失值处理

缺失值补充最常用的方法是:均值、就近补齐、K最近距离填充等方法。有时候缺失值也是一种特征,可以补充一列将将数据确实与否赋值为0、1,但这个需要根据实际情况判断。

(1)如果缺失值较多时,可以直接舍弃该列特征,否则可能会带来较大的噪声,从而对结果造成不良影响。

(2)如果缺失值较少时(如果少于10%),可以考虑对缺失值进行填充:

  • 用一个异常值填充并将缺失值作为一个特征处理(比如0或-99999)。
  • 用均值或者条件均值填充,如果数据是不平衡的,那么应该使用条件均值填充,条件均值指的是与缺失值所属标签相同的所有数据的均值。
  • 用相邻数据填充。
  • 利用插值算法。
  • 数据拟合,就是将缺失值作为一个预测问题来处理。简单来讲就是将数据分为正常数据和缺失数据,对有值的数据采用随机森林等方法拟合,然后对有缺失值的数据用预测值来填充。

定量特征二值化:设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0。

分箱:一般在建立分类模型时,需要对连续变量离散化,特征离散化后,模型会更稳定,降低了模型过拟合的风险。

转换特征构造:

相对于聚合特征构造依赖于多个特征的分组统计,通常依赖于对于特征本身的变换。转换特征构造使用单一特征或多个特征进行变换后的结果作为新的特征。

常见的转换方法有单调转换(幂变换、log变换、绝对值等)、线性组合、多项式组合、比例、排名编码和异或值等。

此外,由于业务的需求,一些指标特征也需要基于业务理解进行特征构造。

  • 基于单价和销售量计算销售额。
  • 基于原价和售价计算利润。
  • 基于不同月份的销售额计算环比或同比销售额增长/下降率。

3.2,特征提取

提取对象:原始数据(特征提取一般是在特征选择之前)

提取目的:自动地构建新的特征,将原始数据转换为一组具有明显物理意义(比如几何特征、纹理特征)或者统计意义的特征。

主成分分析法(PCA):PCA 是降维最经典的方法,它旨在是找到数据中的主成分,并利
用这些主成分来表征原始数据,从而达到降维的目的。

PCA 的思想是通过坐标轴转换,寻找数据分布的最优子空间。PCA是一个将数据变换到新坐标系统中的线性变换,使得任何数据投影的第一大方差在第一个坐标(第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。

PCA主要目的是为让映射后得到的向量具有最大的不相关性。详细地讲就是PCA追求的是在降维之后能够最大化保持数据的内在信息,并通过衡量在投影方向上的数据方差的大小来衡量该方法的重要性。

机器学习:基本概念_第9张图片

(1)计算相关系数矩阵

R=\begin{bmatrix} r_{11} &... &r_{1p} \\ ...& & ...\\ r_{p1} & ...&r_{pp} \end{bmatrix}

r_{ij}(i,j=1,2,...,p) 为原变量 x_i 与 x_j 的相关系数,其计算公式为:

r_{ij}=\frac{\sum_{k=1}^{n}(x_{ki}-\bar{x_i})(x_{kj}-\bar{x_j})}{\sum_{k=1}^{n}(x_{ki}-\bar{x_i})^2(x_{kj}-\bar{x_j})^2}

(2)计算特征值与特征向量

解特征方程 |\lambda I-R|=0 ,用雅克比法(Jacobi)求出特征值,并使其按大小顺序排列 \lambda_1\geqslant \lambda_2\geqslant ...\geqslant \lambda_p\geqslant 0;特征值 \lambda_i 对应的单位特征项向量为 e_i 。

(3)计算主成分贡献率及累计贡献率

对应单位特征向量 e_i 就是主成分 z_i 的关于原变量的系数,即 z_i=xe_i^T

贡献率:\alpha_i=\frac{\lambda_i}{\sum_{k=1}^{p}\lambda_k}\, \, \, i=1,2,...,p

累计贡献率:\frac{\sum_{k=1}^{i}\lambda_k}{\sum_{k=1}^{p}\lambda_k} 

一般累计贡献率达到 85%~95% 的特征值 \lambda_1,\lambda_1,...,\lambda_m 所对应的第1、第2、...、第m个主成分 z_1,z_2,...,z_m 。

(4)计算主成分载荷

主成分载荷是反应主成分 z_i 与变量 x_j 之间的相互关联程度。

l_{ij}=p(x_i,x_j)=\sqrt{\lambda }e_{ij}(i,j=1,2,...,p),需要的注意的是实际应用时,指标的量纲住住不同,所以在主成分计算之前应先消除量纲的影响。将变量标准化后再计算其协方差矩阵。

独立成分分析(ICA):ICA独立成分分析,获得的是相互独立的属性。ICA算法本质寻找一
个线性变换 = ,使得 的各个特征分量之间的独立性最大。

PCA是ICA的数据预处理方法

图像特征提取(SIFT特征):

机器学习:基本概念_第10张图片

优点:

  • 具有旋转、尺度、平移、视角及亮度不变性,有利于对目标特征信息进行有效表达;
  • SIFT 特征对参数调整鲁棒性好,可以根据场景需要调整适宜的特征点数量进行特征描述,以便进行特征分析。

缺点:

  • 不借助硬件加速或者专门的图像处理器很难实现。

图像特征提取(HOG特征):方向梯度直方图(HOG)特征是 2005 年针对行人检测问题提出的直方图特征,它通过计算和统计图像局部区域的梯度方向直方图来实现特征描述。

文本特征提取(词袋模型):将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量的每一个维度代表一个单词,而该维度的权重反映了该单词在原来文章中的重要程度。

采用 TF-IDF 计算权重,公式为 \small TF-IDF(t,d)=TF(t,d)\times IDF(t)

  • \small TF(t,d) 表示单词 \small t 在文档 \small d 中出现的频率。
  • \small IDF(t) 是逆文档频率,用来衡量单词 \small t 对表达语义所起的重要性,其表示为:

文本特征提取(N-gram 模型):将连续出现的 个词 (<=) 组成的词组(N-gram)作为一个单独的特征放到向量表示,构成了 N-gram 模型。另外,同一个词可能会有多种词性变化,但却具有相同含义,所以实际应用中还会对单词进行词干抽取(Word Stemming)处理,即将不同词性的单词统一为同一词干的形式。

3.3,特征选择

特征选择是从给定的特征集合中选出相关特征子集的过程。

原因:维数灾难问题;去除无关特征可以降低学习任务的难度,简化模型,降低计算复杂度。选入大量的特征不仅会降低模型效果,也会耗费大量的计算时间。而漏选的特征值也会直接影响最终的模型效果。
目的:确保不丢失重要的特征。

机器学习:基本概念_第11张图片

特征选择的三种方式:

  • 过滤式(Filter):先对数据集进行特征选择,其过程与后续学习器无关,即设计一些统计量来过滤特征,并不考虑后续学习器问题。
  • 包裹式(Wrapper):就是一个分类器,它是将后续的学习器的性能作为特征子集的评价标准。
  • 嵌入式(Embedding):是学习器自主选择特征。

过滤式

原理:先对数据集进行特征选择,然后再训练学习器特征选择过程与后续学习器无关也就是先采用特征选择对初始特征进行过滤,然后用过滤后的特征训练模型。

优点:计算时间上比较高效,而且对过拟合问题有较高的鲁棒性。

缺点:倾向于选择冗余特征,即没有考虑到特征之间的相关性。

Relief方法:Relevant Features是一种著名的过滤式特征选择方法。该方法设计了一个相关统计量来度量特征的重要性。Relief 是为二分类问题设计的,其拓展变体 Relief-F 可以处理多分类问题。

  • 该统计量是一个向量,其中每个分量都对应于一个初始特征。
  • 特征子集的重要性则是由该子集中每个特征所对应的相关统计量分量之和来决定的。
  • 最终只需要指定一个阈值 k,然后选择比 k 大的相关统计量分量所对应的特征即可。也可以指定特征个数 m ,然后选择相关统计量分量最大的 m 个特征。

方差选择法:假如某列特征数值变化一直平缓,说明这个特征对结果的影响很小所以可以计算各个特征的方差,选择方差大于自设阀值的特征。

相关系数&统计检验:相关系数或者统计检验都可以用来特征选择,常用的有person相关系数和卡方检验,前者主要应用于连续变量,后者用于离散变量等。

卡方检验:检验定性自变量对定性因变量的相关性。假设自变量有 \small N 种取值,因变量有 \small M 种取值,考虑自变量等于 \small i 且因变量等于 \small j 的样本频数的观察值与期望的差距,构建统计量:

\small X^2=\sum \frac{(A-E)^2}{E}

互信息法:经典的互信息也是评价定性自变量对定性因变量的相关性的。为了处理定量数据,最大信息系数法被提出。

I(X;Y)=\sum_{x\in X}\sum_{y\in Y}p(x,y)log\frac{p(x,y)}{p(x)p(y)}

包裹式

原理:包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价原则。其目的就是为给定学习器选择最有利于其性能、量身定做的特征子集。

优点:直接针对特定学习器进行优化,考虑到特征之间的关联性,因此通常包裹式特征选择比过滤式特征选择能训练得到一个更好性能的学习器。

缺点:由于特征选择过程需要多次训练学习器,故计算开销要比过滤式特征选择要大得多。

LVW:Las Vegas Wrapper是一个典型的包裹式特征选择方法。使用随机策略来进行子集搜索,并以最终分类器的误差作为特征子集的评价标准。

由于 LVW 算法中每次特征子集评价都需要训练学习器,计算开销很大,因此它会设计一个停止条件控制参数 T。但是如果初始特征数量很多、T 设置较大、以及每一轮训练的时间较长, 则很可能算法运行很长时间都不会停止。

递归特征消除法:使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。

嵌入式

原理:嵌入式特征选择是将特征选择与学习器训练过程融为一体,两者在同一个优化过程中完成的。即学习器训练过程中自动进行了特征选择。

方法:

  • 利用正则化,如L1, L2 范数,主要应用于如线性回归、逻辑回归以及支持向量机(SVM)等算法;优点:降低过拟合风险;求得的 w 会有较多的分量为零,即:它更容易获得稀疏解。
  • 使用决策树思想,包括决策树、随机森林、Gradient Boosting 等。

在 Lasso 中,λ 参数控制了稀疏性:

  • 如果 λ 越小,则稀疏性越小,被选择的特征越多。
  • 相反 λ 越大,则稀疏性越大,被选择的特征越少。

在 SVM 和 逻辑回归中,参数 C 控制了稀疏性:

  • 如果 C 越小,则稀疏性越大,被选择的特征越少。
  • 如果 C 越大, 则稀疏性越小,被选择的特征越多。

主要针对特征和响应变量建立预测模型,例如用基于树的方法(决策树、随机森林、GBDT),或者扩展的线性模型等。

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier
SelectFromModel(GradientBoostingClassifier()).fit_transform(x,y)

可以利用随机森林算法进行降维。随机森林算法具有很强大的随机性,因此相对于其他许多模型算法,它的系统误差更小,同时有更好的分类性能。这主要由两个原因决定的:

  • 在根据原始样本总体随机抽取训练样本时采用随机有放回的抽样,从而使得训练样本的随机性得以保障。
  • 基于分类器中每颗决策树在延伸的同时对变量特征的选择采用随机的方法。

在利用随机森林算法评估特征变量重要性时,主要依据每个特征变量在随机森林中的每棵树上做了多大贡献,然后取平均值,最后比较不同特征之间的贡献值大小。以基尼系数(Gini)为例作为评价指标来衡量特征变量的贡献。

变量的重要性评分用V表示,假设有m个特征X1,X2,...,Xm,则每个特征Xj的Gini指数评分Vj(即第j个特征在随机森林所有决策树中结点分裂不纯度的平均改变量)。

Gini_{m}=1-\sum_{k=1}^{K}p^{2}_{mk}

其中k表示第k个类别,p_{mk}表示结点m中类别k所占比例,K表示分类个数。

特征变量X_{j}在结点m的重要性,即结点m分支前后的Gini指数变化量为:

V_{jm}^{Gini}=Gini_{m}-Gini_{l}-Gini_{r}

其中Gini_{l}Gini_{r}分别表示分支后两个新点的Gini指数。

如果特征X_{j}在决策树i中出现的结点在集合M中,那么X_{j}在第i棵树的重要性为: 

V_{jm}^{Gini}=\sum_{m\in M}V_{jm}^{Gini}

假设随机森林共有n棵树,那么:

V_{jm}^{Gini}=\sum_{i=1}^{n}V_{jm}^{Gini}

最后将所求得的重要性评分进行归一化处理得到重要性评分:

V_{j}^{*}=\frac{V_{j}}{\sum_{i=1}^{c}V_{i}}

利用Python计算随机森林模型返回特征值的重要性:

from sklearn.cross_validation import train_test_split
from sklearn.ensemble import RandomForestClassifier
x_tran,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0)
forest = RandomForestClassifier(n_estimators=1000, random_state=0, n_jobs=-1)
forest.fit(x_train, y_train)
importances= forest.feature_importances  #importances即为需要的重要性评估

你可能感兴趣的:(机器学习/深度学习/强化学习,机器学习)