ml课程:机器学习算法串讲及相关常见问题总结

以下是我的学习笔记,以及总结,如有错误之处请不吝赐教。

机器学习的两条路线

  • 线性模型:逻辑回归-SVM-MLP(多层感知器
  • 树模型:随机森林-XGBT-lightGBM

问题1:机器学习算法有计算型和规则型这两类的算法,请问这两类下各自的都有哪些算法,以及您对这个分类思路的理解?

  • 计算型:LR逻辑回归、SVM支持向量机、NN神经元网络等通过计算确定参量,基于阈值和得分向量进行分类而达到建立模型的目的;
  • 规则型:DT决策树、RF随机森林、RT回归树、GBDT梯度提升树 通过构建规则进行分类达到建模的目的。

问题2:同样是进行分类任务,LR与决策树在解决问题的思想上有哪些不同?

  • 逻辑回归LR属于计算型算法,它通过历史数据对未来结果发生的概率建模和预测。LR模型建立的回归方程描述自变量和因变量之间的关系,或者说自变量对因变量的影响程度,并对因变量进行预测。其中因变量是我们希望获得的结果,自变量是影响结果的潜在因素。我们可以通过最小化损失函数计算出每一个特征对应的权重,通过特征的加权线性组合得到数值型的结果进行分类或回归。
  • 决策树(Decision Tree)属于规则型算法,它在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。

问题3:为什么说决策树在进行非线性表达这个层面要优于LR?

  • 决策树本身是建立在非线性映射的基础上的,一般情况下它不能把因变量与元变量之间的关系表达为线性方程的方式。

  • 逻辑回归算法是建立在线性映射的基础上的,基于线性方程的模型。除非特征本身是非线性的,不然逻辑回归无法处理非线性问题。

问题4:树模型相对LR等线性模型的优点?

  • 不需要幅度缩放和归一化
  • 可以进行非线性切分非线性的特征,而LR拟合非线性则需要对特征做非线性变换
  • 树模型不需要对离散值进行处理就可以训练
  • 像xgboost等融合算法可以自动处理缺失值
  • 树与树之间支持并行运算

问题5:请解释决策树结构中的各个组成部分?

  • 根节点:最原始的数据集
  • 内部节点:对应于某个属性上的测试
  • 分支:对应于该测试的一种可能结果
  • 叶子节点:对应于一个预测结果
  • 决策树模型由结点和(有向)边组成。

  • 结点分成有内部结点和叶结点两种类型。内部结点表示一个特征,叶节点表示一个类别。 一个决策树包含三种类型的节点:决策节点:通常用矩形框来表示,机会节点:通常用圆圈来表示,终结点:通常用三角形来表示

  • 使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。(参考

问题6:决策树是如何完成回归任务的?

  • 把整个特征空间X切分成J个没有重叠的区域R1,R2,R3...Rj
  • 自顶向下贪婪式的递归
  • 其中区域Rj中的每个样本我们都给一样的预测结果\tilde{y_{Rj}} = \frac{1}{n}\sum_{j\in Rj}y_{i},其中n是Rj中的总样本数

机器学习类型:

  • 非监督学习:聚类、降维、关联规则、主题模型LDA
  • 监督学习:分类和回归。
  • 强化学习。

问题1:常见的机器学习任务有哪几大类别,具体说说每个类别又有哪些应用?

  • 回归方法:是一种对数值型连续随机变量进行预测和建模的监督学习算法,也就是根据之前的数据建模,然后根据新的输入预测出一个准确的输出值。使用案例一般包括房价预测、股票走势或测试成绩等连续变化的案例。回归任务的特点是标注的数据集具有数值型的目标变量。也就是说,每一个观察样本都有一个数值型的标注真值以监督算法。
  • 分类方法:是一种对离散型随机变量建模或预测的监督学习算法,也就是将事物打上一个标签。使用案例包括邮件过滤、金融欺诈和预测雇员异动等输出为类别的任务。许多回归算法都有与其相对应的分类算法,分类算法通常适用于预测一个类别(或类别的概率)而不是连续的数值。
  • 聚类:是一种无监督学习任务,该算法基于数据的内部结构寻找观察样本的自然族群(即集群)。使用案例包括细分客户、新闻聚类、文章推荐等。因为聚类是一种无监督学习(即数据没有标注),并且通常使用数据可视化评价结果。如果存在「正确的回答」(即在训练集中存在预标注的集群),那么分类算法可能更加合适。

问题2:机器学习的学习策略大致可分为有监督学习与无监督学习,请谈谈您对这两类策略的认识。

  • 监督学习:从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求是包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注的。常见的监督学习算法包括回归分析和统计分类。
  • 无监督学习:与监督学习相比,无监督学习的训练集没有人为标注的结果。常见的无监督学习算法有生成對抗網絡(GAN)、聚类。监督学习和非监督学习的差别就是训练集目标是否人标注,他们都有训练集且都有输入和输出。
  • 增强学习/强化学习:通过观察来学习做成如何的动作。每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。

问题3:列举你所知道的机器学习任务中的一些术语并给出解释。(例如,特征,标签,训练等)

  • 标签:是我们要预测的事物,即简单线性回归中的 y 变量。
  • 特征:是输入变量,即简单线性回归中的 x 变量。简单的机器学习项目可能会使用单个特征,而比较复杂的机器学习项目可能会使用数百万个特征。
  • 样本:是指数据的特定实例。样本可以分为两类:①有标签样本,②无标签样本,有标签样本同时包含特征和标签。
  • 模型:定义了特征与标签之间的关系。
  • 训练:表示创建或学习模型。通过向模型展示有标签样本,让模型逐渐学习特征与标签之间的关系。
  • 推断:表示将训练后的模型应用于无标签样本,也就是说,使用训练后的模型来做出有用的预测 (y')。

问题4:GBDT 和 XGBOOST 的区别有哪些?

  • 传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。
  • 传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下,xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。
  • xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性。

  • Shrinkage(缩减),相当于学习速率(xgboost中的eta)。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。实际应用中,一般把eta设置得小一点,然后迭代次数设置得大一点。(补充:传统GBDT的实现也有学习速率)

  • 列抽样(column subsampling)。xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。
  • 对缺失值的处理。对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向。
  • xgboost工具支持并行。boosting不是一种串行的结构吗?怎么并行的?注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。xgboost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。

  • 可并行的近似直方图算法。树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以xgboost还提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点。

问题5:xgboost代价函数里加入正则项,是否优于cart的剪枝?

  • 决策树的学习过程就是为了找出最优的决策树,然而从函数空间里所有的决策树中找出最优的决策树是NP-C问题,所以常采用启发式(Heuristic)的方法,如CART里面的优化GINI指数、剪枝、控制树的深度。这些启发式方法的背后往往隐含了一个目标函数,这也是大部分人经常忽视掉的。xgboost的目标函数如下:

    其中正则项控制着模型的复杂度,包括了叶子节点数目T和leaf score的L2模的平方:

    那这个跟剪枝有什么关系呢??? 跳过一系列推导,我们直接来看xgboost中树节点分裂时所采用的公式:

    这个公式形式上跟ID3算法(采用entropy计算增益) 、CART算法(采用gini指数计算增益) 是一致的,都是用分裂后的某种值 减去 分裂前的某种值,从而得到增益。为了限制树的生长,我们可以加入阈值,当增益大于阈值时才让节点分裂,上式中的gamma即阈值,它是正则项里叶子节点数T的系数,所以xgboost在优化目标函数的同时相当于做了预剪枝。另外,上式中还有一个系数lambda,是正则项里leaf score的L2模平方的系数,对leaf score做了平滑,也起到了防止过拟合的作用,这个是传统GBDT里不具备的特性。(参考一参考二

问题6:谈谈什么是生成式模型与判别式模型,以及各自特点?

  • 生成模型:由数据学习联合概率分布?(?,?)P(X,Y),然后求出条件概率分布?(?|?)P(Y|X)作为预测的模型;特点:①可以还原出概率分布?(?,?)P(X,Y)、②学习收敛速度更快、③存在隐变量的时候仍然可以使用生成模型。
  • 判别模型:由数据直接学习决策函数?(?)f(X)或者条件概率分布?(?|?)P(Y|X)作为预测的模型;特点:①直接学习的是条件概率?(?|?)P(Y|X)或决策函数?(?)f(X),通常准确率更高②可以抽象、定义特征,并增加、减少特征,简化学习问题。

机器学习步骤:

  • 定义假设函数:拟合x到y映射
  • 找到损失函数:logloss、交叉熵损失、合页损失、指数损失、01损失
  • 寻求优化函数:梯度下降、牛顿法、拟牛顿法、Momentum动量算法
  • 定义评价指标和方法:具体可以看ml课程:模型融合与调优及相关案例代码

问题1:分类和回归的评估指标分别有哪些?

  • 分类问题:主要有错误率、精度、查准率(准确率),查全率(召回率)、F1值、AUC(area under the ROC curve): 

  • 回归问题:mse、mae、r方、rmse等等:

问题2:什么是损失函数?请写出回归任务中的均方误差的数学公式,并解释

  • 损失函数(loss function)是用来估量你模型的预测值f(i)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(i))来表示,损失函数越小,模型的鲁棒性就越好。公式如上图,其中n是数据样本数.
  • 主要分为:mse(均方误差损失,线性回归损失)、log损失(逻辑回归损失)、合页损失(支持向量机损失)参考、交叉熵损失(softmax分类器损失)参考,交叉熵损失永不满足。

问题3:简单介绍下逻辑回归:

  • 逻辑回归虽然叫回归,其实是通过确定决策边界,解决的是分类问题
  • 逻辑回归的损失函数为log损失,没用mse作为损失函数是因为在mse上为非凸的
  • 损失函数可以表示为:最大化MLE=\prod p_{xi}(1-p_{xj}),但是小于零的数连乘会造成无法计算,所以取了log函数,然后取负数,求其最小值。
  • 具体求导公式参考:ml课程:线性回归、逻辑回归入门(含代码实现)求导推倒过程

问题4:模型的泛化能力是指?

  • 泛化能力是模型中对新数据的预测能力。在实际中如果对训练数据能很好的拟合,而对验证集的效果较差,泛化能力较弱,可能出现过拟合。

问题5:为什么要为模型添加正则化项?

  • 正则化是为了解决过拟合问题,机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1-norm和ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。

  • L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)。

问题6:请结合公式进行说明结构风险最小化的含义?

  • 经验风险最小化的公式定义为:

  • 结构风险最小化的公式定义为:

  • 可以看到,结构风险在经验风险的基础上加上了表示模型复杂度的正则项或惩罚项,防止在数据样本小或者模型能力强的情况下出现过拟合。 ?(?)J(f)为模型的复杂度,模型 ?f 越复杂,?(?)J(f)越大。?>=0λ>=0是权衡经验风险和模型复杂度的系数。

To be continue......

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值