机器学习算法:机器学习算法入门--从概念到算法详解
作为一个一直在传统金融机构做风控模型的人过往工作经历中做过的风控模型绝大部分以逻辑回归评分卡为主机器学习模型也有涉及到一些但不算很多。传统的逻辑回归评分卡模型因为模型变量特征的可解释性以及每个变量均有具体的评分可以清晰的知道每个变量是如何影响评分的以及影响的具体分值所以传统金融机构用逻辑回归建模较多。机器学习算法内部相对比较黑箱虽然可以知道变量特征在对评分结果上的影响是正向还是负向但具体是如何影响的很难去量化和解释一旦评分发生波动很难定位到具体是哪个特征影响的以及影响程度这一点机器学习模型比不过逻辑回归模型。但近十年来互联网金融平台、海外信贷等发展较快机器学习算法在信贷风控领域应用逐渐增多特别是海外信贷看大部分的海外风控模型的招聘信息几乎都提到机器学习算法所以有必要来重新学习下机器学习算法。为了加深对算法的理解本期中很多图片都是从网上找来的如有侵权请联系我删除。本期主要是入门级科普教材以机器学习算法的基本概念为主包括以下内容一什么是机器学习二机器学习算法基本开发流程三机器学习类型监督学习、无监督学习四集成学习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 centroids2对于数据集中的每一个数据按照距离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中的基模型为弱模型。方差与偏差的图形理解示例如下三大主流集成方法1Bagging装袋思想通过自助采样法从训练集中产生多个不同的数据子集用每个子集独立地训练一个基学习器最后通过投票分类 或平均回归结合预测结果。目标降低方差减少过拟合。特别适用于像决策树这样容易过拟合的模型。典型算法随机森林它是Bagging思想与决策树的完美结合同时在训练每棵树时还对特征进行随机选择进一步增强了多样性。Bagging算法的示例图如下Bagging是从训练集进行子抽样组成每个基模型所需要的子训练集对所有基模型预测的结果进行综合产生最终的预测结果。2Boosting提升思想顺序地训练一系列基学习器。每一个后续模型都会更加关注前一个模型预测错误的样本。它是一个“从错误中学习”的过程。目标降低偏差将多个“弱学习器”提升为一个“强学习器”。典型算法AdaBoost, Gradient Boosting Machine (GBM), XGBoost, LightGBM。这些是当今数据科学竞赛和工业界中最强大、最常用的算法之一。在风控领域这类算法也应用得较多。Boosting算法的示例图如下Boosting训练过程为阶梯状基模型按次序一一进行训练实现上可以做到并行基模型的训练集按照某种策略每次都进行一定的转化。对所有基模型预测的结果进行线性综合产生最终的预测结果。3Stacking堆叠思想组合不同的模型。首先用多个不同的基学习器比如逻辑回归、决策树、SVM对原始数据进行预测然后将它们的预测结果作为新的特征输入到一个元学习器最终模型中进行再次训练以得出最终预测。目标发挥不同模型的特长取长补短。比喻专家委员会中的“主席”他听取所有专家的意见后做出最终裁决。Stacking算法的示例图如下将训练好的所有基模型对训练基进行预测第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值最后基于新的训练集进行训练。同理预测的过程也要先经过所有基模型的预测形成新的测试集最后再对测试集进行预测。五、机器学习经典入门算法详解无监督学习代表性的算法K 均值聚类(K-means Clustering)已在上面有详细介绍这一部分内容主要介绍监督学习算法。1逻辑回归 – 最简单常用的分类算法注意虽然名字叫“回归”但它是一个经典的分类算法主要用于二分类。思想线性回归的输出是连续值不适合分类。逻辑回归在线性回归的基础上增加了一个Sigmoid函数将连续输出映射到(0,1)区间可以解释为属于某一类的“概率”。模型P(class1) Sigmoid(w*x b)决策如果概率 0.5则预测为类别1否则预测为类别0。风控中应用的是预测概率同时会把预测概率转换为评分值。举例根据肿瘤大小判断其为良性0还是恶性1。2K-近邻算法k-Nearest Neighbor algorithmKNN - 简单而有效思想“物以类聚人以群分”。一个数据点的类别由其最近邻居的多数投票决定。即如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别则该样本也属于这个类别。算法计算过程1给定一个待预测的样本。2在训练集中找出与它最相似的K个样本即“最近邻”。3统计这K个样本中哪个类别最多就将该类别赋予待预测样本。关键参数K值的选择至关重要。K太小容易受噪声影响K太大可能包含太多其他类别的点。如下图示中的五角星图形属于类别A还是B?当K3时五角星属于B类当K6时五角星属于A类。所以K的选择很重要。3决策树 - 直观易懂的“如果-那么”规则思想通过一系列“如果-那么”规则对数据进行递归分割最终形成一棵树状结构。结构包含根节点、内部节点和叶节点。每个内部节点代表一个特征测试每个分支代表测试结果每个叶节点代表一个类别。优点非常直观易于理解和解释不需要复杂的数据预处理。举例预测一个人是否会购买电脑。决策树可能会先根据“年龄”分割再根据“收入”分割最后根据“是否是学生”得出结论。决策树也分为分类树和回归树分类树主要是预测二分类问题回归树预测的是连续性的特征以下是一个分类树的预测过程4随机森林Random ForestBagging算法 - 少数服从多数思想三个臭皮匠顶个诸葛亮。随机森林通过构建大量的决策树让每棵树单独进行预测然后通过投票分类或平均回归的方式得出最终结果以此获得比单棵决策树更优、更稳定的性能。核心机制双重随机性为了确保森林中的每棵树都和而不同避免所有树犯同样的错误随机森林在训练时引入了两种随机性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...树N5当一个新的客户进来时所有树同时进行判断。如果大部分树预测为不违约则森林的最终输出就是不违约。随机森林算法优势效果强大通常能取得非常好的性能是常用的基准模型之一。抗过拟合双重随机性有效降低了模型的方差使其不易过拟合。并行训练每棵树可以独立构建训练效率高。为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可5. 梯度提升决策树GBDT- 从错误中学习的进阶者思想失败是成功之母。GBDT是一种Boosting集成方法。它顺序地训练一系列决策树每一棵新树的学习目标都是去拟合前一棵树所遗留的残差即预测值与真实值的差距。通过这种查漏补缺的方式逐步降低误差将多个弱学习器提升为一个强学习器。核心机制梯度下降与残差拟合1它将模型的损失函数如均方误差、交叉熵的负梯度作为当前模型与真实值之间的 残差的近似值。2每一棵新树的学习目标就是去拟合这个负梯度即残差的方向。训练过程以回归问题为例1初始化用一个简单的模型如常数值所有样本的均值作为初始预测。F₀(x) mean(y)。2迭代构建M棵树for m 1 to Ma. 计算残差负梯度对于每一个样本 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验证样本在跨时间样本上验证模型的效果。本期到这里就结束了写得有点长了。另外有一个小疑问有没有做海外的小伙伴来解惑一下就是海外的风控模型中大部分用的是机器学习的算法为何会抛弃逻辑回归这类简单又容易理解和解释的算法呢