1.SVM与逻辑回归
软间隔SVM与逻辑回归的区别
1、逻辑回归通过输出预测概率后根据阈值进行判断类别,SVM则直接输出分割超平面,然后使用0/1函数对距离进行分类,不能直接输出概率值,如果需要SVM输出概率值则需要进行特殊处理,可以根据距离的大小进行归一化概率输出。
2、逻辑回归可以使用多阈值然后进行多分类,SVM则需要进行推广。
3、SVM在训练过程只需要支持向量的,依赖的训练样本数较小,而逻辑回归则是需要全部的训练样本数据,在训练时开销更大。
SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。
两者对异常的敏感度也不一样。同样的线性分类情况下,如果异常点较多的话,无法剔除,首先LR,LR中每个样本都是有贡献的,最大似然后会自动压制异常的贡献,SVM+软间隔对异常还是比较敏感,因为其训练只需要支持向量,有效样本本来就不高,一旦被干扰,预测结果难以预料。
2.朴树贝叶斯, 半朴素贝叶斯
条件概率:是指事件A在另外一个事件B已经发生条件下的发生概率,记P(A|B)
推导出条件概率的求解公式为:
贝叶斯理论:
贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。下面不加证明地直接给出贝叶斯定理:
贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。
朴素贝叶斯分类(有监督的):
朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
推荐:朴素贝叶斯分类(Nave Bayes)_郭云飞的专栏-CSDN博客_朴素贝叶斯
3.最大似然估计(MLE)与贝叶斯估计
总结参数估计:模型已定,参数未知!
最大似然估计的核心思想是:找到参数θ的一个估计值,使得当前样本出现的可能性最大。
1)写似然函数 2)一般对似然函数取对数,并将对数似然函数整理
3)对数似然函数求导,令导数为0,求得似然方程
4)根据似然方程求解,得到的参数即为所求估计值
统计学里有两个大的流派,一个是频率派,一个是贝叶斯派。时至今日,这两派还未就各自的观点达成统一。我们前面提到的最大似然估计就是频率派的典型思路,下面是贝叶斯派的贝叶斯公式式子:
p(yi|x)是后验概率。p(x|yi)是条件概率,或者说似然概率,这个概率一般都可以通过历史数据统计得出。而p(yi)是先验概率,一般也是根据历史数据统计得出或者认为给定的,贝叶斯里的先验概率,就是指p(yi)。对于p(x),我们前面提到可以用全概率公式计算得出,但是在贝叶斯公式里面我们一般不care这个概率,因为我们往往只需要求出最大后验概率而不需要求出最大后验的具体值。
全概率公式:
两者最大的区别就在这里:贝叶斯估计引入了先验概率,通过先验概率与似然概率来求解后验概率。而最大似然估计是直接通过最大化似然概率来求解得出的。最大似然估计没有考虑模型本身的概率,或者说认为模型出现的概率都相等。而贝叶斯估计将模型出现的概率用先验概率的方式在计算过程中有所体现。
最后来个总结:从本质上来说,最大似然是对点估计,贝叶斯推断是对分布估计。即,假设求解参数θ,最大似然是求出最有可能的θ值,而贝叶斯推断则是求解θ的分布。
MLE简单又客观,但是过分的客观有时会导致过拟合。在样本点很少的情况下,MLE的效果并不好。比如我们前面举的病毒的例子。在这种情况下,我们可以通过加入先验,用贝叶斯估计进行计算。 而贝叶斯估计则有可能引入不合理的先验概率。
4.逻辑回归
逻辑回归,(线性回归也是属于有监督的)属于有监督的学习;逻辑回归不是回归,而是分类问题,只不过它用了回归的办法来做分类
输入变量与输出变量均为连续变量的预测问题是回归问题,输出变量为有限个离散变量的预测问题成为分类问题.
利用线性回归的办法来拟合然后设置阈值的办法容易受到离群值的影响,sigmod函数可以有效地解决;逻辑回归输出结果是样本预测为正例的概率(0到1之间的小数)
逻辑回归(logistic regression)的本质——极大似然估计_zjuPeco的博客-CSDN博客_逻辑回归的本质
逻辑回归(logistics regression)_激进的蜗牛-CSDN博客_逻辑回归
5.层次聚类;密度聚类(DBSCAN算法, 密度最大值聚类)
聚类算法是常见的无监督聚类方法(无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类)
聚类算法模型的性能度量大致有两类:
1)将模型结果与某个参考模型(或者称为外部指标)进行对比,私认为这种方法用的比较少,因为需要人为的去设定外部参考模型。
2)另一种是直接使用模型的内部属性,比如样本之间的距离(闵可夫斯基距离)来作为评判指标,这类称为内部指标。
kmeans聚类:
主要核心有两步:一是计算样本到各簇心的距离,将样本划分到距离最小的那一簇中;二是在将所有的样本都划分完之后,计算各簇心的样本均值向量,然后将该均值向量设为新的簇心。而迭代的终止条件是当前均值向量和簇心是基本一致。
1)在初始化时,随机选择K个样本作为初始的簇心,倘若此时随机的结果不好,比如两个随机的簇心挨得很近,这可能会导致模型收敛的速度减慢,常见的解决方式是先随机选取一个样本作为簇心,计算样本到该簇心的距离,随机选择下一个簇心,此时选取时会倾向于选择和与最近簇心之间距离较大的样本作为簇心,直到选择完K个簇心。
2)每次迭代时都要计算所有样本和所有簇心之间的距离,若此时样本很大,或者簇心很多时,计算代价是非常大的,因此每次随机抽取一小批样本来更新当前的簇心(通过无放回随机采样)。除了这种方式之外还有一种K-means方法(elkan K-means)也可以减少距离的计算
Kmeans优点:(1)原理简单,实现容易,且收敛速度也较快。(2)聚类效果较好,而且可解释性较强。(3)参数很少,需要调的参数只有簇的个数K。
Kmeans缺点:(1)K值的选取比较难;(2)对于非凸数据集收敛比较难;(3)如果隐含类别的数据不平衡,则聚类效果不佳,比如隐含类型的方差不同,方差较大的类中的样本可能会被聚类到其他类别中;(4)对噪声和异常点比较敏感 (5)迭代得到的结果只是局部最优。(6)不稳定,与K个聚类中心初始选择有关,k的不同初始化其结果就可能不同
层次聚类:凝聚的层次聚类、分裂的层次聚类
凝聚的层次聚类:
1, 将每个对象作为一个簇,这时就有7个簇。
2, 自底向上合并接近的簇,假设合并成了三个簇:AB,CDE,FG。
3, 重复第二步直到数量达到规定的簇的数量K。
分裂的层次聚类:
1, 将所有的样本置于一个簇中。
2, 逐渐细分成越来越小的簇。
3, 重复第二步直到数量达到规定的簇的数量K。
AGNES是一种采用自底向上的聚类策略的层次聚类算法。AGNES的核心思想是先将数据集中的每个样本看作一个初始聚类簇,然后每次迭代时找出距离最近的两个簇进行合并,依次迭代知道簇类的个数达到我们指定的个数K为止,这种方法的好处是随着簇类数量的减少,需要计算的距离也会越来越少,而且相对K-means,不需要考虑初始化时随机簇心对模型到来的影响。
密度聚类:
密度聚类方法的指导思想是,只要样本点的密度大于某阈值,则将该样本添加到最近的簇中。
优点:这类算法能克服基于距离的算法只能发现“类圆形”(凸)的聚类的缺点,可发现任意形状的聚类,且对噪声数据不敏感。
缺点:计算密度单元的计算复杂度大,因此需要建立空间索引来降低计算量。
密度聚类算法假定聚类结构能通过样本分布的紧密程度来确定。同一类别的样本,他们之间是紧密相连的,通过样本密度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。因此密度聚类也是不需要提前设置簇数K的值的。
密度聚类的常用算法介绍:
DBSCAN:它将簇定义为密度相连的点的最大集合,于是能够把具有足够高密度的区域划分为簇,并可在有“噪声”的数据中发现任意形状的聚类。
相关概念:
对象的ε-邻域:给定对象在半径ε内的区域。
核心对象:对于给定的数目m,如果一个对象的ε-邻域至少包含m个对象,则称该对象为核心对象。
直接密度可达:给定一个对象集合D,如果p是在q的ε-邻域内,而q是一个核心对象,我们说对象p从对象q出发是直接密度可达的。
密度可达:如果存在一个对象链p 1p 2 …p n ,p 1 =q,p n =p,对p i ∈D,(1≤i ≤n),p i+1 是从p i 关于ε和m直接密度可达的,则对象p是从对象q关于ε和m密度可达的。
密度相连:如果对象集合D中存在一个对象o,使得对象p和q是从o关于ε和m密度可达的,那么对象p和q是关于ε和m密度相连的。
簇:一个基于密度的簇是最大的密度相连对象的集合。
噪声:不包含在任何簇中的对象称为噪声。
DBSCAN的核心思想:由密度可达关系导出的最大的密度相连样本集合。即分类簇C必须满足:
1)连接性:xi∈ C,xj∈ C,可以直接推出xi 与xj 密度相连,同簇内的元素必须满足密度相连
2)最大性:xi∈ C,xj 有xi 密度可达可以推出xj ∈C
算法流程:
1,如果一个点p的ε-邻域包含多于m个对象,则创建一个p作为核心对象的新簇;
2,寻找并合并核心对象直接密度可达的对象;
3, 没有新点可以更新簇时,算法结束。
算法特点:
1.每个簇至少包含一个核心对象;
2.非核心对象可以是簇的一部分,构成了簇的边缘(edge);
3.包含过少对象的簇被认为是噪声。
与K-means算法相比,DBSCAN算法有两大特点,一是不需要预先设定簇数K的值,二是DBSCAN算法同时适用于凸集和非凸集,而K-means只适用于凸集,在非凸集上可能无法收敛。对于DBSCAN算法适用于稠密的数据或者是非凸集的数据,此时DBSCAB算法的效果要比K-means算法好很多。因此若数据不是稠密的,我们一般不用DBSCAN算法。
密度最大值聚类
人感觉这个是用于找聚类中心和异常值的。
推荐:聚类 - 4 - 层次聚类、密度聚类(DBSCAN算法、密度最大值聚类)_xueyingxue001的专栏-CSDN博客_密度聚类 层次聚类
机器学习算法总结(五)——聚类算法(K-means,密度聚类,层次聚类) - 微笑sun - 博客园
6. 集成学习:boost,bagging, 随机森林, GBDT、XGBDT
集成算法本身不是一个单独的机器学习算法,而是通过将基于其他的机器学习算法构建多个学习器并集成到一起;集成算法可以分为同质集成和异质集成,同质集成是值集成算法中的个体学习器都是同一类型的学习器,比如都是决策树;异质集成是集成算法中的个体学习器由不同类型的学习器组成的。(目前比较流行的集成算法都是同质算法,而且基本都是基于决策树或者神经网络的)
集成算法是由多个弱学习器组成的算法,而对于这些弱学习器我们希望每个学习器的具有较好的准确性、而且各个学习器之间又存在较大的差异性,这样的集成算法才会有较好的结果,然而实际上准确性和多样性往往是相互冲突的,这就需要我们去找到较好的临界点来保证集成算法的效果。根据个体学习器的生成方式不同,我们可以将集成算法分成两类:
(1)个体学习器之间存在强依赖关系,必须串行化生成的序列化方法,这一类的代表是Boosting(常见的算法有Adaboost、GBDT);
(2)个体学习器之间不存在强依赖关系,可以并行化生成每个个体学习器,这一类的代表是Bagging(常见的算法有RandomForest)。
Boost:
对于分类问题,给定一个训练集,求得一个弱学习器要比求一个强学习器容易得多,Boosting方法就是从弱学习器出发,反复学习而得到一系列弱学习器,然后组合这些弱学习器,构成一个强学习器。Boosting算法的工作机制可以概括为:(1)先从初始训练集训练出一个基学习器,(2)再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的样本受到更多的关注(通过施加权重来控制),(3)然后基于调整后的样本集训练下一个基学习器,如此反复进行,直到学得的基学习器的个数达到设定的个数T(基学习器的个数是我们需要调试的超参,通过交叉验证来选择),(4)最终对这T个基学习器根据他们的预测表现来施加不同的权重并结合在一起构成我们的强学习器。
Boosting 里面最具代表的就是adboost:
机器学习算法总结(三)——集成学习(Adaboost、RandomForest) - 微笑sun - 博客园
Bagging算法的核心是通过在原始数据集上进行采样,获得多份不同的样本集,用这些样本集来训练基学习器。第一节中我们提到基学习器需要平衡准确性和多样性,因此我们所采集的样本需要满足这两点,Bagging采用自助采样法(Bootstrap)进行采样,自助采样法的规则如下:给定包含m的样本的数据集,我们先随机从中抽取一个样本出来,再将该样本放回,以便在下一次仍有机会抽到,这样经过m次随机采样,我们就可以获得m的样本的样本集(这样的样本集中约含有原始数据集中的63.2%的样本),按照这种方式抽取出T份样本集出来,用这T份样本集训练出T个基学习器,在预测时根据这T个基学习器预测的结果,通常采用投票法来决定最终的输出。Bagging与Adaboost只适用于二分类问题不同,可以不经修改的用于多分类问题。
Bagging算法中最常见的算法就是RandomForest(随机森林)算法,RandomForest是Bagging的一种变体,在Bagging的基础上引进了属性干扰这一策略,主要是用来提高基学习器之间的多样性。具体规则:传统的决策树是在整个属性集上选择最优的属性来划分样本集合,而RandomForest先在属性集上随机选取k个属性组成一个子属性集,然后在这个子属性集上选择最优的属性来划分样本集合,这里的参数k控制了随机性的引入程度,一般情况下推荐k=log2d,d为属性集的大小。
Bagging算法的作用主要是减小模型的方差,我们来看看bagging和方差具体有什么样的关系。假设有?n个随机变量,方差记为?2,两两变量之间为?,则?n个随机变量的均值方差为:
?∗?2+(1−?)∗?2/?
因此当两两变量之间的相关性为0时,?n个随机变量的均值方差则为:?2/?σ2/n。
因此对于?个模型,若是模型之间相互独立,则方差会降低 ?倍,但实际中模型之间不可能相互独立,因此我们只能尽量增加模型的多样性,当前也得平衡基学习器的准确率。
Adaboost和Boosting算法一样,重点关注模型的偏差,迭代的过程中是以降低偏差为目的,一般偏差会较小,但这并不意味这Adaboost的方差很大,很容易过拟合,实际上是可以通过调整模型的复杂度来避免过拟合的,Adaboost只能做二分类问题,最终的输出是用sign函数决定的。当然对算法上做一些修改也是可以用于回归问题的,但是对于多分类问题就比较复杂。Adaboost算法常用的弱学习器是决策树和神经网络(理论上可以用任何学习器作为基学习器)。对于决策树,Adaboost分类用了CART分类树,Adaboost回归用了CART回归树。
RandomForest算法常用的弱学习器也是决策树和神经网络,对于决策树,在随机森林中也是使用CART分类回归树来处理分类回归问题
集成学习的输出方式:
1)平均法
对于数值类的回归问题,通常使用的方式是平均法,也即是对每个弱学习器的输出加和取平均值,将该平均值作为最后的输出,当然有的时候会给每个学习器带上权重,此时就是加权平均获得最终的输出值。
2)投票法
对于分类问题的输出方式常采用投票法,最简单的投票方式就是取弱学习器中预测最多的那一类作为我们的输出值,其次严格一点的投票方式是不但要输出预测最多的那一类的值,且该类的值要占到预测的值的一半以上,最后还有对每个弱学习器赋予权重,对于最终的投票计算会乘以对应的权重(比如选举时班长的一票顶五票,而普通学生一票就只是一票)。
3)学习法
对于平均法和投票法相对比较简单,有时候在预测时可能存在误差,于是就衍生出了学习法,例如stacking,当使用stacking时是将所有弱学习器的输出作为输入,在这基础上再建立一个模型,让机器自己去学习输出方式,有时候我们会训练多个强学习器,比如将训练一个随机森林的学习器,再训练一个Adaboost的学习器,然后将这两个学习器的弱学习器的输出作为输入(这样我们就有两条输入数据),训练一个用于最终预测的学习器来输出结果。
Adaboost的主要优点:
1)Adaboost作为分类器时,分类精度很高
2)在Adaboost的框架下,可以使用各种分类回归模型来构建基学习器
3)作为简单的二分类问题,构建简单,结果可理解
4)不容易发生过拟合
Adaboost的主要缺点:
1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习其的预测准确性
2)Adaboost只能做二分类问题,要做多分类问需要做其他的变通
RandomForest算法常用的弱学习器也是决策树和神经网络,对于决策树,在随机森林中也是使用CART分类回归树来处理分类回归问题,通常采用投票法和平均法来决定最后的输出,对于分类问题采用投票法也决定了随机森林能无修改的应用于多分类问题,随机森林和Bagging算法一样,重点关注降低模型的方差,泛化能力强,但是有时候也会出现较大的训练误差,这可以通过加大模型的复杂度来解决,另外在随机森林中是采用随机选择子特征集的,子特征集的个数也会影响要模型的方差和偏差,一般认为子特征集越大,模型的偏差会越小。
随机森林的主要优点:
1)训练可以高度并行化,因此算法的速度要选快于Adaboost。
2)由于随机子特征集,因此在高维特征下,算法仍具有较好的效率
3)在训练后可以给出各个特征对输出的重要性
4)由于随机采样,训练出的模型的方差小,泛化能力强
5)算法实现起来比Boosting更简单
6)对部分特征缺失不敏感
随机森林的主要缺点:
1)在某些噪声比较大的样本集上,RF模型容易陷入过拟合
2)取值比较多的特征容易影响随机森林的决策,影响模型的拟合效果
最后关于Bagging重点降低方差,Boosting重点降低偏差来说一说。首先对于Bagging来说,利用对样本进行重采样,然后用类似的模型来训练基学习器,由于子样本集的相似性和使用的模型相同,因此最终的基学习器有近似相等的方差和偏差,对于类似的偏差是无法通过模型平均来降低的,而对于方差在模型平均时会弱化每个基学习器的异常值,强化每个基学习器的共通值,因此会降低模型的方差。对于Boosting,其算法的核心就是关注偏差,在算法优化过程中每次都最小化弱学习器,这本身就是一种以降低偏差为目的的优化方式,因此会降低模型的偏差,当然Boosting也会降低模型的方差,只是没有偏差明显。
前向分布算法:
对于这个问题是个很复杂的优化问题,而且要训练的参数非常的多,前向分布算法的提出就是为了解决模型的优化问题,其核心思想是因为加法模型是由多各模型相加在一起的,而且在Boosting中模型之间又是有先后顺序的,因此可以在执行每一步加法的时候对模型进行优化,那么每一步只需要学习一个模型和一个参数,通过这种方式来逐步逼近全局最优,每一步优化的损失函数:
GBDT是梯度提升决策树(Gradient Boosting Decision Tree)的简称,GBDT可以说是最好的机器学习算法之一。GBDT分类和回归时的基学习器都是CART回归树,因为是拟合残差的。
GBDT和Adaboost一样可以用前向分布算法来描述,因为Adaboost旨在重点关注上一轮分类错误的样本,GBDT算法在每一步迭代时是输出的值不一样,本轮要拟合的输出值是之前的加法模型的预测值和真实值的差值(模型的残差,也称为损失)。
xgboost:引入正则化项 Ω(??)来控制树的复杂度,从而实现有效的控制模型的过拟合,这是xgboost中的第一个重要点。式子中的T为叶子节点数。
和GBDT方法一样,XGBoost的提升模型也是采用残差,不同的是分裂结点选取的时候不一定是最小平方损失,其损失函数如下,较GBDT其根据树模型的复杂度加入了一项正则化项:
GBDT与XGBoost的区别:
1)XGBoost将树模型的复杂度加入到正则项中,来避免过拟合,因此泛化性能会强于GBDT。
2)损失函数是用泰勒展开式展开的,同时用到了一阶导和二阶导,可以加快优化速度。
3)和GBDT只支持CART作为基分类器之外,还支持线性分类器,在使用线性分类器的时候可以使用L1,L2正则化。
4)引进了特征子采样,像RandomForest那样,这种方法既能降低过拟合,还能减少计算。
5)在寻找最佳分割点时,考虑到传统的贪心算法效率较低,实现了一种近似贪心算法,用来加速和减小内存消耗,除此之外还考虑了稀疏数据集和缺失值的处理,对于特征的值有缺失的样本,XGBoost依然能自动找到其要分裂的方向。
6)XGBoost支持并行处理,XGBoost的并行不是在模型上的并行,而是在特征上的并行,将特征列排序后以block的形式存储在内存中,在后面的迭代中重复使用这个结构。这个block也使得并行化成为了可能,其次在进行节点分裂时,计算每个特征的增益,最终选择增益最大的那个特征去做分割,那么各个特征的增益计算就可以开多线程进行。
CART回归树:决策树之CART(分类回归树)详解_zhihua_oba的博客-CSDN博客_分类回归树
CART分类回归树是一种典型的二叉决策树,可以做分类或者回归。如果待预测结果是离散型数据,则CART生成分类决策树;如果待预测结果是连续型数据,则CART生成回归决策树。
作为分类决策树时,待预测样本落至某一叶子节点,则输出该叶子节点中所有样本所属类别最多的那一类(即叶子节点中的样本可能不是属于同一个类别,则多数为主);作为回归决策树时,待预测样本落至某一叶子节点,则输出该叶子节点中所有样本的均值。
根据基尼系数(在样本中抽取两次样本,不同的概率)获得样本集S的最优分裂属性以及最优分裂属性值;
由于决策树的建立完全是依赖于训练样本,因此该决策树对训练样本能够产生完美的拟合效果。但这样的决策树对于测试样本来说过于庞大而复杂,可能产生较高的分类错误率。这种现象就称为过拟合。因此需要将复杂的决策树进行简化,即去掉一些节点解决过拟合问题,这个过程称为剪枝。剪枝方法分为预剪枝和后剪枝两大类。预剪枝是在构建决策树的过程中,提前终止决策树的生长,从而避免过多的节点产生。预剪枝方法虽然简单但实用性不强,因为很难精确的判断何时终止树的生长。后剪枝是在决策树构建完成之后,对那些置信度不达标的节点子树用叶子结点代替,该叶子结点的类标号用该节点子树中频率最高的类标记。
推荐:机器学习算法总结(四)——GBDT与XGBOOST - 微笑sun - 博客园
7.SVM简单介绍,原理,损失函数,解法?SVM核函数的作用,有哪些常用的核函数?
对于核函数选择技巧,其目的是希望通过将输入空间内线性不可分的数据映射到一个高纬的特征空间内使得数据在特征空间内是可分的
8.为什么现在都用cnn而不用SVM
SVM比较适合特征维度大于样本数量(也就是在本身的特征空间就样本可分),而CNN训练过程的特征维度是有限的但是样本的数量是极大的,所以cnn不适合SVM;而RCNN, SPP Net使用SVM使用了不同IOU(提高了IOU减少样本数量,欠采样)来训练SVM。
9.特征工程的基本方法?简单介绍一下过滤式特征选择过程?特征选择的基本方法?
特征工程目的就是获取更好的训练数据。目的是最大限度地从原始数据中提取特征以供算法和模型使用
数据预处理:
(1)不属于同一量纲:即特征的规格不一样,不能够放在一起比较。无量纲化可以解决这一问题;
常见的无量纲化方法有标准化和区间缩放法。标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。区间缩放法利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。
(2)信息冗余:对于某些定量特征,其包含的有效信息为区间划分,二值化解决区间划分问题(比如说及格或者不及格),定量特征二值化的核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0
(3)使用哑编码的方式将定性特征转换为定量特征;可以使用one hot编码
(4)存在缺失值:缺失值需要补充。
(5)信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的;常见的数据变换有基于多项式的、基于指数函数的、基于对数函数的
特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。
特征选择:
1)特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
2)特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除方差法外,本文介绍的其他方法均从相关性考虑。
- Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
过滤法的方差选择法:使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。
过滤法的相关性特征选择:
a)使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值
b)经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量;这个统计量的含义简而言之就是自变量对因变量的相关性
c)经典的互信息也是评价定性自变量对定性因变量的相关性的
- Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
a)递归消除特征:递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。
-
Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。
a)使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维;L1惩罚项降维的原理在于保留多个对目标值具有同等相关性的特征中的一个,所以没选到的特征不代表不重要,可结合L2惩罚项来优化。
b)树模型中GBDT也可用来作为基模型进行特征选择
降维:
PCA:主成元素分析
LDA:线性判别
特征工程常用的工具:sklearn
常用的特征选择方法_zhenaoxi1077的博客-CSDN博客_特征选择方法
10. 降维的方法有哪些?PCA具体怎么做得?
降维的目的:1)减少预测变量的个数 2)确保这些变量是相互独立的 3)提供一个框架来解释结果
特征降维方法包括:Lasso,PCA,小波分析,LDA,奇异值分解SVD,拉普拉斯特征映射,SparseAutoEncoder,局部线性嵌入LLE
1)PCA:PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。PCA不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。
PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 (标准化)
3)求出协方差矩阵C=\frac{1}{m}XX^\mathsf{T}
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据
2)小波分析:小波分析有一些变换的操作降低其他干扰可以看做是降维。
3)线性判别式分析(Linear Discriminant Analysis):简称为LDA Fisher线性判别(Fisher Linear Discriminant,FLD)
基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果;
LDA与前面介绍过的PCA都是常用的降维技术。PCA主要是从特征的协方差角度,去找到比较好的投影方式。LDA更多的是考虑了标注,即希望投影后不同类别之间数据点的距离更大,同一类别的数据点更紧凑。
4)拉普拉斯特征映射将处于流形上的数据,在尽量保留原数据间相似度的情况下,映射到低维下表示。
5)深度学习SparseAutoEncoder:稀疏自编码就是用少于输入层神经元数量的隐含层神经元去学习表征输入层的特征,相当于把输入层的特征压缩了,所以是特征降维。
6)矩阵奇异值分解SVD 类似PCA,可以看成一类
SVD 奇异值分解具体怎么做的
7)LLE局部线性嵌入:是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构。
LLE算法认为每一个数据点都可以由其近邻点的线性加权组合构造得到。算法的主要步骤分为三步:(1)寻找每个样本点的k个近邻点;(2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。
8)Isomap是一种非迭代的全局优化算法,通过一种原本试用于欧式空间的算法MDS,达到降维的目的。
推荐博客:
主成分分析PCA - 张朝阳 - 博客园