作为一个一直在传统金融机构做风控模型的人,过往工作经历中,做过的风控模型绝大部分以逻辑回归评分卡为主,机器学习模型也有涉及到一些,但不算很多。传统的逻辑回归评分卡模型,因为模型变量特征的可解释性,以及每个变量均有具体的评分,可以清晰的知道每个变量是如何影响评分的,以及影响的具体分值,所以传统金融机构用逻辑回归建模较多。

机器学习算法内部相对比较黑箱,虽然可以知道变量特征在对评分结果上的影响是正向还是负向,但具体是如何影响的很难去量化和解释,一旦评分发生波动,很难定位到具体是哪个特征影响的,以及影响程度,这一点机器学习模型比不过逻辑回归模型。但近十年来,互联网金融平台、海外信贷等发展较快,机器学习算法在信贷风控领域应用逐渐增多,特别是海外信贷,看大部分的海外风控模型的招聘信息几乎都提到机器学习算法,所以有必要来重新学习下机器学习算法。

为了加深对算法的理解,本期中很多图片都是从网上找来的,如有侵权请联系我删除。

本期主要是入门级科普教材,以机器学习算法的基本概念为主,包括以下内容:

(一)什么是机器学习

(二)机器学习算法基本开发流程

(三)机器学习类型:监督学习、无监督学习

(四)集成学习:stacking、bagging、boosting

(五)机器学习经典入门算法详解

(六)模型评估

一、什么是机器学习

在传统编程中,我们通过编写明确的规则来让计算机解决问题,而机器学习则采用了一种截然不同的方式:它让计算机通过数据自己学习出这些规则。

一个经典的定义来自计算机科学家汤姆·米切尔(Tom M. Mitchell):

“一个计算机程序被称为能够从经验E中学习,解决某个任务T,达到性能度量P,当它在T上的性能(由P衡量)随着经验E的增加而提高。”

简单来说:机器学习是利用算法解析数据,从中学习并做出推断或预测的过程。

二、机器学习算法基本开发流程

机器学习算法与逻辑回归评分卡开发流程基本一致,评分卡模型开发流程在前期文章【风控模型专题:评分模型开发流程】中有详细介绍。机器学习算法也同样遵循以下开发流程步骤,构成一个循环迭代的过程:

1.数据收集与坏目标定义:获取高质量的数据是第一步,数据是模型的“燃料”。

2.数据预处理与特征工程:清洗数据(处理缺失值、异常值)、转换数据格式、从原始数据中提取或构建对预测有用的特征(Features)。这是最耗时但也最关键的一步。

3.模型选择:根据问题类型选择合适的算法。

4.样本划分:把样本划分为训练样本与评估样本。

5.模型训练:将数据输入算法,让模型学习数据中的模式。

6.模型评估:使用未参与训练的测试数据来评估模型的性能。

7.超参数调优:调整模型的“旋钮”(超参数),以追求更好的性能。

8.预测/推断:将训练好的模型应用于新的、未知的数据。

为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可

三、机器学习类型:监督学习、无监督学习

机器学习算法,根据有没有坏标签,分为监督学习和无监督学习两类。监督学习即是有坏标签,算法根据特征变量学习坏标签的特征;无监督学习没有坏标签,算法根据特征变量学习相同的特征分类。

1.无监督学习(Unsupervised Learning)

不事先教导机器,让机器自己学习,核心思想是给算法提供只有特征、没有标签的数据,让模型自行发现数据中的内在结构和模式,就好比给学生一堆没有分类的混色积木,让学生自己找出其中的规律并进行分类。

无监督学习主要有两类应用:

1)聚类(Clustering):将数据分成不同的组,使得组内数据相似度高,组间相似度低。例如,对客户进行分群,以便精准营销。

2)降维(Dimensionality Reduction):在保留大部分信息的前提下,减少数据的特征数量,便于可视化或提高后续模型效率。例如,主成分分析。

以下是一个无监督学习的图形例子,所有数据只有特征向量没有标签,但是可以发现这些数据呈现出聚群的结构,本质是一个相似的类型的会聚集在一起。

把这些没有标签的数据分成一个一个组合,就是聚类(Clustering)。

无监督学习代表性的算法是:K 均值聚类 (K-means Clustering)

K-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组。K-均值是一个迭代算法,假设我们想要将数据聚类成n个组,其方法为:

1)首先选择K个随机的点,称为聚类中心(cluster centroids);

2)对于数据集中的每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。

3)计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。

以下两张图是K均值聚类算法迭代的过程,先随机选定K个中心点,然后再根据计算结果移动这几个点,不断迭代,直至这K个点周围的数据均是同一类。

2.监督学习(Supervised Learning)

事先对机器进行教导。我们有一个样本数据集,我们数据集中的每个样本都有相应的“正确答案”,再根据这些样本作出预测。通俗的说,有监督学习就是比无监督学习多了一个可以表达这个数据特质的标签,让模型可以学习从特征到标签的映射关系。就好比老师给学生一套带答案的习题集,学生通过练习学会如何解题。

监督学习,也主要有两类应用:

1)分类(Classification):预测离散的类别。例如,判断邮件是“垃圾邮件”还是“非垃圾邮件”;判断图像是“猫”还是“狗”。

2)回归(Regression):预测连续的数值。例如,预测明天的气温、预测房子的售价。

在信贷风控模型领域,算法主要是解决0-1分类的问题,即区分好坏样本,所以这个领域以分类算法为主,最简单的入门级算法有:逻辑回归、k最近邻算法、决策树等,这些算法在本期后面再会详细介绍。需要说明的是,K最近邻算法在实际业务中不实用,所以实际业务中用得不多。

为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可

四、集成学习(Ensemble Learning):stacking、bagging、boosting

集成学习的核心思想是:“众人拾柴火焰高”。通过将多个相对较弱、简单的模型(称为“基学习器”)组合起来,得到一个更强大、更精确的模型。

集成学习有三大主流学习方法,在学习三大类方法之前,先来认识下模型的方差(variance)和偏差(bias)集成学习主要是为了平衡方差和偏差的问题。

模型的偏差:训练出来的模型在训练集上的准确度。  

要解释模型的方差,首先需要重新审视模型:模型是随机变量。设样本容量为n的训练集为随机变量的集合(X1, X2, ..., Xn),那么模型是以这些随机变量为输入的随机变量函数(其本身仍然是随机变量):F(X1, X2, ..., Xn)。抽样的随机性带来了模型的随机性。  

研究模型的方差有什么现实的意义呢?我们认为方差越大的模型越容易过拟合:假设有两个训练集A和B,经过A训练的模型Fa与经过B训练的模型Fb差异很大,这意味着Fa在类A的样本集合上有更好的性能,而Fb反之,这便是我们所说的过拟合现象。

集成学习就是为了平衡模型偏差和方差的问题。我们常说集成学习框架中的基模型是弱模型,通常来说弱模型是偏差高(在训练集上准确度低)方差小(防止过拟合能力强)的模型。但是,并不是所有集成学习框架中的基模型都是弱模型。bagging和stacking中的基模型为强模型(偏差低方差高),boosting中的基模型为弱模型。

方差与偏差的图形理解示例如下:

三大主流集成方法:

1)Bagging(装袋)

思想:通过自助采样法从训练集中产生多个不同的数据子集,用每个子集独立地训练一个基学习器,最后通过投票(分类) 或平均(回归)结合预测结果。

目标:降低方差,减少过拟合。特别适用于像决策树这样容易过拟合的模型。

典型算法:随机森林,它是Bagging思想与决策树的完美结合,同时在训练每棵树时还对特征进行随机选择,进一步增强了多样性。

Bagging算法的示例图如下:

Bagging是从训练集进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果。

2)Boosting(提升)

思想:顺序地训练一系列基学习器。每一个后续模型都会更加关注前一个模型预测错误的样本。它是一个“从错误中学习”的过程。

目标:降低偏差,将多个“弱学习器”提升为一个“强学习器”。

典型算法:AdaBoost, Gradient Boosting Machine (GBM), XGBoost, LightGBM。这些是当今数据科学竞赛和工业界中最强大、最常用的算法之一。在风控领域这类算法也应用得较多。

Boosting算法的示例图如下:

Boosting训练过程为阶梯状,基模型按次序一一进行训练(实现上可以做到并行),基模型的训练集按照某种策略每次都进行一定的转化。对所有基模型预测的结果进行线性综合产生最终的预测结果。

3)Stacking(堆叠)

思想:组合不同的模型。首先用多个不同的基学习器(比如逻辑回归、决策树、SVM)对原始数据进行预测,然后将它们的预测结果作为新的特征,输入到一个元学习器(最终模型)中进行再次训练,以得出最终预测。

目标:发挥不同模型的特长,取长补短。

比喻:专家委员会中的“主席”,他听取所有专家的意见后,做出最终裁决。

Stacking算法的示例图如下:

将训练好的所有基模型对训练基进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测。

五、机器学习经典入门算法详解

无监督学习代表性的算法K 均值聚类(K-means Clustering)已在上面有详细介绍,这一部分内容主要介绍监督学习算法。

1.逻辑回归 – 最简单常用的分类算法

注意:虽然名字叫“回归”,但它是一个经典的分类算法,主要用于二分类。

思想:线性回归的输出是连续值,不适合分类。逻辑回归在线性回归的基础上,增加了一个Sigmoid函数,将连续输出映射到(0,1)区间,可以解释为属于某一类的“概率”。

模型:P(class=1) = Sigmoid(w*x + b)

决策:如果概率 > 0.5,则预测为类别1;否则预测为类别0。风控中应用的是预测概率,同时会把预测概率转换为评分值。

举例:根据肿瘤大小判断其为良性(0)还是恶性(1)。

2.K-近邻算法(k-Nearest Neighbor algorithm,KNN) - 简单而有效

思想:“物以类聚,人以群分”。一个数据点的类别由其最近邻居的多数投票决定。即如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

算法计算过程:

1)给定一个待预测的样本。

2)在训练集中找出与它最相似的K个样本(即“最近邻”)。

3)统计这K个样本中哪个类别最多,就将该类别赋予待预测样本。

关键参数:K值的选择至关重要。K太小容易受噪声影响,K太大可能包含太多其他类别的点。

如下图示中的五角星图形属于类别A还是B?

当K=3时,五角星属于B类;当K=6时,五角星属于A类。所以K的选择很重要。

3.决策树 - 直观易懂的“如果-那么”规则

思想:通过一系列“如果-那么”规则对数据进行递归分割,最终形成一棵树状结构。

结构:包含根节点、内部节点和叶节点。每个内部节点代表一个特征测试,每个分支代表测试结果,每个叶节点代表一个类别。

优点:非常直观,易于理解和解释,不需要复杂的数据预处理。

举例:预测一个人是否会购买电脑。决策树可能会先根据“年龄”分割,再根据“收入”分割,最后根据“是否是学生”得出结论。

决策树也分为分类树和回归树,分类树主要是预测二分类问题,回归树预测的是连续性的特征,以下是一个分类树的预测过程:

4.随机森林(Random Forest,Bagging算法) - 少数服从多数

思想:"三个臭皮匠,顶个诸葛亮"。随机森林通过构建大量的决策树,让每棵树单独进行预测,然后通过投票(分类)平均(回归)的方式得出最终结果,以此获得比单棵决策树更优、更稳定的性能。

核心机制:双重随机性

为了确保森林中的每棵树都"和而不同",避免所有树犯同样的错误,随机森林在训练时引入了两种随机性:

1)数据随机(Bagging):从原始训练集中有放回地随机抽取样本(自助采样法),用不同的数据子集训练不同的树。

2)特征随机:在决策树分裂节点时,不是从所有特征中选择最优特征,而是先从全部特征中随机选取一个特征子集,再从这个子集中选择最优特征进行分裂。

训练过程:

1)从原始数据集中使用自助采样法随机抽取 n 个样本,作为一个训练子集。

2)用这个训练子集构建一棵决策树。在树的每个节点需要分裂时:

a. 随机选择 m 个特征(m 通常为总特征数的平方根或对数)。

b. 从这 m 个特征中选出最佳分裂点。

3)重复步骤1和2,建立成百上千棵决策树,共同组成"森林"。

4)预测时,每棵树给出自己的预测结果,最终通过多数投票(分类)取平均值(回归)产生最终预测。

一个简单的例子:

预测某人是否会贷款违约。

1)森林中的树1根据子集1学习到:如果年龄>40且收入>5万,则不违约。

2)树2根据子集2学习到:如果负债比<50%且信用分>700,则不违约。

3)树3根据子集3学习到:如果无房产且工作<1年,则违约。

4)...树N

5)当一个新的客户进来时,所有树同时进行判断。如果大部分树预测为"不违约",则森林的最终输出就是"不违约"。

随机森林算法优势:

效果强大:通常能取得非常好的性能,是常用的基准模型之一。

抗过拟合:双重随机性有效降低了模型的方差,使其不易过拟合。

并行训练:每棵树可以独立构建,训练效率高。

为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可

5. 梯度提升决策树(GBDT)- 从错误中学习的进阶者

思想:"失败是成功之母"。GBDT是一种Boosting集成方法。它顺序地训练一系列决策树,每一棵新树的学习目标,都是去拟合前一棵树所遗留的残差(即预测值与真实值的差距)。通过这种"查漏补缺"的方式,逐步降低误差,将多个弱学习器提升为一个强学习器。

核心机制:梯度下降与残差拟合

1)它将模型的损失函数(如均方误差、交叉熵)的负梯度作为当前模型与真实值之间的 "残差"的近似值。

2)每一棵新树的学习目标,就是去拟合这个"负梯度"(即残差的方向)。

训练过程(以回归问题为例):

1)初始化:用一个简单的模型(如常数值,所有样本的均值)作为初始预测。F₀(x) = mean(y)。

2)迭代构建M棵树(for m = 1 to M):

a. 计算残差(负梯度):对于每一个样本 i,计算 rᵢₘ = yᵢ - Fₘ₋₁(xᵢ)。这代表了当前模型在样本 i 上的错误。

b. 拟合残差:用一棵新的决策树 hₘ(x) 去学习这些残差 rᵢₘ。这棵树的目标不是预测 y,而是预测当前模型的"错误"。

c. 更新模型:将新树的预测结果乘以一个学习率(η)(一个较小的数,如0.1),然后加到之前的模型上:Fₘ(x) = Fₘ₋₁(x) + η * hₘ(x)。

3)经过M轮迭代后,最终的模型就是所有树的预测结果的加权和:F(x) = F₀(x) + η * h₁(x) + η * h₂(x) + ... + η * h_M(x)。

一个生动的例子:

预测年龄。

真实年龄:25岁。

1)第一棵树:预测为20岁。残差 = 5岁(预测偏低)。

2)第二棵树:不去直接预测年龄,而是去学习"上一棵树预测的残差"。它发现上一个模型在"有工作经验"的人身上预测偏低,于是它针对这类人输出一个正的值(比如+3岁)。此时,组合预测为 20 + 0.1*3 = 20.3 岁。(学习率η=0.1,防止步子迈得太大)

3)第三棵树:继续学习新的残差(现在是 25 - 20.3 = 4.7 岁)。它可能发现"高学历"也是一个被忽略的因素,于是再输出一个正值。

4)... 如此反复,每一棵新树都在努力修正前几棵树犯下的错误,使最终预测值越来越接近25岁。

梯度提升决策树(GBDT)算法的优势:

1)精度极高:通常是所有传统机器学习算法中预测精度最高的之一。

2)灵活性好:可以处理各种类型的数据,并可以自定义损失函数。

与其他提升算法的关系:

XGBoost, LightGBM, CatBoost 这些都是GBDT的"工业级"实现,它们在原始GBDT的基础上,加入了正则化、对缺失值的处理、更高效的并行策略等优化,使其速度更快、效果更好、应用更广,成为了当今数据科学竞赛和工业界应用的"大杀器"。

随机森林与梯度提升决策树两类算法的差异对比:

六、模型评估

模型评估在之前文章【风控模型专题:模型开发与模型评估指标】中已有详细介绍,机器学习算法的评估也是类似的,主要评估指标AUC与KS,风控模型中还涉及到一些其他的评估指标,感兴趣可以翻阅相关文章,这里不再重复介绍。

这里主要介绍K折交叉验证的评估思想:

K折交叉验证(K-fold Cross Validation),初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一预测。

这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。

K折交叉验证图例如下:

K折交叉验证可以较大程度避免模型过拟合,但如果要确保模型的泛化能力,还是要留OOT验证样本,在跨时间样本上验证模型的效果。

本期到这里就结束了,写得有点长了。

另外有一个小疑问,有没有做海外的小伙伴来解惑一下:就是海外的风控模型中,大部分用的是机器学习的算法,为何会抛弃逻辑回归这类简单又容易理解和解释的算法呢?

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐