风控模型口试常问问题

打印 上一主题 下一主题

主题 826|帖子 826|积分 2480

一、模型样本
1)风控建模的目标界说时为什么有灰样本?
灰样本的界说是源于在选取的建容貌本数据中,不满意好坏界说条件的剩余样本,比方表现期不足、好坏程度不敷等。灰样本的设置可以有用扩大好、坏样本之间的特征差别,不到场模型拟合的训练环节,如许可以促进模型得到较好的区分度结果。在模型测试环节,灰样本则需要参加样本群体分析中,以测试模型的泛化本事。具体灰样本的界说逻辑与应用场景,需要联合现实样本情况和业务需求而定,但目标与思路是同等的。
2)样本不平衡为什么对模型训练与应用结果有较大影响?
当建容貌本数据不平衡时,模型在训练拟合过程中更轻易偏向样本量多的类别,而很少在意样本量较少的类别,如许得到的模型在预测样本量较大的类别时,模型的整体准确度虽然表现很高,但在业务场景应用中是不合理的,即模型并没有按照现实需求合理学习与应用。
3)样本不均衡建模场景,为什么最好是采用过采样而不用欠采样方式?
建容貌本数据量较少时,采用过采样方式可以有用使用已有样本数据,而欠采样方法会忽略数量有限的样本数据信息;当建容貌本数据量较多时,过采样与欠采样的方法都可以考虑进行选择。
对于处理建容貌本不均衡的情况,常用的方法有随机过采样、SMOTE法过采样、随机欠采样等方法。
4)样本数据不均衡情况,分层抽样的方法结果更好?
对于样本数据的不均衡情况,若采用随机抽样的方法来获取训练集与验证集,很有大概得到二者的目标变量占比存在很大差别,如许倒霉于后续的模型训练与模型测试,来由是两个样本数据的 分布差别过于显着。
若采用分层抽样方法,便可以有用避免以上情况,使得训练数据与验证数据的 目标占比分布同等,在模型测试环节更有合理性。
5)建容貌本的噪音为什么会导致模型出现过拟合征象?
在训练样本数据中,如果存在的噪音数据(异常值)数量过多或者特征显着,会直接影响模型训练的结果。因为模型在训练拟适时,会较大程度学习到噪音数据的特征分布特点,忽略样本客观数据的整体规律,也就是现实业务数据输入与输出的真实关系。因此,在模型训练之前,需要对建容貌本的异常数据进行处理,从而有用避免样本噪音数据对模型拟合干扰。
6)二分类模型为什么也可以实现多分类场景?
二分类模型训练完成后输出的是对正例值的预测概率,比方信贷风控的申请模型,概率值往往代表预测为坏用户的概率,取值越大说明风险越高。如果我们根据预测概率结果划分为多个连续区间,每个区间代表的风险程度是不同的,如许可以归纳为高风险、中风险、低风险等类型,实在属于一种多分类问题的场景。 
二、特征工程
1)相关性分析有什么作用?
通过特征相关性分析,可以量化分析特征变量之间的相关程度,对于相关性较强的变量进行筛选,不仅可以有用避免模型的共线性问题,包管模型应用的稳固性与实用性,而且还可以较大程度有用缩小模型训练的变量池范围,从而进步模型学习过程的服从。
别的,根据特征变量X与目标变量Y的相关性分析结果,可以提前相识自变量与因变量的关系程度,这在判断特征变量在模型的贡献性方面有一定的参考代价。
2)相关性分析的使用场景?
特征变量的相关性分析在数据测试、数据建模等场景中黑白常重要的。
对于三方数据测试,我们可以根据特征的相关性分析,得到相关字段接洽的量化指标,从而为字段选择与特征引入提供很 直观的参考代价;对于数据建模,特征的相关性分析已经成为一种标配,根据字段之间的相关性系数巨细,可以筛选保留信息度较大的字段,不仅可以较大程度减弱模型拟合的共线性,而且可以提 高模型的精准度与区分度。
3)ONE-HOT编码与LABEL编码的区别?
onehot与label编码都是为了办理分类变量的编码问题,将分类变量转化为模型可以理解的数字。
onehot编码后生成的变量是具有意义的,但大概导致数据过于希罕,并且有维度爆炸的问题。
label编码就是将分类变量转化为连续的数字,但特征取值并不一定有很好的表明性,比方特征“水果”的取值为“苹果、香蕉、西瓜”,label编码后得到的是“1、2、3”,三种类别没有排序属性,但转换后的数值有排序属性,虽然可以到场计算,但并没有现实的表明意义。再比方特征“学历”的取值为“研究生、本科、专科”,label编码后得到的是“3、 2、1”,转换后的数值虽然具有一定等级排序表明意义,但数值之间的权重差别并不能量化说明现实学历的属性。
4)特征缺失值与异常值处理的先后顺序?
先处理异常值,再处理缺失值。
如果缺失值处理在前,若通过常用的统计指标(最大值、最小值、均匀值等)来填充,会将异常值数据考虑在内,这相当于将噪音数据成分植入到缺失单元,在一定程度上将异常值成分扩散, 直接影响数据的合理分布。
如果异常值处理在前,可以先将噪音数据影响的排除,然后采用符合的缺失值填充方法处理,可以较好包管特征数据分布的原有形态,对后续模型训练的影响也显着更 小。
5)特征的PSI稳固性评估作用是什么?
对于信贷风控的特征数据使用,特征的综合性能评估主要表现在区分度与稳固度两个方面,如果某特征的区分度指标表现很好,比方信息值IV,但这大概只是在当前时间窗的样本数据表现,更换临近时间窗的数据,大概指标毛病很大,说明稳固性能是不满意现实业务需求的。
因此,在数据测试、数据建模等场景,对于特征变量的性能测试与字段筛选,需要考虑特征在区分度与稳固度 均表现较好。其中特征的稳固度分析可以采用PSI指标来量化分析。
6)IV值为什么不是越大越好?
在一定合理范围内,特征的IV值越高,说明特征变量对目标变量的预测本事较好,但是当IV值表现很大时,比方IV=2,很大概是由于特征分箱区间的不合理导致的,比方某分箱区间的好、坏样 本数量的差别特殊显着,如许算出的IV值会很高,现实上当前区间的信息并没有较好的业务表明性,也就是分布不合理,此种情况下的特征IV值没有较好的参考代价。
7)数据洗濯时为什么对主键做重复值分析?
在探索样本数据的分布情况时,比力严谨的一个分析维度是对样本主键的重复情况进行相识。
如果存在部分样本主键ID有重复情况,需要进一步研究确认数据是否正常,一种情况是除了样本ID 相同,全部特征变量取值也相同,这种情形往往直接去重处理;另一种情况是样本ID相同,全部特征变量取值不完全相同,这种情形需要联合现实业务场景,看是否另有二级主键,比方客户层下的账户层,对其随机保留或根据条件筛选都需要分析场景。无论怎样,针对样本数据的探索分析,样本主键的重复情况是数据分析考虑维度的一个细节表现。
8)缺失率大怎样处理?
特征的缺失率巨细和业务表明含义没有直接关系,只是在策略开发或模型构建的具体实践中,对于特征的筛选往往更关注缺失率较小的字段。
但是我们需要明确的是,特征的缺失率巨细只是数据分布的现实表现,而特征可否用来策略或模型的字段使用,需要客观分析特征取值的含义。比方,某特征是从三方数据接口引入的一个字段,代表是否命中多头黑名单,若命中则为1,未命中则缺失,这种情况下此特征较大概率可以作为一个策略来使用,而且对于反欺诈模型,也可以考虑将其作为模型训练的拟合字段。
因此,不是说缺失率越大就越不好,需要联合业务的可表明性来综合考虑。
模型上线
1)呆板学习模型为什么要通过生成PMML文件进行摆设?
当模型需要跨平台摆设或反复调用时,可以将模型生存为pmml文件,比方通过随机森林决策 树算法建立好一个申请信用风险评分模型,现在需要将其摆设到线上进行应用。
在模型训练时是采 用python来实现的,由于python体系内部有许多现成的算法库,构建呆板学习模型非常方便。但是在生产环境上,许多情况下是通过Java语言实现,不能直接使用呆板学习模型。这种情况下需要在 python中把训练好的模型生存为pmml文件,然后到Java环境中可以直接来调用。
2)为什么针对评分卡模型上线后的稳固性监测维度,除了模型分数另有变量分布?
模型上线后的稳固性监测是一项重要内容,模型评分的PSI稳固性分析只是从整体上量化评估了模型的颠簸程度,但是分数的PSI结果无论表现好坏,是无法判断具体的原因,也就是由于哪些变量分布导致整体分数的颠簸,尤其是针对分数PSI值较大时(0.1以上),一定需要对模型各个变量的取值分布进行PSI分析,如许才气明确模型颠簸的具体原因。
假设模型分数PSI显着小于0.1时,最好同时将各变量的PSI输出,模型稳固并不代表各个变量的分布都稳固,大概部分变量的颠簸恰好相互抵消才包管了模型整体的稳固。因此,在模型稳固性监测方面,模型分数与变量分布的颠簸程度指标都要同步分析才是最合理的。
9_4标题:
三、模型评估指标
1)AUC相同的两个模型区分度是否同等?
AUC是ROC曲线下的面积巨细,是由横纵坐标TPR和FPR决定的。一般情况下,AUC值越大 说明模型的区分结果越好,但当两个模型的AUC值相等时,只能说明模型针对不同分类阈值下的整 体区分结果形同,但细化到模型性能的发展变化趋势,在模型表现上大概存在很大不同,具体需要 联合现实业务是重视模型的敏感度(TPR)还是特异度(TNR)。别的,评估分类模型的综合效 果,还需要分析KS、accuracy、recall、f1-score等指标。
2)F1分数评估分类模型的优势?
对于分类模型评估指标,精准率(precision)表示预测为正例的样本中预测精确的占比,召回率(recall)表示真实为正例的样本中预测精确的占比,二者分别代表了 “查的准” 和 “查的全”。
抱负情况下是盼望这两个指标取值越大越好,但现原形况是二者有相互制约关系,也就是说追求精准率越高则召回率越低,而追求召回率越高则精准率越低。为了兼顾这种关系,接纳F1分数,公式为 = 2*查准率*查全率 / (查准率 + 查全率)。F1分数同时考虑了精准率和召回率,让二者同时到达最高,取一个平衡。我们在图中看到的平衡点就是F1分数得来的结果。

 
3)精准率和召回率在不同场景下应用
对于分类模型评估指标精准率(precision)与召回率(recall),虽然取值越高说明模型表现越好,但现原形况二者是相互制约的,因此在不同业务场景中,对指标分析的偏重点也是有区别的。
比方,对于疾病预测等场景,现实更关注的是模型对患病情况的预测本事和敏感程度,此时模型要尽大概提拔召回率,而可以接受降低精准率;对于垃圾邮件识别等场景,现实更关注的是模型对垃圾邮件识别的准确率,此时模型可以适当的降低召回率而得到更高的精准率。
4)R2adj为什么比R2更合理?
对于多元线性模型,通过指标R2来评估模型结果会存在一个缺点:当模型特征变量的数量增长时,R2取值会相应增大,反映出模型的精度很高,但如果增长的特征变量与目标变量相关性不大时,此时模型的性能本质上并没有得到提拔,而R2取值增大是无意义的。
为了避免这种情况,调整后R2指标同时考虑了样本量与特征数的影响来优化R2,使得调整后R2的取值不会随着特征自变量数量的增长而趋近于1,如许使得模型结果评估更为准确。
四、降低过拟合
1)L1/L2正则化的作用?
L1正则化是全部权重绝对值之和,可以产生希罕模型,用于特征选择;
L2正则化是全部权重的平方和再开平方根,可以得到值很小的参数。
在模型拟合过程中,L1与L2都会倾向于让变量权值尽大概小,从而获取一个全部参数都表现较小的模型。由于参数值小的模型比力简单,可以适应不同的样本数据集,在一定程度上降低了模型过拟合程度。
2)交叉验证方法的核心思想?
交叉验证的核心思想是重复使用数据,将建容貌本数据集进行拆分,然后组合成不同的训练集和测试集,在训练集中训练模型,在测试集中评价模型。在如许数据拆分的原理逻辑应用下,可以得到多个不同的训练集和测试集,其中某一个训练集的样本大概是下一个测试集的样本。
当我们对数据拆分的时候,是有偶尔性发生的。针对单次样本划分构建出的模型大概有好有坏,大概做出的模型只是对这一种切分方式下的样本比力得当,但对于其他切分方式的样本数据大概结果就不好了,结果并不稳固,这对于泛化本事的证明是缺乏说服力的。交叉验证的目标是有用估计模型的测试毛病,或称为泛化本事,然后根据模型验证的性能结果对比,选择精度较高的符合模型。
在现实工作场景中最常用的几种交叉验证方法,包括HoldOut交叉验证、KFold交叉验证、分层K-Fold交叉验证、Shuffle-Split交叉验证、Leave-P-Out交叉验证等。 以下是KFold的切分示意图:

 
3)模型迭代次数增长,为什么训练集毛病降低而测试集的毛病增大?
迭代次数过多导致模型出现过拟合征象,模型在训练样本上的学习本事过高,模型性能表现较好,模型拟合曲线与训练数据分布的契合度很高,但是对于测试新增数据的容错率降低,模型的泛化本事很弱,从而使模型毛病较大。这种情况下,可以适当减少模型迭代次数、增长训练样本数据 量、添加正则化项束缚等方法来降低模型过拟合情况。
五、逻辑回归&评分卡
1)逻辑回归在信贷领域的优缺点?
优点:
1. 实现简单,速度快,占用内存小,可在短时间内迭代多个版本的模型。
2. 模型的可表明性非常好,可以直接看到各个特征对模型结果的影响,可表明性在金融领域非常重要,所以在现在业界大部分使用的仍是逻辑回归模型。
3. (稳固性好)模型客群变化的敏感度不如其他高复杂度模型,因此稳健更好,鲁棒性更强。
4. 特征工程做得好,模型的结果不会太差,并且特征工程可以并行开发,大大加速开发的速度。
5. 模型的结果可以很方便的转化为策略规则,且线上摆设简单。
缺点和局限性:
1. 轻易欠拟合,相比集成模型,准确度不是很高。
2. 对数据的要求比力高,逻辑回归对缺失值、异常值、共线性都比力敏感,且不能直接处理非线性的特征。所以在数据洗濯和特征工程上会花去很大部分的时间。
3. 在金融领域对场景的适应本事有局限性,比方数据不平衡问题,高维特征,大量多特征,逻辑回归在这方面不如决策树适应本事强。
2)逻辑回归为什么在金融领域应用广泛?
在金融领域中,现实业务的分类场景较多,比方风控场景的是否违约、是否流失等,营销场景 的是否代价客户、是否使用优惠等。
而对于办理分类问题的逻辑回归模型,相比决策树、贝叶斯、 K近邻、神经网络等模型,最突出的一个优点是模型的可表明性非常好,可以很直观的相识到各个 入模特征对模型结果的影响趋势与变化程度,而对于模型的可表明性,在金融业务领域黑白常重要的,尤其是银行机构,对模型应用的业务表明本事要求较高,促使逻辑回归模型在银行等金融机构 的信贷等业务中应用非常广泛。
别的,逻辑回归模型另有其他较显着的优点,比方模型训练速度较快,有利于模型的快速迭代更新;模型摆设较为方便,可以直接在风控决策引擎上摆设模型参数;模型结果易于理解,可以很方便的转化为线上策略规则来应用。
3)逻辑回归和线性回归的区别?
逻辑回归是一种广义线性模型,它引入了 Sigmod 函数,黑白线性模型,但本质上还是一个线性回归模型,因为撤除 Sigmod 函数映射关系,其他的算法原理,步调都是线性回归的。
逻辑回归和线性回归首先都是广义的线性回归,在本质上没多大区别,区别在于逻辑回归多了个 Sigmod 函数,使样本映射到[0,1]之间的数值,从而来处理分类问题。
另外逻辑回归是假设变量服从伯努利分布,线性回归假设变量服从高斯分布。逻辑回归输出的是离散型变量,用于分类,线性回归输出的是连续性的,用于预测。逻辑回归是用最大似然法去计算预测函数中的最优参数值,而线性回归是用最小二乘法去对自变量因变量关系进行拟合。
4)逻辑回归做分类的样本应该满意什么分布?
应该满意伯努利分布,逻辑回归的分类标签是基于样本特征通过伯努利分布产生的,分类器要做的就是估计这个分布。
5)逻辑回归办理过拟合的方法有哪些?
1. 减少特征数量,在现实使用中会用许多方法进行特征筛选,比方基于 IV 值的巨细,变量的稳固性,变量之间的相关性等。
2. 正则化,常用的有L1正则化和L2正则化。
6)逻辑回归为什么要对特征进行离散化?
特征离散化是将数值型特征(一般是连续型的)转变为离散特征,比方评分卡中的woe转化,就是将特征进行分箱,再将每个分箱映射到woe值上,就转换为了离散特征。特征离散处理的最终实现目标是可以较好包管模型的性能,具体表现在以下几个方面:
1. 特征离散可以有用处理异常值数据,从而避免噪音数据对模型训练的影响;
2. 特征离散后可以降低模型的复杂度,降低了模型过拟合的风险,使模型表现更为稳固;
3. 特征离散后的区间分布具有独立的权重,可以提拔的模型的训练结果;
4. 特征离散后数据希罕向量之间的内积乘法运算速度增长,有利于模型的快速训练与迭代更新;
5. 特征数据分布得到简化,可以降低模型出现过拟合的征象;
6. 特征离散后便 于特征交叉,从而引入非线性分布,有用进步模型的表达本事。
7)逻辑回归中为什么要常常做特征交叉?
特征交叉也叫作特征组合,是将单独的特征进行组合,使用相乘/相除/笛卡尔积等形成合成特征,有助于表示非线性关系。比如使用 One - Hot 向量的方式进行特征交叉。这种方式一般实用于离散的情况,我们可以把它看做基于业务理解的逻辑和操作,比方经度和纬度的交叉,年龄和性别的交叉等。
逻辑回归模型属于线性模型,线性模型不能很好处理非线性特征,特征组合可以引入非线性特征,提拔模型的表达本事。另外,基本特征可以认为是全局建模,组合特征更加精细,是个性化建模,但对全局建模会对部分样本有偏,对每一个样本建模又会导致数据爆炸,过拟合,所以基本特征+特征组合兼顾了全局和个性化。
8)逻辑回归建模中为什么要做WOE?
逻辑回归模型在现实业务中是具有较好表明性的,在建模时通过woe编码方式对特征变量进行处理,主要有以下优点:
1. 对连续型与离散型变量均可woe编码;
2. 可以将特征离散后的区间映射到woe值,有较好的表明意义;
3. woe编码可以直接处理特征缺失值情况;
4. 特征woe值分布可以表现出数据分布的单调性趋势,便于特征变量的筛选;
5. woe值的正负关系可以代表离散区间样本的好坏程度;
6. woe值转换后更便于IV值的推导与分析;
7. woe编码对原数据有尺度化的意义,有利于模型变量的拟合。
9)逻辑回归为什么要将高度相关特征剔除?
在损失函数最终收敛的情况下,就算有许多相关度很高的特征,也不会影响模型的结果。假设一个特征将它重复100次,生成100个高度相关的特征。那么模型训练完之后,这100个特征和原来那一个特征饰演的结果一样,每一个特征的权重都是原来特征的1/100,只是大概中间许多特征的系数正负相互抵消了,比如做评分卡,如果引入了高度相关的特征,那么最后逻辑回归的系数符号大概就会不同等。
虽然高度相关特征对模型结果没什么大的影响,但还是要剔除相关性高的特征,原因是一个可以减少特征数量,进步模型的训练速度,减少过拟合的风险。二是去掉高相关特征可以让模型的可表明性更好。尤其在做评分卡时,为了使最后每个特征的系数符号同等,必做特征相关性筛选。
10)逻辑回归的特征系数的绝对值可以认为是特征的重要性吗?
首先特征系数的绝对值越大,对分类结果的影响越显着,但不能直接表示系数更大的特征重要性更高。因为改变变量的尺度就会改变系数的绝对值,而且如果特征是线性相关的,则系数可以从一个特征转移到另一个特征,特征间相关性越高,用系数表明变量的重要性就越不可靠。
11)数据归一化作用?
1. 数据归一到0和1,如许的话梯度下降会收敛的更快,相比不归一化,不会出现扁平的情况。
2. 数据归一化之后可以进步结果的精度,尤其在与正则化同时使用时,数据归一化可以避免由于特征取值范围差距过大,对取值较小特征的参数影响更大的问题。
12)逻辑回归模型为什么相比呆板学习树模型更具有表明性?
逻辑回归模型是一种广义线性模型,模型拟合训练的函数结果会直观表现各入模变量的权重关 系,通过各变量X系数巨细可以判断对目标变量Y的影响程度。
同时,在模型训练前的特征筛选环节,我们对特征变量的数据分布较为关注,无论特征是否颠末WOE编码处理,变量离散后的单调性趋势往往是入模选择的尺度之一,而这种单调性正是需要联合现实业务理解与数据分布形态来分析,可以合理形貌出特征取值的变化对风控坏账率和通过率的影响,从而包管模型在最终应用层面 有很好的表明性。
对于银行等金融机构来讲,模型的表明性黑白常必要的,因此逻辑回归算法在银行风控模型的开发上一直得到广泛应用。
13)逻辑回归怎么办理多分类问题?
softmax多分类
14)评分卡模型变量的稳固性评估,为什么采用PSI比CSI更便于从业务上量化?
对于评分卡模型的变量稳固性,PSI与CSI指标都可以用来评估,但二者除了原理逻辑差别外,在业务理解分析上也有很大不同。
• PSI:可以权衡模型分数或变量取值在不同样本分布的稳固性程度,其公式为:

其中,pct_cur、pct_dev分别代表测试样本占比、开发样本占比。PSI值越小,说明字段分布的稳固性越好,在业务中一般以0.01作为评估尺度。
• CSI:表示两个样本不同区间占比差值与评分的乘积,其公式为:

其中,pct_cur、pct_dev分别代表测试样本占比、开发样本占比。CSI值结果有正负值的大概,反映的是各变量评分向高分数或低分数段颠簸的趋势(数值正负)和程度(数值巨细),但是这种颠簸程度只能在当前模型各变量之间来权衡评估,不能与其他模型的变量来进行对比,并没有绝对业务值的参考。
因此,同样是评估模型的稳固性,PSI更便于联合现实业务来进行量化理解数据的稳固程度,而CSI更偏重表现变量评分的颠簸趋势。
 
9_5标题:
六、决策树
1)决策树模型的优缺点及实用性?
优点:
1. 
易于理解,决策树可以生成 IF .. TEHN 逻辑表达的树结构,可表明性很好。
2. 
3. 
相比逻辑回归对数据的处理较简单,不太需要做比方数据离散化,归一化等操作。
4. 
5. 
决策树是现在已知的对于处理非线性交互的最好的算法。
6. 
7. 
模型的结果比力好,比方随机森林, xgboost 都是基于决策树构建的。
8. 
缺点:
1. 
很轻易在训练过程中生成过于复杂的树结构,造成过拟合。
2. 
3. 
不得当处理高维数据,当属性数量过大时,部分决策树就不实用了。
4. 
5. 
泛化本事本事比力差,对于没有出现过的值几乎没有办法。
6. 
2)决策树的原理以及树的构建过程
决策树时基于树的结构进行决策的,学习过程包括特征选择,决策树的生成和剪枝过程。决策树的学习过程通常是递归地选择最优特征,并用最优特征对数据集进行分割。开始时,构建根节点,选择最优特征,该特征有几种值就划分为多少子集,每个子集递归调用此方法,返回结点,返回的结点就是上一层的子节点,直到全部特征都已经用完,或者数据集只有一维特征为止。
3)ID3、C4.5、CART原理和异同点
1. 
ID3:选择最佳分割点是基于信息增益的,信息增益越大,表明使用这个属性来划分所得到的"纯度提拔"越大。C4.5对ID3进行了改进,因为ID3使用的信息增益对数据划分时,大概出现每个结点只包含一个样本,这些子节点的纯度已经到达最大,但是,如许的决策树并不具有泛化本事,无法对新样本进行预测。且ID3不能处理连续型变量和缺失值。而C4.5使用信息增益率来选择属性,降服了信息增益选择属性时偏向选择值多的属性的不足。且可以处理连续型变量和缺失值。
2. 
3. 
C4.5:是基于ID3的改进版,只能用于分类。而 CART 树既可以做分类,也可以做回归。
4. 
5. 
CART:本质是对特征空间进行二元划分,所以 CART 生成的是一颗二叉树,且可以对类别型变量和数值型变量进行分裂。对分类型变量进行划分时,分为等于该属性和不等于该属性,在对连续型变量进行划分时,分为大于和小于,在做分类时使用的是 GINI 系数作为划分尺度,在做回归时使用的是均方毛病。
6. 
4)分类树和回归树的区别在哪里?
分类树以C4.5为例,在对一个特征进行划分时,是穷举这个特征的每一个阈值,找到使得特征<=阈值和特征>阈值分成的两个分支的熵的最大值,按照该尺度分支得到两个新的节点,用同样的方法继续分支,直到得到种类唯一的叶子节点,或者到达预设的终止条件为止。
回归树的流程是类似分类树的,区别在于划分时的尺度不再是最大熵,而是最小化均差,如果节点的预测值错的越离谱,均方差越大,通过最小化均差能够找到最可靠的分支依据。
5)决策树对缺失值是怎样处理的?
决策树处理缺失要考虑以下3个问题:
1. 
当开始选择哪个属性来划分数据集时,样本在某几个属性上有缺失怎么处理:
2. 
a. 
忽略这些缺失的样本。
b. 
c. 
填充缺失值,比方给属性 A 填充一个均值或者用其他方法将缺失值补全。
d. 
e. 
计算信息增益率时根据缺失率的巨细对信息增益率进行打折,比方计算属性 A 的信息增益率,若属性 A 的缺失率为0.9,则将信息增益率乘以0.9作为最终的信息增益率。
f. 
3. 
一个属性已经被选择,那么在决定分割点时,有些样本在这个属性上有缺失怎么处理?
4. 
a. 
忽略这些缺失的样本。
b. 
c. 
把待分类的样本的属性 A 分配一个最常出现的值,然后进行分支预测。
d. 
e. 
待分类的样本在到达属性 A 结点时就终止分类,然后根据此时 A 结点所覆盖的叶子节点类别状态为其分配一个发生概率最高的类。
f. 
6)决策树为什么不需要做归一化?
因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。树形结构按照特征值进行排序的,排序的顺序稳定,那么所属的分支以及分裂点就不会有不同。
7)怎样办理决策树的过拟合问题?
有预剪枝和后剪枝两种方法,具体如下。
1. 
预剪枝的方法:通过提前停止树的构建而对树剪枝,是现在办理过拟合的主要方法。常用的剪枝条件包括限定树的深度,限定叶节点最小样本数,限定叶节点的最小样本权重,限定叶节点的信息增益值的阈值等。
2. 
3. 
后剪枝的方法:首先构造完备的决策树,允许树过度拟合数据,然后应单个结点取代子树,节点的分类采用子树的主要分类。剪枝方法有错误率降低剪枝,悲观错误剪枝,代价复杂度剪枝。
4. 
8)为什么信息增益偏向取值较多的特征(缺点)?
当特征的取值较多时,根据此特征划分更轻易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是固定的,因此信息增益更大,因此信息增益比力偏向取值较多的特征。
9)决策树算法的停止条件?
1. 
最末节点数:当节点的数据量小于一个指定的数量时,不继续分裂。两个原因:一是数据量较少时,再做分裂轻易强化噪声数据的作用;二是降低树生长的复杂性。提前竣事分裂一定程度上有利于降低过拟合的影响。
2. 
3. 
熵或者基尼值小于阀值:当熵或者基尼值过小时,表示数据的纯度比力大,如果熵或者基尼值小于一定程度数,节点停止分裂。
4. 
5. 
决策树的深度到达指定的条件:决策树的深度是全部叶子节点的最大深度,当深度到达指定的上限巨细时,停止分裂。
6. 
7. 
全部特征已经使用完毕,不能继续进行分裂
8. 
10)决策树怎么做回归?
七、集成学习
1)什么是集成学习?
集成学习是一种优化本领和策略,通常是联合多个简单的弱分类器来集成模型组,分类器之间有差别性,符合好而不同的原则。
一般的弱分类器可以是决策树, SVM , kNN 等构成,其中的模型可以单独来训练,并且这些弱分类器以某种方式联合在一起去做出一个总体预测。集成学习就是找出哪些弱分类器可以联合在一起,以及怎样联合的方法。
2)为什么要集成学习?
强分类器较难得到,集成学习将若分类器组合形成强分类器,实现难度更低;
3)集成学习有哪些框架和常用算法?
现在集成学习主要有 bagging , boosting两种:
1. 
bagging:对训练集进行随机子抽样,对每个子训练集构建基模型,对全部的基模型的预测结果进行综合产生最后的预测结果。如果是分类算法,则用多数投票法确定最终类别,如果是回归算法,则将各个回归结果做算术均匀作为最终的预测值。常用的 bagging 算法:随机森林
2. 
3. 
boosting:训练过程为蹊径状,基模型按照序次进行训练(现实上可以做到并行处理),先给定一个初始训练数据,训练出第一个基模型,根据基模型的表现对样本进行调整,在之前基模型预测错误的样本上投入更多的关注,然后用调整后的样本训练下一个基模型,重复上述过程 N 次,将 N 个基模型进行加权联合,输出最后的结果。常用的算法有 GBDT , XGBOOST 等。
4. 
4)bagging和boosting 主要关注哪个?
毛病形貌的是预测值与真实值的差距,毛病越大,越偏离真实数据。
方差形貌的是预测值的变化范围,离散程度,方差越大,数据分布越分散。
bagging 主要关注的是降低方差, boosting 主要关注降低毛病。因为 bagging 接纳分而治之的策略,对训练样本多次采样,训练多个模型做综合,减小分类器的方差; boosting 通过逐步聚焦于基分类器分错的样本,减小集成分类器的毛病。
4)集成学习常用的基分类器是决策树,为什么?
1. 
决策树可以较为方便地将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重;
2. 
3. 
决策树的表达本事和泛化本事,可以通过调节树的层数来做折中;
4. 
5. 
数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类器随机性较大,如许的“不稳固学习器”更得看成为基分类器。别的, 在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性,很好地引入了随机性;
6. 
7. 
除了决策树外,神经网络模型也得看成为基分类器,主要由于神经网络模型也比力“不稳固”,而且还可以通过调整神经元数量、毗连方式、网络层数、初始权值等方式引入随机性;
8. 
5)集成学习一定要用弱分类器吗?
不一定,但通常用弱分类器集成,在 RF中通过随机特征或样本构造多样性,如许的单个模型结果通常较弱。弱只是实现多样性的一个结果。
bagging一般期望强的基模型,并且差别越大越好。在超参、样本、特征上都加上随机性,让模型的差别尽量大,而更大的模型空间,模型的差别有大概更大。实践中,一般随机森林都不剪枝就是一个典型的例子。boosting一般用欠拟合的弱分类器,基模型越强,留给boosting优化的空间就越小,可以自由调整两者的贡献。
八、随机森林
1)随机森林的优缺点?
优点:
1. 
训练可以高度并行化,训练速度快,服从高。
2. 
3. 
两个随机性的引入,使得随机森林不轻易过拟合,具有很好的抗噪声本事。
4. 
5. 
由于每次不再考虑全部的特征属性,而是特征的一个子集,所以相对于 bagging 计算开销更小,服从更高。
6. 
7. 
对于数据的适应本事强,可以处理连续型和离散型的变量,数据无需规范化。
8. 
9. 
可以输出变量的重要程度,被认为是一种不错的降维方法。
10. 
缺点:
1. 
在某些噪声较大的分类问题和或回归问题上轻易过拟合。
2. 
3. 
模型的可表明性比力差,无法控制模型内部的运行。
4. 
5. 
对于小数据或者低维数据,结果大概会不太好。
6. 
2)随机森林输出特征重要性的原理?
随机森林对于特征重要性的评估思想:判断每个特征在随机森林中的每棵树上做了多大的贡献,然后取个均匀值,最后比一比特征之间的贡献巨细。其中关于贡献的计算方式可以是基尼指数或袋外数据错误率。
1. 
基于基尼系数:如果特征 X 出现在决策树 J 中的结点 M ,则计算节点 M 分枝前后的 Gini 指数变化量,假设随机森林由 N 棵树,则计算 N 次的 Gini 系数,最后将全部的 Gini 系数做一个归一化处理就得到了该特征的重要性。
2. 
3. 
基于袋外数据错误率:袋外数据指的是每次随机抽取未被抽取到达的数据,假设袋外的样本数为 O ,将这 O 个数据作为测试集,代入已生成好的随机森林分类器,得到预测的分类结果,其中预测错误的样本数为 X ,则袋外数据毛病为 X / O ,这个袋外数据毛病记为errOOB1,下一步对袋外数据的特征 A 参加噪声干扰,再次计算袋外毛病errOOB2,假设随机森林由 N 个分类器,则特征 A 的重要性为: sum (errOOB2-errOOB1)/ N ,其依据就是,如果一个特征很重要,那么其变更后会非常影响测试毛病,如果测试毛病没有怎么改变,则说明特征 A 不重要。
4. 
3)随机森林模型为什么可以有用进步泛化本事?
随机森林的主要优点表现在随机性,包括 "随机选取样本" 和 "随机选取特征",如许可以有用包管模型的泛化本事。随机森林在模型训练过程中,首先通过自由采样的方法随机获取n个训练样本,然后在单个训练样本上随机选取部分特征,并从中选择最优特征来划分决策节点,最后得到n棵决策树学习器。
对于分类场景问题,随机森林采用多数投票的规则确定最终模型结果,而对于回归场景问题,随机森林是取多棵决策树预测值的均匀数作为最终模型结果。
4)随机森林树深度可以比GBDT设置稍大一点?
随机森林模型在训练过程中,需要每棵随机决策树具有较强的表达本事,最终通过投票的方式决定模型的性能表现,从而可以降低过拟合征象,因此单颗树的学习深度较大,对模型是最终拟合毛病影响不大。
但是,GBDT模型的学习机制是依次加强前一棵树的表达本事,使得每颗树不需要 有太强的表达本事,否则很轻易导致模型出现过拟合征象。
九、Adaboost
1)Adaboost 的算法原理和流程
Adaboost 基于分类器的错误率分配不同的权重系数,最后得到累加加权的的预测结果。
算法流程:
1. 
给数据中每一个样本一个权重,如有 N 个样本,则每个样本的权重为1/N。
2. 
3. 
训练数据的每一个样本,得到第一个分类器。
4. 
5. 
计算该分类器的错误率,根据错误率计算给分类器分配的权重。
6. 
7. 
将第一个分类器分错的样本权重增长,分对的样本权重减少,然后再用新的样本权重训练数据,得到新的分类器。
8. 
9. 
迭代这个训练步调直到分类器错误为0或到达迭代次数。
10. 
11. 
将全部的弱分类器加权求和,得到分类结果(分类器权重),错误率低的分类器得到更高的决定系数,从而在数据进行预测起关键作用。
12. 
2)Adaboost的优缺点?
优点:
1. 
分类精度高,构造简单,结果可理解。
2. 
3. 
可以使用各种回归分类模型来构建弱学习器,非常机动。
4. 
5. 
不轻易过拟合。
6. 
缺点:
1. 
训练时会过于偏向分类困难的数据,导致 Adaboost 轻易受噪声数据干扰。
2. 
3. 
依靠于弱分类器,训练时间大概比力长。
4. 
3)Adaboost为什么分类精度较高且不易出现过拟合?
Adaboost模型的算法思想是根据分类器的错误率分配不同的权重系数,最后得到汇总加权的预测结果,也就是在模型训练过程中,使分类器分错的样本权重增长,分对的样本权重减少,然后再用新的样本权重训练数据,得到新的分类器,迭代训练步调直到分类器错误为0或到达迭代次数,最后再将全部的弱分类器加权求和,得到分类结果(分类器权重),错误率低的分类器得到更高的决定系数,从而在数据进行预测起关键作用。
十、GBDT
1)GBDT 的原理
GBDT 是 boosting 的一种方法,主要思想是每一次建立单个分类器时,是在之前建立的模型的损失函数的梯度下降方向。损失函数越大,说明模型越轻易出错,如果我们的模型能让损失函数持续的下降,则说明我们的模型在持续不断的改进,而最好的方式就是让损失函数在其梯度的方向上下降。
GBDT 的核心在于每一棵树学的是之前全部树结论和的残差,残差就是真实值与预测值的差值,所以为了得到残差,GBDT 中的树全部是回归树,之所以不用分类树,是因为分类的结果相减是没有意义的。
Shrinkage(缩减)是 GBDT 的一个重要演进分支, Shrinkage 的思想在于每次走一小步来迫近真实的结果,要比直接迈一大步的方式更好,如许做可以有用减少过拟合的风险。它认为每棵树只学到了一小部分,累加的时候只累加这一小部分,通过多学习几棵树来补充不足。这累加的一小部分(步长*残差)来逐步迫近目标,所以各个树的残差是渐变的而不是陡变的。
GBDT 可以用于回归问题(线性和非线性),也可用于分类问题。
2)GBDT为什么不太得当用高维希罕特征?
1. 
GBDT采用CART树算法在每个分裂节点遍历全部变量,是一个贪婪选择的过程,从候选特征集合中选出增益最大的特征做分裂,特征希罕时,计算量大非常耗时;
2. 
3. 
如果划分过细,轻易产生过拟合。参加有1w个样本,其中有10个样本的类别是1;有100维特征,其中f1特征的取值为0和1,且刚好这10个样本的f1特征值都是1,别的9990个样本的f1值是0(在高维希罕的情况下这种情况很常见),很轻易拟合出一个使用f1为分类节点的树直接将数据划分的很好,这种模型的泛化本事却很差。
4.  
高维希罕特征通常使用LR模型,在高维希罕空间中,往往样本更加线性可分。同时,LR正则项是对权重的处罚,权重一旦过大,处罚就会很大,进一步压缩权重,使之不过于太大。而树模型的正则项一般是叶子节点数或深度等。对于上面的case,决策树只需要一个节点就可以完美分割,处罚项非常小。因此,带正则化的线性模型比力不轻易对高维希罕特征过拟合。
3)什么景象下GBDT不如LR?
先说说LR和GBDT的区别:
• 
LR是线性模型,可表明性强,很轻易并行化,但学习本事有限,需要大量的人工特征工程;
• 
• 
GBDT黑白线性模型,具有自然的特征组合优势,特征表达本事强,但是树与树之间无法并行训练,而且树模型很轻易过拟合;
• 
当在高维希罕特征的场景下,LR的结果一般会比GBDT好。原因如下:
先看一个例子:
假设一个二分类问题,label为0和1,特征有100维,如果有1w个样本,但其中只有10个正样本1,而这些样本的特征 f1的值为全为1,而别的9990条样本的f1特征都为0(在高维希罕的情况下这种情况很常见)。
我们都知道在这种情况下,树模型很轻易优化出一个使用f1特征作为重要分裂节点的树,因为这个结点直接能够将训练数据划分的很好,但是当测试的时候,却会发现结果很差,因为这个特征f1只是刚好偶尔间跟y拟合到了这个规律,这也是我们常说的过拟合。
那么这种情况下,如果采用LR的话,应该也会出现类似过拟合的情况呀:y = W1*f1 + Wi*fi+….,其中 W1特殊大以拟合这10个样本。为什么此时树模型就过拟合的更严峻呢?
仔细想想发现,因为现在的模型广泛都会带着正则项,而 LR 等线性模型的正则项是对权重的处罚,也就是 W1一旦过大,处罚就会很大,进一步压缩 W1的值,使他不至于过大。但是,树模型则不一样,树模型的处罚项通常为叶子节点数和深度等,而我们都知道,对于上面这种 case,树只需要一个节点就可以完美分割9990和10个样本,一个结点,最终产生的处罚项极其之小。
这也就是为什么在高维希罕特征的时候,线性模型会比非线性模型好的原因了:带正则化的线性模型比力不轻易对希罕特征过拟合。
3)GBDT 和随机森林的异同点?
相同点:
• 
都是由多棵树组成,最终的结果都是由多棵树一起决定。
• 
不同点:
• 
集成学习:RF属于bagging思想,而GBDT是boosting思想
• 
• 
毛病-方差权衡:RF不断的降低模型的方差,而GBDT不断的降低模型的毛病
• 
• 
训练样本:RF每次迭代的样本是从全部训练集中有放回抽样形成的,而GBDT每次使用全部样本
• 
• 
并行性:RF的树可以并行生成,而GBDT只能顺序生成(需要等上一棵树完全生成)
• 
• 
最终结果:RF最终是多棵树进行多数表决(回归问题是取均匀),而GBDT是加权融合
• 
• 
数据敏感性:RF对异常值不敏感,而GBDT对异常值比力敏感
• 
• 
泛化本事:RF不易过拟合,而GBDT轻易过拟合
• 
9_6标题:
十一、XGBoost
1)简单介绍一下XGBoost
首先需要说一说GBDT,它是一种基于boosting加强策略的加法模型,训练的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值的残差。
XGBoost对GBDT进行了一系列优化,比如损失函数进行了二阶泰勒展开、目标函数参加正则项、支持并行和默认缺失值处理等,在可扩展性和训练速度上有了巨大的提拔,但其核心思想没有大的变化。
2)XGBoost与GBDT有什么不同?
• 基分类器:XGBoost的基分类器不仅支持CART决策树,还支持线性分类器,此时XGBoost相当于带L1和L2正则化项的Logistic回归(分类问题)或者线性回归(回归问题)。
• 导数信息:XGBoost对损失函数做了二阶泰勒展开,GBDT只用了一阶导数信息,并且XGBoost还支持自界说损失函数,只要损失函数一阶、二阶可导。
• 正则项:XGBoost的目标函数加了正则项, 相当于预剪枝,使得学习出来的模型更加不轻易过拟合。
• 列抽样:XGBoost支持列采样,与随机森林类似,用于防止过拟合。
• 缺失值处理:对树中的每个非叶子结点,XGBoost可以自动学习出它的默认分裂方向。如果某个样本该特征值缺失,会将其划入默认分支。
• 并行化:留意不是tree维度的并行,而是特征维度的并行。XGBoost预先将每个特征按特征值排好序,存储为块结构,分裂结点时可以采用多线程并行查找每个特征的最佳分割点,极大提拔训练速度。
3)XGBoost为什么使用泰勒二阶展开?
• 精准性:相对于GBDT的一阶泰勒展开,XGBoost采用二阶泰勒展开,可以更为精准的迫近真实的损失函数
• 可扩展性:损失函数支持自界说,只需要新的损失函数二阶可导。使用泰勒展开取得二阶导数情势, 可以在不选定损失函数具体情势的情况下用于算法优化分析。本质上也就把损失函数的选取和模型算法优化/参数选择分开了。这种去耦合增长了XGBoost的实用性,使得它可以按需选取损失函数,可以用于分类,也可以用于回归。
4)XGBoost怎样寻找最优特征?是有放回还是无放回的呢?
XGBoost在训练的过程中给出各个特征的增益评分,选择增益结果最大的特征作为分裂依据,从而得到每个特征对模型训练的重要性——从根到叶子中间节点涉及特征的次数作为该特征重要性排序。
XGBoost使用梯度优化模型算法,样本是不放回的。
5)XGBoost为什么可以并行训练?
• XGBoost的并行,并不是说每棵树可以并行训练,XGB本质上仍然采用boosting思想,每棵树训练前需要等前面的树训练完成才气开始训练。
• XGBoost的并行,指的是特征维度的并行:在训练之前,每个特征按特征值对样本进行预排序,并存储为Block结构,在背面查找特征分割点时可以重复使用,而且特征已经被存储为一个个block结构,那么在寻找每个特征的最佳分割点时,可以使用多线程对每个block并行计算。
6)XGBoost为什么运行快?
• 分块并行:训练前每个特征按特征值进行排序并存储为Block结构,背面查找特征分割点时重复使用,并且支持并行查找每个特征的分割点
• 候选分位点:每个特征采用常数个分位点作为候选分割点
• CPU cache 命中优化: 使用缓存预取的方法,对每个线程分配一个连续的buffer,读取每个block中样本的梯度信息并存入连续的Buffer中。
• Block 处理优化:Block预先放入内存;Block按列进行解压缩;将Block划分到不同硬盘来进步吞吐
7)XGBoost防止过拟合的方法?
XGBoost在设计时,为了防止过拟合做了许多优化,具体如下:
• 目标函数添加正则项:叶子节点个数+叶子节点权重的L2正则化
• 列抽样:训练的时候只用一部分特征(不考虑剩余的block块即可)
• 子采样:每轮计算可以不使用全部样本,使算法更加保守
• shrinkage: 可以叫学习率或步长,为了给背面的训练留出更多的学习空间
• 树深度:树的最大深度,相当于叶子节点数
8)XGBoost怎样处理缺失值?
XGBoost模型的一个优点就是允许特征存在缺失值。对缺失值的处理方式如下:
• 在特征k上寻找最佳 split point 时,不会对该列特征 missing 的样本进行遍历,而只对该列特征值为 non-missing 的样本上对应的特征值进行遍历,通过这个本事来减少了为希罕离散特征寻找 split point 的时间开销。
• 在逻辑实现上,为了包管完备性,会将该特征值missing的样本分别分配到左叶子结点和右叶子结点,两种情形都计算一遍后,选择分裂后增益最大的谁人方向(左分支或是右分支),作为预测时特征值缺失样本的默认分支方向。
• 如果在训练中没有缺失值而在预测中出现缺失,那么会自动将缺失值的划分方向放到右子结点。

 
9)XGBoost中叶子结点的权重怎样计算出来?
XGBoost目标函数最终推导情势如下:

使用一元二次函数求最值的知识,当目标函数到达最小值Obj*时,每个叶子结点的权重为wj*。具体公式如下:

10)XGBoost中的一棵树的停止生长条件?
• 当新引入的一次分裂所带来的增益Gain<0时,放弃当前的分裂。这是训练损失和模型结构复杂度的博弈过程。
• 当树到达最大深度时,停止建树,因为树的深度太深轻易出现过拟合,这里需要设置一个超参数max_depth。
• 当引入一次分裂后,重新计算新生成的左、右两个叶子结点的样本权重和。如果任一个叶子结点的样本权重低于某一个阈值,也会放弃此次分裂。这涉及到一个超参数:最小样本权重和,是指如果一个叶子节点包含的样本数量太少也会放弃分裂,防止树分的太细。
11)XGBoost怎样处理不平衡数据?
对于不平衡的数据集,比方欺诈场景坏客户少,肯定是极其不平衡的,这对XGBoost的训练有很大的影响,XGBoost有两种自带的方法来办理:
1. 如果你在意AUC,采用AUC来评估模型的性能,那你可以通过设置scale_pos_weight来平衡正样本和负样本的权重。比方,当正负样本比例为1:10时,scale_pos_weight可以取10;
2. 如果你在意概率(预测得分的合理性),你不能重新平衡数据集(会破坏数据的真实分布),应该设置max_delta_step为一个有限数字来资助收敛(基模型为LR时有用)。
除此之外,还可以通过上采样、下采样、SMOTE算法或者自界说代价函数的方式办理正负样本不平衡的问题。
12)XGBoost中怎样对树进行剪枝?
• 在目标函数中增长了正则项:使用叶子结点的数量和叶子结点权重的L2模的平方,控制树的复杂度。
• 在结点分裂时,界说了一个阈值,如果分裂后目标函数的增益小于该阈值,则不分裂。
• 当引入一次分裂后,重新计算新生成的左、右两个叶子结点的样本权重和。如果任一个叶子结点的样本权重低于某一个阈值(最小样本权重和),也会放弃此次分裂。
• XGBoost 先从顶到底建立树直到最大深度,再从底到顶反向查抄是否有不满意分裂条件的结点,进行剪枝。
13)XGBoost为什么不做后剪枝?
后剪枝计算代价太高了,合并一次叶子节点就要计算一次测试集的表现,数据量大的情况下非常消耗时间,而且也并不是特殊必要,因为如许很轻易造成过拟合。
14)XGBoost怎样选择最佳分裂点?
XGBoost在训练前预先将特征按照特征值进行了排序,并存储为block结构,以后在结点分裂时可以重复使用该结构。
因此,可以采用特征并行的方法使用多个线程分别计算每个特征的最佳分割点,根据每次分裂后产生的增益,最终选择增益最大的谁人特征的特征值作为最佳分裂点。如果在计算每个特征的最佳分割点时,对每个样本都进行遍历,计算复杂度会很大,这种全局扫描的方法并不实用大数据的场景。
XGBoost还提供了一种直方图近似算法,对特征排序后仅选择常数个候选分裂位置作为候选分裂点,极大提拔了结点分裂时的计算服从。
15)XGBoost的可扩展性怎样表现?
• 基分类器的scalability:弱分类器可以支持CART决策树,也可以支持LR和Linear。
• 目标函数的scalability:支持自界说loss function,只需要其一阶、二阶可导。有这个特性是因为泰勒二阶展开,得到通用的目标函数情势。
• 学习方法的scalability:Block结构支持并行化,支持 Out-of-core计算。
16)XGBoost怎样评价特征的重要性
我们采用三种方法来评判XGBoost模型中特征的重要程度:
• weight :该特征在全部树中被用作分割样本的特征的总次数。
• gain :该特征在其出现过的全部树中产生的均匀增益。
• cover :该特征在其出现过的全部树中的均匀覆盖范围。
留意:覆盖范围这里指的是一个特征用作分割点后,其影响的样本数量,即有多少样本颠末该特征分割到两个子节点。
17)XGBooost参数调优的一般步调
首先需要初始化一些基本变量,比方:
• max_depth = 5
• min_child_weight = 1
• gamma = 0
• subsample, colsample_bytree = 0.8
• scale_pos_weight = 1
(1) 确定learning rate和estimator的数量
learning rate可以先用0.1,用cv来寻找最优的estimators
(2) max_depth和 min_child_weight
我们调整这两个参数是因为,这两个参数对输出结果的影响很大。我们首先将这两个参数设置为较大的数,然后通过迭代的方式不断修正,缩小范围。
• max_depth,每棵子树的最大深度,check from range(3,10,2)。
• min_child_weight,子节点的权重阈值,check from range(1,6,2)。
如果一个结点分裂后,它的全部子节点的权重之和都大于该阈值,该叶子节点才可以划分。
(3) gamma
也称作最小划分损失min_split_loss,check from 0.1 to 0.5,指的是,对于一个叶子节点,当对它接纳划分之后,损失函数的降低值的阈值。
• 如果大于该阈值,则该叶子节点值得继续划分
• 如果小于该阈值,则该叶子节点不值得继续划分
(4) subsample, colsample_bytree
• subsample是对训练的采样比例
• colsample_bytree是对特征的采样比例
both check from 0.6 to 0.9
(5) 正则化参数
• alpha 是L1正则化系数,try 1e-5, 1e-2, 0.1, 1, 100
• lambda 是L2正则化系数
(6) 降低学习率
降低学习率的同时增长树的数量,通常最后设置学习率为0.01~0.1
18)XGBoost模型如果过拟合了怎么办理?
当出现过拟适时,有两类参数可以缓解:
第一类参数:用于直接控制模型的复杂度,包括max_depth、min_child_weight、gamma 等参数。
第二类参数:用于增长随机性,从而使得模型在训练时对于噪音不敏感,包括subsample、colsample_bytree,另有就是直接减小learning rate,但需要同时增长estimator 参数。
19)XGBoost为什么相比某些模型对缺失值不敏感?
对存在缺失值的特征,一般的办理方法是:
• 离散型变量:用出现次数最多的特征值填充;
• 连续型变量:用中位数或均值填充;
一些模型如SVM和KNN,其模型原理中涉及到了对样本距离的度量,如果缺失值处理不当,最终会导致模型预测结果很差。而树模型对缺失值的敏感度低,大部分时候可以在数据缺失时时使用。原因就是,一棵树中每个结点在分裂时,寻找的是某个特征的最佳分裂点(特征值),完全可以不考虑存在特征值缺失的样本,也就是说,如果某些样本缺失的特征值缺失,对寻找最佳分割点的影响不是很大。因此,对于有缺失值的数据在颠末缺失处理后:
• 当数据量很小时,优先用朴素贝叶斯
• 数据量适中或者较大,用树模型,优先XGBoost
• 数据量较大,也可以用神经网络
• 避免使用距离度量相关的模型,如KNN和SVM
20)XGBoost和LightGBM的区别?
1. 树生长策略:XGB采用level-wise的分裂策略,LGB采用leaf-wise的分裂策略。XGB对每一层全部节点做无差别分裂,但是大概有些节点增益非常小,对结果影响不大,带来不必要的开销。Leaf-wise是在全部叶子节点中选取分裂收益最大的节点进行的,但是很轻易出现过拟合问题,所以需要对最大深度做限定 。
2. 分割点查找算法:XGB使用特征预排序算法,LGB使用基于直方图的切分点算法,其优势如下:
a. 减少内存占用,比如离散为256个bin时,只需要用8位整形就可以生存一个样本被映射为哪个bin(这个bin可以说就是转换后的特征),对比预排序的exact greedy算法来说(用int_32来存储索引+ 用float_32生存特征值),可以节省7/8的空间。
b. 计算服从进步,预排序的Exact greedy对每个特征都需要遍历一遍数据,并计算增益,复杂度为
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表