当前位置: 主页 > JAVA语言

java 决策树算法-(知识点)机器学习(周志华)试题及答案详解

发布时间:2023-06-21 16:11   浏览次数:次   作者:佚名

java 决策树算法_二进制树防冲突算法_alpha-beta剪枝树算法

1、有监督学习和无监督学习的区别

2、正则化

正则化是针对过拟合而提出的,以为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。

奥卡姆剃刀原理,能够很好的解释已知数据并且十分简单才是最好的模型。

二进制树防冲突算法_java 决策树算法_alpha-beta剪枝树算法

有需要机器学习(周志华)试题及答案详解全套的小伙伴按上方方式获取!

过拟合

如果一味的去提高训练数据的预测能力,所选模型的复杂度往往会很高,这种现象称为过拟合。所表现的就是模型训练时候的误差很小,但在测试的时候误差很大。

产生的原因过拟合原因:

3.、模型问题

模型复杂度高、参数太多决策树模型没有剪枝

权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征.

解决方法:

增加样本数量,对样本进行降维,添加验证数据抽样方法要符合业务场景清洗噪声数据

控制模型复杂度,优先选择简单的模型,或者用模型融合技术。

利用先验知识,添加正则项。L1正则更加容易产生稀疏解、L2正则倾向于让参数w趋向于0.

4、交叉验证

不要过度训练,最优化求解时,收敛之前停止迭代。决策树模型没有剪枝权值衰减

泛化能力

泛化能力是指模型对未知数据的预测能力

5、生成模型和判别模型

1.生成模型:由数据学习联合概率分布P(XY),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)=P(XY)/P(X)。(朴素贝叶斯、Kmeans)

生成模型可以还原联合概率分布p(X,Y),并且有较快的学习收敛速度java 决策树算法,还可以用于隐变量的学习

2.判别模型:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。(k近邻、决策树、SVM)直接面对预测,往往准确率较高,直接对数据在各种程度上的抽象,所以可以简化模型

6、线性分类器与非线性分类器的区别以及优劣

如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是。常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归常见的非线性分类器:决策树、RF、GBDT、多层感知机SVM两种都有(看线性核还是高斯核)

线性分类器速度快、编程方便,但是可能拟合效果不会很好非线性分类器编程复杂,但是效果拟合能力强

7、特征比数据量还大时,选择什么样的分类器?

线性分类器,因为维度高的时候,数据一般在维度空间里面会比较稀疏,很有可能线性可分对于维度很高的特征,你是选择线性还是非线性分类器?

理由同上

对于维度极低的特征,你是选择线性还是非线性分类器?非线性分类器,因为低维空间可能很多特征都跑到一起了,导致线性不可分

1.如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM

2.如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel

3.如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

java 决策树算法_二进制树防冲突算法_alpha-beta剪枝树算法

8、ill-condition病态问题

训练完的模型测试样本稍作修改就会得到差别很大的结果,就是病态问题(这简直是不能用啊)

9、L1和L2正则的区别,如何选择L1和L2正则

他们都是可以防止过拟合,降低模型复杂度

L1是在loss function后面加上模型参数的1范数(也就是|xi|)

L2是在loss function后面加上模型参数的2范数(也就是sigma(xi^2)),注意L2范数的定义是sqrt(sigma(xi^2)),在正则项上没有添加sqrt根号是为了更加容易优化

L1会产生稀疏的特征

L2会产生更多地特征但是都会接近于0

L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都

会接近于0。L1在特征选择时候非常有用,而L2就只是一种规则化而已。

L1求解

最小角回归算法:LARS算法

10、越小的参数说明模型越简单

过拟合的,拟合会经过曲面的每个点,也就是说在较小的区间里面可能会有较大的曲率,这里的导数就是很大,线性模型里面的权值就是导数,所以越小的参数说明模型越简单。

11、为什么一些机器学习模型需要对数据进行归一化?

归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。

哪些机器学习算法不需要做归一化处理?

概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、rf。而像adaboost、gbdt、xgboost、svm、Ir、KNN、KMeans之类的最优化问题就需要归一化。

特征向量的归一化方法:

标准化与归一化的区别:

简单来说,标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。

12、特征向量的缺失值处理

1.缺失值较多.直接将该特征舍弃掉,否则可能反倒会带入较大的noise,对结果造成不良影响。

2.缺失值较少,其余的特征缺失值都在10%以内,我们可以采取很多的方式来处理:

随机森林如何处理缺失值()

方法一(na.roughfix)简单粗暴java 决策树算法,对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,用中位数补。

方法二(rfimpute)这个方法计算量大,至于比方法一好坏?不好判断。先用na.roughfix补上缺失值,然后构建森林并计算proximity matrix,再回头看缺失值,如果是分类变量,则用没有缺失的观测实例的proximity中的权重进行投票。如果是连续型变量,则用proximity矩阵进行加权平均的方法补缺失值。然后迭代4-6次,这个补缺失值的思想和KNN有些类似

二进制树防冲突算法_alpha-beta剪枝树算法_java 决策树算法

13、随机森林如何评估特征重要性()

衡量变量重要性的方法有两种,Decrease GINI和Decrease Accuracy:

14、优化Kmeans

使用kd树或者ball tree(这个树不懂)

将所有的观测实例构建成一颗kd树,之前每个聚类中心都是需要和每个观测点做依次距离计算,现在这些聚类中心根据kd树只需要计算附近的一个局部区域即可

KMeans初始类簇中心点的选取

k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。

15、解释对偶的概念

一个优化问题可以从两个角度进行考察,一个是primal问题,一个是dual问题,就是对偶问题,一般情况下对偶问题给出主问题最优值的下界,在强对偶性成立的情况下由对偶问题可以得到主问题的最优下界,对偶问题是凸优化问题,可以进行较好的求解,SVM中就是将primal问题转换为dual问题进行求解,从而进一步引入核函数的思想。

16、如何进行特征选择?

特征选择是一个重要的数据预处理过程,主要有两个原因:一是减少特征数量、降维,使模型泛化能力更强,减少过拟合;二是增强对特征和特征值之间的理解

常见的特征选择方式:

17、数据预处理

1.缺失值,填充缺失值fillna:

2.连续值:离散化。有的模型(如决策树)需要离散值

3.对定量特征二值化。核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值

为0。如图像操作

4.皮尔逊相关系数,去除高度相关的列#correlation matrixcorrmat =df_train.corr()

f,ax=plt.subplots(figsize=(12,9))sns.heatmap(corrmat, vmax=.8, square=True);

1.去除噪声点。通过matplotlib.scatter函数图示某一特征与预测特征的点分布图,明显看出噪声点,去除即可

#bivariate analysis saleprice/grlivareavar ='GrlivArea'data=pd.concat([df_train['SalePrice'], df_train[var]],axis=1)data.plot.scatter(x=var,y='SalePrice', ylim=(0,800000));df_train.sort_values(by='GrLivArea', ascending= False)[:2]df_train =df_train.drop(df_train[df_train['|d']==1299].index)df_train=df_train.drop(df_train[df_train['ld]==524].index)

最小最大缩放:

当使用基于距离的算法时,我们必须尝试将数据缩放,这样较不重要的特征不会因为自身较大的范围而主导目标函数。如KNN。

在逻辑回归中,每个特征都被分配了权重或系数(Wi)。如果某个特征有相对来说比较大的范围,而且其在目标函数中无关紧要,那么逻辑回归模型自己就会分配一个非常小的值给它的系数,从而中和该特定特征的影响优势,而基于距离的方法,如KNN,没有这样的内置策略,因此需要缩放。

Z-score标准化:

很多的机器学习技巧/模型(例如L1,L2正则项,向量空间模型-Vector Space Model,欧几里得距离测量的KNN、k-均值、SVM、感知器、神经网络、线性判别分析、主成分分析)都基于这样的假设:所有的属性取值都差不多是以O为均值且取值范围相近的,标准化数据帮助我们提高预测模型的精度。

备注:在缩放和标准化中二选一是个令人困惑的选择,你必须对数据和要使用的学习模型有更深入的理解,才能做出决定。对于初学者,你可以两种方法都尝试下并通过交叉验证精度来做出选择。

alpha-beta剪枝树算法_二进制树防冲突算法_java 决策树算法

18、什么是偏差与方差?

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

方差:

解决bias和Variance问题的方法:交叉验证High bias解决方案:Boosting、复杂模型(非线性模型、增加神经网络中的层)、更多特征

High Variance解决方案:agging、简化模型、降维

19、采用EM算法求解的模型有哪些,为什么不用牛顿法或梯度下降法?

用EM算法求解的模型一般有GMM或者协同过滤,k-means其实也属于EM。EM算法一定会收敛,但是可能收敛到局部最优。由于求和的项数将随着隐变量的数目指数上升,会给梯度计算带来麻烦。

20、SVM、LR、决策树的对比?

模型复杂度:SVM支持核函数,可处理线性非线性问题;LR模型简单,训练速度快,适合处理线性问题;决策树容易过拟合,需要进行剪枝

损失函数:SVM hinge loss; LR L2正则化;adaboost指数损失

数据敏感度:SVM添加容忍度对outlier不敏感,只关心支持向量,且需要先做归一化;LR对远点敏感

数据量:数据量大就用LR,数据量小且特征少就用SVM非线性核

21、GBDT和随机森林的区别?

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

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

22、xgboost怎么给特征评分?

在训练的过程中,通过Gini指数选择分离点的特征,一个特征被选中的次数越多,那么该特征评分越高。

23、什么是OOB?随机森林中OOB是如何计算的,它有什么优缺点?

bagging方法中Bootstrap每次约有1/3的样本不会出现在Bootstrap所采集的样本集合中,当然也就没有参加决策树的建立,把这1/3的数据称为袋外数据oob(out of bag),它可以用于取代测试集误差估计方法。

袋外数据(oob)误差的计算方法如下:

对于已经生成的随机森林,用袋外数据测试其性能,假设袋外数据总数为0,用这0个袋外数据作为输入,带进之前已经生成的随机森林分类器,分类器会给出0个数据相应的分类,因为这0条数据的类型是已知的,则用正确的分类与随机森林分类器的结果进行比较,统计随机森林分类器分类错误的数目,设为X,则袋外数据误差大小=X/0;这已经经过证明是无偏估计的,所以在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计。

24、解释置信区间

置信区间不能用贝叶斯学派的概率来描述,它属于频率学派的范畴。真值要么在,要么不在。由于在频率学派当中,真值是一个常数,而非随机变量(后者是贝叶斯学派),所以我们不对真值做概率描述。比如,95%置信区间,并不是真值在这个区间内的概率是95%,而应该为100次随机抽样中构造的100个区间如果95次包含了参数真值,那么置信度为95%。

25、监督学习一般使用两种类型的目标变量:标称型和数值型

标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)

数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等(数值型目标变量主要用于回归分析)

26、为什么说朴素贝叶斯是高偏差低方差?

它简单的假设了各个特征之间是无关的,是一个被严重简化了的模型。所以,对于这样一个简单模型,大部分场合都会bias部分大于variance部分,也就是高偏差,低方差

java 决策树算法_alpha-beta剪枝树算法_二进制树防冲突算法

二进制树防冲突算法_alpha-beta剪枝树算法_java 决策树算法

周志华机器学习笔记更详细的梓料

二进制树防冲突算法_java 决策树算法_alpha-beta剪枝树算法