机器学习知识

a) 统计/机器学习(回归(Logistic),聚类,时间序列,分类树,Boosting,SVM,Random Forest,神经网络等);推荐算法 (Collaborative Filtering, SVD++);

一、机器学习:计算机根据一些任务和性能评估指标从经验中学习。通过从数据中学习得到的经验提升性能

1. 有监督学习:数据带标签,要预测的输出是已知的,对训练集建模,对测试集进行预测。

例子:回归(线性回归),分类(SVM)

2. 无监督学习:数据没有标签,要预测的输出是未知的,没有训练集,直接对数据建模。

例子:聚类,降维

3. 半监督学习:数据有标签但是不确定

 

二、监督学习

1. 目标函数

2. 偏差和方差

泛化误差可以分解成偏差的平方加上方差加上噪声。偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力,方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响,噪声表达了当前任务上任何学习算法所能达到的期望泛化误差下界,刻画了问题本身的难度。偏差和方差一般称为biasvariance,一般训练程度越强,偏差越小,方差越大,泛化误差一般在中间有一个最小值,如果偏差较大,方差较小,此时一般称为欠拟合,而偏差较小,方差较大称为过拟合。

2. 欠拟合一般指对训练样本的一般性质尚未学习好,在训练集上仍然有较大的误差。一般来说欠拟合更容易解决一些,例如增加模型的复杂度,增加决策树中的分支,增加神经网络中的训练次数等等。

3. 过拟合问题:

在训练集上模型表现很好,但是在测试集上效果很差,即模型的泛化能力不行。过拟合是模型训练过程中参数拟合的问题,由于训练数据本身有采样误差,拟合模型参数时这些采样误差都拟合进去就会带来所谓的过拟合问题。模型试图去记住所有的训练数据,而不是学习数据的趋势。

解决方法:

a. 减少特征,降维;

b. 正则化(L1、L2正则化);

c. 数据预处理(降维减少特征数,加权重,均值归一化)

d. Early Stopping(随着训练的进行,你发现迭代到某轮时,训练误差逐渐下降,但校验集误差却在逐渐上升。这时,你需要在那轮提前停止训练,获得模型)

e. 决策树剪枝(预剪枝,后剪枝)

f. SVM松弛变量,

g. dropout,

h. 交叉验证

i. 增加样本数量

 

4. L1、L2的区别,分别在什么情况下使用

L1:在原始的代价函数后面加上一个L1正则化项,即所有权重w的绝对值的和,乘以λ/n

L2:代价函数后面再加上一个正则化项,即所有权重w的平方和,乘以λ/2n

目的都是减少权重,L1可能会有部分w为0,L2会让部分w很小但不是为0。L1可以让一部分特征的系数缩小到0,从而间接实现特征选择。所以L1适用于特征之间有关联的情况。L2让所有特征的系数都缩小,但是不会减为0,它会使优化求解稳定快速。所以L2适用于特征之间没有关联的情况

5. 交叉验证Cross Validation

交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

k折交叉验证:将数据集分为k份,总共训练k次,每次以k-1份作为训练集,1份作为验证集,得到验证集上的性能,将k次结果平均,作为模型的性能指标。优点是每一个样本数据既可以作为测试集又可以作为训练集,可有效避免欠学习和过学习状态的发生,得到的结果比较有说服力。

留一法交叉验证:假设样本数据集中有N个样本数据。将每个样本单独作为测试集,其余N-1个样本作为训练集,这样得到了N个分类器或模型,用这N个分类器或模型的分类准确率的平均数作为此分类器的性能指标。

优点: a. 每一个分类器或模型几乎所有的样本都用来作为训练模型,因此最接近样本,实验评估可靠;b. 实验过程没有随机因素影响实验结果,所以实验结果可复制,因此实验结果稳定。缺点: 计算成本高,因为需要建立的模型数量与样本数据数量相同,当N很大时,计算相当耗时。

 

三、数据预处理:

1. standardization (减掉均值,除以方差,变为0均值,1方差) 

2. scale (将数据缩放到某一个范围)

3. nonlinear transformation (映射为某一分布,均匀分布,高斯分布等...)

4. normalization (每个元素除以范数,范数归一化,用于聚类,对数据的量级非常敏感)

5. 处理缺失值的方法(丢弃;插补(补0,补均值,同类均值插补、建模预测、高维映射、多重插补、极大似然估计、压缩感知和矩阵补全…))

6. 多项式特征生成(增加特征数)

7. 为什么要做数据归一化,在梯度下降时有什么好处(加速梯度下降,减少梯度下降时的摆动

某些算法要求样本具有零均值和单位方差;需要消除样本不同属性具有不同量级时的影响:①数量级的差异将导致量级较大的属性占据主导地位;②数量级的差异将导致迭代收敛速度减慢;③依赖于样本距离的算法对于数据的数量级非常敏感。

8. 特征选择:从给定的特征集合中选出相关特征子集的过程称为特征选择。

进行特征选择的两个主要原因是:减轻维数灾难问题((样本密度非常稀疏)去除不相关特征会降低学习任务的难度,增加模型的泛化能力。常见的特征选择方法分为三类:过滤式(filter)、封装式(wrapper)、嵌入式(embedding)。

过滤式选择:该方法先对数据集进行特征选择,然后再训练学习器。特征选择过程与后续学习器无关,具有较好的通用性,通常选择和类别相关度大的特征或者特征子集。优点:算法的通用性强,省去了分类器的训练步骤,算法复杂性低,因而适用于大规模数据集,可以快速去除大量不相关的特征,作为特征的预筛选器非常合适的。缺点:准确率方面通常低于wrapper方法。

封装式选择:该方法直接把最终将要使用的学习器的性能作为特征子集的评价原则。其优点是直接针对特定学习器进行优化,因此通常比过滤式特征选择更好,缺点是通用性不强,当改变学习算法时,需要针对该学习算法重新进行特征选择,需要多次训练学习器,故计算开销要比过滤式特征选择要大得多。

嵌入式选择:特征选择算法本身作为组成部分嵌入到学习算法里,最典型的就是决策树算法,决策树算法在树增长过程的每个递归步都必须选择一个特征,将样本划分成较小的子集,可见决策树生成的过程也就是特征选择的过程。

怎么评价选择的特征优劣,比如卡方检验、相关系数检验、pca

 

四、模型评价指标,用0,1样本来说明

 

真实值

1

0

预测值

1

TP

FP

0

FN

TN

T表示预测正确,F表示预测错误;P表示预测结果为正,N表示预测结果为负。

1. 精确率:是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是对的,预测为正就有两种可能,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)。因此,精准率P = TP/(TP+FP)。

2. 召回率:是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。因此召回率R = TP/(TP+FN)。

3. ROC: TPR=TP/(TP+FN)=Recall,TPR就是召回率。FPR=FP/(FP+TN),FPR即为实际为0的中,预测为1的占比。我们以FPR为x轴,TPR为y轴画图,就得到了ROC曲线。若有一个阈值,高于此阈值的均为1,低于此阈值的均为0,则认为此模型已完美的区分开好坏用户。此时好用户的预测准确率(TPR)为1,同时好用户的预测错误率(FPR)为0,ROC曲线经过(0,1)点。

4. AOC (Area Under Curve):AUC的值为ROC曲线下面的面积,若模型十分准确,则AUC为1。但通常不会有如此完美的模型,一般AUC均在0.5到1之间,AUC越高,模型的区分能力越好。若AUC=0.5,表示模型的区分能力与随机猜测没有差别。若小于0.5,说明模型效果很差,或者预测有错。

 

五、聚类

1. kmeans算法:基于距离

(1) 随机选取k个中心点;(2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为该类;(3) 更新中心点为每类的均值;重复(2)(3)迭代更新,直至误差小到某个值或者到达一定的迭代步数

如何选择k的个数(肘部法则、根据聚类需求)

优点:fast;缺陷:K值需要预先给定;算法对初始选取的聚类中心点是敏感的,不同的随机种子点得到的聚类结果完全不同;不适用于非凸的和有noise的数据集

 

k-means++:区别在于初始值的选取。原始K-means算法最开始随机选取数据集中K个点作为聚类中心,而K-means++按照如下的思想选取K个聚类中心:假设已经选取了n个初始聚类中心(0<n<K),则在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。在选取第一个聚类中心(n=1)时同样通过随机的方法。

怎么确定k的个数

 

2. dbscan:基于密度的空间的数据聚类方法,要求聚类空间中的一定区域内所包含对象的数目不小于某一给定阈值

(1)检查数据集中每点的Eps邻域来搜索簇,如果点p的Eps邻域包含的点多于MinPts个,则创建一个以p为核心对象的簇;(2)然后,DBSCAN迭代地聚集从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并;(3)当没有新的点添加到任何簇时,该过程结束。

优点:聚类速度快且能够有效处理噪声点和发现任意形状的空间聚类;不需要输入要划分的聚类个数;聚类簇的形状没有偏倚;可以在需要时输入过滤噪声的参数。

缺点:当数据量增大时,要求较大的内存支持I/O消耗也很大;当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差,因为这种情况下参数MinPts和Eps选取困难;算法聚类效果依赖与距离公式选取,实际中常用欧式距离,对于高维数据,存在“维数灾难”。

Eps邻域:给定对象半径Eps内的邻域

核心点:Eps邻域至少包含最小数目MinPts样本的对象

边界点(edge point):Eps邻域包含样本数大于1小于MinPts的对象

噪音点(outlier point):既不是核心点,也不是边界点的任何点,Eps邻域只包含自身

 

3. hierarchical:分治法,自底向上的凝聚方法(agglomerative)和自上向下的分裂方法(divisive)

Agglomerative:先将所有样本的每个点都看成一个簇,然后找出距离最小的两个簇进行合并,不断重复到预期簇或者其他终止条件。

Divisive:先将所有样本当作一整个簇,然后找出簇中距离最远的两个簇进行分裂,不断重复到预期簇或者其他终止条件。

优点:不需要指明K的个数(但是要设定一个停止准则);可以处理任意形状的,有异常的数据

缺点:计算复杂度高,占用内存大,不适用于很大的数据集(解决方法:分级做聚类)

参数:linkage(两个cluster之间的距离度量)

a.最小距离,单链接Single Linkage 两个簇的最近样本决定。

b.最大距离,全链接Complete Linkage 两个簇的最远样本决定。

c.平均距离,均链接Average Linkage 两个簇所有样本共同决定。

a和b都容易受极端值的影响,而c这种方法计算量比较大,不过这种度量方法更合理。

 

六、SVM=最大间隔分类器  https://blog.csdn.net/u012990623/article/details/40272619

概念:在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。分为以下三类:

(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;

(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;

(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

SVM中需要解决的重要数学问题是拉格朗日对偶问题,转化为对偶问题是原因是:一是对偶问题往往更易求解;二是自然引入核函数,进而推广到非线性分类问题。

引入核函数的原因是:当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限维,则一定存在一个更高维的特征空间使原始样本线性可分。

优点: SVM在中小量样本规模的时候容易得到数据和特征之间的非线性关系,可以避免使用神经网络结构选择和局部极小值问题,可解释性强,可以解决高维问题,鲁棒性好。

缺点: SVM对缺失数据敏感,对非线性问题没有通用的解决方案,核函数的正确选择不容易,计算复杂度高,主流的算法可以达到O(n^2)的复杂度,这对大规模的数据是吃不消的。

SVM处理多分类问题:

一种是直接法,直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算量却非常的大。另外一种做法是间接法:对训练器进行组合。其中比较典型的有一对一,和一对多

七. 贝叶斯分类 https://blog.csdn.net/fjssharpsword/article/details/60089266

最小化分类错误的贝叶斯最优分类器等价于最大化后验概率。贝叶斯公式:

朴素贝叶斯是上面介绍的贝叶斯分类器的一个扩展,是用于文档分类的常用算法。朴素贝叶斯分类器采用了属性条件独立性假设,对于已知的类别,假设所有属性相互独立。朴素贝叶斯分类则定义为: 

 

时间序列

 

决策树

决策树根据一步步地属性分类可以将整个特征空间进行划分,从而区别出不同的分类样本。既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。

决策树的节点划分准则:

1、信息增益(信息熵的前后变化),ID3算法就是用信息增益来判断当前节点应该用什么特征来构建决策树,用计算出的信息增益最大的特征来建立决策树的当前节点。信息增益大,则越适合用来分类。缺点是容易偏向于取值较多的特征。 

2、信息增益率 :克服计算信息增益过程中,由于某特征取值种类过多,计算出的信息增益大,造成有偏,故引入信息增益率计算来克服该类问题,算法是C4.5。

3、基尼系数:反应样本集合纯度,基尼指数越小,样本集合纯度越高。无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?有!CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。

 

随机森林

 

boosting

 

 

降维

 

神经网络

一般而言认为神经网络是由单个的神经元和不同神经元之间的连接构成,不同的结构构成不同的神经网络。最常见的神经网络一般称为多层前馈神经网络,除了输入和输出层,中间隐藏层的个数被称为神经网络的层数。BP算法是训练神经网络中最著名的算法,其本质是梯度下降和链式法则。

 

介绍卷积神经网络,和 DBN 有什么区别?

卷积神经网络的特点是卷积核,CNN中使用了权共享,通过不断的上采用和卷积得到不同的特征表示,采样层又称为pooling层,基于局部相关性原理进行亚采样,在减少数据量的同时保持有用的信息。DBN是深度信念网络,每一层是一个RBM,整个网络可以视为RBM堆叠得到,通常使用无监督逐层训练,从第一层开始,每一层利用上一层的输入进行训练,等各层训练结束之后再利用BP算法对整个网络进行训练。

 

增强学习

 

KNN是通过测量不同特征值之间的距离进行分类。它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

 

LR、SVM、决策树的区别(从模型复杂度,激活函数)

SVM既可以用于分类问题,也可以用于回归问题,并且可以通过核函数快速的计算,LR实现简单,训练速度非常快,但是模型较为简单,决策树容易过拟合,需要进行剪枝等。从优化函数上看,soft marginSVM用的是hinge loss,而带L2正则化的LR对应的是cross entropy loss,另外adaboost对应的是exponential loss。所以LR对远点敏感,但是SVMoutlier不太敏感,因为只关心support vectorSVM可以将特征映射到无穷维空间,但是LR不可以,一般小数据中SVMLR更优一点,但是LR可以预测概率,而SVM不可以,SVM依赖于数据测度,需要先做归一化,LR一般不需要,对于大量的数据LR使用更加广泛,LR向多分类的扩展更加直接,对于类别不平衡SVM一般用权重解决,即目标函数中对正负样本代价函数不同,LR可以用一般的方法,也可以直接对最后结果调整(通过阈值),一般小数据下样本维度比较高的时候SVM效果要更优一些。

 

什么是前馈传播,什么是反向传播,推导一下反向传播算法

 

GBDT和随机森林的比较(BGDT是指梯度提升树)(一个boosting,一个是bagging

随机森林采用的是bagging的思想,bagging又称为bootstrap aggreagation,通过在训练样本集中进行有放回的采样得到多个采样集,基于每个采样集训练出一个基学习器,再将基学习器结合。随机森林在对决策树进行bagging的基础上,在决策树的训练过程中引入了随机属性选择。传统决策树在选择划分属性的时候是在当前节点属性集合中选择最优属性,而随机森林则是对结点先随机选择包含k个属性的子集,再选择最优属性,k作为一个参数控制了随机性的引入程度。

另外,GBDT训练是基于Boosting思想,每一迭代中根据错误更新样本权重,因此是串行生成的序列化方法,而随机森林是bagging的思想,因此是并行化方法。

 

如何解决类别不平衡问题?

有些情况下训练集中的样本分布很不平衡,例如在肿瘤检测等问题中,正样本的个数往往非常的少。从线性分类器的角度,在用对新样本进行分类的时候,事实上在用预测出的y值和一个y值进行比较,例如常常在y>0.5的时候判为正例,否则判为反例。几率反映了正例可能性和反例可能性的比值,阈值0.5恰好表明分类器认为正反的可能性相同。在样本不均衡的情况下,应该是分类器的预测几率高于观测几率就判断为正例,因此应该是(m+/m-)表示样本中正负的比例)时预测为正例,这种策略称为rebalancing。但是训练集并不一定是真实样本总体的无偏采样,通常有三种做法,一种是对训练集的负样本进行欠采样,第二种是对正例进行升采样,第三种是直接基于原始训练集进行学习,在预测的时候再改变阈值,称为阈值移动。注意过采样一般通过对训练集的正例进行插值产生额外的正例,而欠采样将反例划分为不同的集合供不同的学习器使用。

 

推荐算法模块是最核心、关键的模块。(1)基于内容的推荐方法,如音乐共性、兴趣点,根据推荐对象内容特征和用户模型兴趣特征计算相似性,最简单的就是余弦距离计算方法。(2)协同过滤推荐,如邮件系统、书籍,自己身边朋友都选择购买,自己很大概率也会购买。

猜你喜欢

转载自blog.csdn.net/u012991043/article/details/81460356