赞
踩
本文结合了博主的文章(机器学习分类算法之XGBoost(集成学习算法)--王小王-123)与自己的学习笔记,自己也没有学到位,因此仅供参考,也欢迎大家的指正。
线性回归( )的关键问题在于确定参数 w 和 b ,使得拟合输出和真实输出之间尽可能接近。在回归任务中,我们通常使用均方误差来度量预测与标签之间的损失,所以回归任务的优化目标就是使拟合输出与真实输出之间的均方误差最小化。
基于均方误差最小化的最小二乘法是线性回归模型求解的基本方法,通过最小均方误差和R平方系数可以评估线性回归的拟合效果。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。
基于 sklearn 的线性回归模型:
- from sklearn import linear_model
- from sklearn.metrics import mean_squared_error, r2_score
-
- regr = linear_model.LinearRegression()
- regr.fit(X_train, y_train)
-
- y_pred = regr.predict(X_test)
-
- print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred))
- print("R Square score: %2.f" % r2_score(y_test, y_pred))
对数几率回归是一种线性分类模型。
线性模型如何执行分类任务呢?只需要找到一个单调可微函数将分类任务的真实标签y与线性回归模型的预测值进行映射。在线性回归中,我们直接令模型学习逼近真实标签y,但在对数几率回归中,我们需要找到一个映射函数将线性回归的预测值转化为0/1值。
Sigmoid函数正好具备上述条件,单调可微,取值范围为(0,1),具有良好的求导特性且导数可用自身来表达。Sigmoid函数的图像如下图所示。
下面为对数几率回归的数学推导内容。
作为一种线性分类模型,对数几率回归在金融风控、计算广告、推荐系统和医疗健康领域都有着广泛应用。对数几率回归是用线性回归的结果来拟合真实标签的对数几率。同时,我们也可以将对数几率回归看作由条件概率分布表示的分类模型。另外,对数几率回归也是感知机模型、神经网络和支持向量机等模型的基础。
名称 | XGBoost (eXtreme Gradient Boosting ) |
作者 | 陈天奇(华盛顿大学博士) |
基础 | GBDT |
所属 | boosting迭代型、树类算法 |
适用范围 | 分类、回归 |
优点 | 速度快、效果好、可处理大规模数据、支持多种语言和自定义函数等。 |
缺点 | 算法参数过多,调参复杂、不适合处理超高维特征数据,对原理不清楚很难使用好XGBoost。 |
XGBoost 本质上还是一个 GBDT(Gradient Boosting Decision Tree),但是力争把速度和效率发挥到极致。XGBoost 通过将损失函数展开到二阶导数,使其更能逼近真实损失。XGBoost的目标函数如下图所示。
(1)不断地进行特征分裂来生长一棵树,不断地添加树。每次添加一棵树就是学习一个新函数 f(x) 去拟合上次预测的残差。
(2)当我们训练完成得到 k 棵树需要预测一个样本的分数时,其实就是根据这个样本的特征落到每棵树中对应的一个叶子节点,每个叶子节点对应一个分数。
(3)最后只需将每棵树对应的分数加起来就是该样本的预测值。
例如我们要预测一家人对电子游戏的喜好程度,考虑到年龄,年轻人可能更喜欢电子游戏,在性别上,男性会更可能喜欢电子游戏。故先根据年龄区分小孩大人,再通过性别进行区分就得到了一棵分类树;还可根据日常是否使用电脑来进行评估对电子游戏的喜好,因此又得到了一颗分类树。过程如下图所示。
就这样训练出了两棵树,类似GBDT的原理,两棵树的结论累加起来便是最终的结论。
XGBoost 也需将多棵树的得分累加得到最终的结果(每一次迭代都是在现有基础上,增加一棵树去拟合前面树的预测结果与真实值之间的残差)。那我们如何选择每一轮加入什么 f 呢?答案是非常直接的,选取的 f 要使得我们的目标函数尽量地减小。实质是把样本分配到叶子节点对应一个obj ,优化过程就是obj 优化。也就是分裂节点到叶子不同的组合,不同的组合对应不同的 obj ,所有的优化围绕这个思想展开。
(1)GBDT 是机器学习算法,XGBoost 是该算法的工程实现。
(2)在使用 CART 作为基分类器时,XGBoost 显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型泛化能力。
(3)GBDT 在模型训练时只使用了代价函数的一阶导数信息,而XGBoost 对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
(4)传统的GBDT 采用CART 作为基分类器,XGBoost 支持多种类型的基分类器,比如线性分类器。
(5)传统的GBDT在每轮迭代时使用全部的数据,XGBoost 则采用了与随机森林相似的策略,支持对数据进行采样。
(6)传统的GBDT没有设计对缺失值进行处理, XGBoost 够自动学习出缺失值的处理策略。
(1)是否需要做特征筛选?
XGBoost 可以做特征筛选,也就是重要性特征排序,那我们的模型算法需要做特征筛选吗?根据经验来说是不一定,有时不剔除特征反而更好。有一种说法为:对于有惩罚项的机器学习算法不需要,特征选择更多见到的是逻辑回归这种有考虑置信区间的算法;因为要考虑置信区间(达不到95%以上的可信度就舍弃),所以要做特征取舍,而做特征取舍就要考虑多重共线性问题,因共线性会直接影响特征的重要性表现。
事实上也是如此,有时基于决策树、随机森林等做的特征筛选不但没有提高模型效果,还降低了。总而言之结果是不确定的,要根据具体情况进行选择,值得注意的是对于不清楚的特征需要谨慎,因为这很有可能是短期有效的垃圾特征。
(2)是否需要对数据集进行归一化?
不需要。首先归一化是对连续特征来说的,连续特征归一化的主要作用是进行数值缩放,而数值缩放的目的是解决梯度下降时迭代次数过多(等高线为椭圆)的问题。XGBoost等树模型是阶跃的,不可导也就不能进行梯度下降;树模型是通过寻找特征的最优分裂点来完成优化的。总之,归一化不会改变分裂点的位置,因此XGBoost 不需要进行归一化。
隐马尔可夫模型(Hidden Markov Model)是统计模型,用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步的分析,例如模式识别。
马尔可夫链为状态空间中从一个状态到另一个状态的随机过程。该过程要求具备“无记忆”的性质,即下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。
HMM模型做了两个很重要的假设:
(1)齐次马尔可夫模型假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态。
(2)观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态。
使用HMM模型的问题一般有两个特征:
(1)问题是基于序列的,比如时间序列或状态序列。
(2)问题中有两类数据。一类序列数据是可以观测到的(观测序列);而另一类序列数据是不能观察到的(隐藏/状态序列)。
实际生活中有很多这样的问题。比如老师在写课件时,从键盘上敲出来的一系列字符就是观测序列,而实际想写的话就是隐藏状态序列,输入法的任务就是从敲入的一系列字符尽可能地猜测老师接下来要写的话,并把最可能的词语放在最前推荐给老师,这种问题就可看作一个HMM模型。
再比如老师上课时,发出一串连续的声音就是观测序列,而实际想表达的一段话就是隐藏状态序列,而我们大脑的任务就是从连串的声音中判断出老师想要表达的内容。
一个HMM模型可以由隐藏状态初始概率分布 ,状态转移概率矩阵 和 观测状态概率矩阵 决定。因此,HMM模型可以用一个三元组 表示如下:
(1)评估观察序列的概率------前向算法、后向算法
即给定模型 和观测序列的条件下,计算观测序列出现的概率。这个问题是HMM三个经典问题中最简单的。
(2)求最可能出现的隐藏(状态)序列------维特比算法
即给定模型 和观测序列的条件下,求最可能出现的对应的状态序列。这个问题的复杂度居中。
(3)模型参数学习问题------鲍姆-韦尔奇算法
即给定模型观测序列,估计模型 的参数,使得在该模型下观测序列的条件概率最大,即最容易出现。这个问题是三个问题中最难的。
鲍姆-韦尔奇算法原理使用的就是EM算法的原理,首先需要在E步求出联合分布 基于条件概率 的期望 ,其中 为当前的模型参数:
然后在M步最大化这个期望,得到更新的模型参数:
重复进行E步和M步的迭代,直到模型参数的值收敛为止。
看定义和公式难懂,下面以抽球游戏为例来讲解HMM模型的前两个经典问题。
(1)首先看定义。
· HMM是关于时序的概率模型,描述一个隐藏的马尔可夫链随机生成不可观测的随机状态序列,再由各个状态生成一个观测而产生随机序列的过程。
· 条件随机场是在给定一组输入随机变量的条件下,另一组输出随机变量的条件概率模型,并且该组输出随机变量构成马尔可夫随机场。
从以上定义我个人理解的就是HMM是一个生成观测序列的过程(例如输入法推荐接下来想打的字),而CRF是一个生成状态(隐藏)序列的过程(例如词性标注,给定一个句子给里面的词标注上不同的词性)。
(2)其次是模型性质不同。
· HMM(隐马尔可夫模型)是一种有向概率图和生成式模型。
· CRF(条件随机场)是一种概率无向图和判别式模型。
概率模型提供了一种描述框架,将学习任务归结于计算变量的概率分布。在概率模型中,利用已知变量推测未知变量的分布称为“推断“,其核心是如何基于可观测变量推测出未知变量的条件分布。
假定所关心的集合变量为Y,可观测变量集合为O,其它变量集合为R。生成式模型直接对联合分布 P(Y,R,O) 进行建模, 而判别式模型则是对条件分布 P(Y,R|O) 进行建模。给定一组观测变量值,推断就是要由 P(Y,R,O) 或 P(Y,R|O) 得到条件概率分布 P(Y|O).
条件随机场是在给定一组输入随机变量的条件下,另一组输出随机变量的条件概率模型,并且该组输出随机变量构成马尔可夫随机场。
· 马尔可夫性质:即下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。(食堂的饭就是马尔可夫饭,即今天的饭只与昨天的饭有关^v^)
· 随机场:当给每一个位置中按照某种分布随机赋予相空间的一个值之后,其全体就叫做随机场。
(其中有两个概念:位置 和 相空间。“位置”好比是一亩亩农田,“相空间”好比是种的各种庄稼。)
· 马尔可夫随机场:具有马尔可夫特性的随机场。拿种地打比方,如果任意一块地里种的庄稼种类仅与它邻近地里种的庄稼种类有关,与其它地方的庄稼种类无关,那么这些地里种的庄稼的集合,就是一个马尔可夫随机场。
下面给出链式CRF的图示,可以理解为实际应用中的词性标注,即输入一个句子给其中的词语进行词性标注。
一般我们说的CRF序列建模,指的是X和Y具有相同的图结构,即线性链CRF。假设X=(X1,X2,...,Xn),Y=(Y1,Y2,...,Yn)均为线性链表示的随机变量序列,在给定X的条件下,Y的条件概率分布 P(Y|X) 构成条件随机场,即满足马尔可夫性:
则 P(Y|X)为线性链CRF。
从以上描述中可得 条件随机场就是一个条件概率分布P(Y|X) 。
概率无向图的联合概率分布可以因式分解为若干个最大团的乘积(无向图G中任何两个均有边连接的结点子集就称为团;若C为无向图G的一个团,且不能再加进任何一个节点使其成为更大的团,那么C就是G的最大团)。由上图可知,每一个(Yi~Xi) 对即为一个最大团。基于以上特征我们来看CRF的建模总公式。
假设 P(Y|X) 为线性链CRF,在随机变量X取值为x的条件下,随机变量Y取值为y的条件概率表达式为:
其中 和 均为特征函数,分别表示转移特征和状态特征。例如词性标注中一定的语法规范就可以规约为CRF的特征函数。 和 为对应特征函数的权重。
和 分别为输入的观测序列和输出的标注序列。从公式中可看到,转移特征 依赖于当前位置和前一个位置, 满足特定的转移条件时取1,否则为0。状态特征 则仅依赖于当前位置,同样,满足某一状态条件时取1,否则为0。
我们可以得出结论:一个线性链CRF由特征函数 和 以及对应的权重 和 确定。
跟HMM一样,CRF也有概率计算、序列标注和参数估计三大经典问题。
(1)概率计算--------前向/后向算法。
(2)序列标注--------维特比算法。
(3)参数估计--------基于各类优化算法的极大似然估计,具体的优化算法有梯度下降法、改进的迭代尺度法和拟牛顿法等。
第三个问题的解决办法与HMM不一致,HMM采用的是EM算法。
CRF是一个关于时序预测的判别式概率模型,描述了在给定输入随机变量X的条件下,输出随机变量Y的概率无向图模型,也称马尔可夫随机场。CRF的建模表达式为参数化的对数线性模型,可看作对数几率回归的拓展。除非特别说明,一般情况下的CRF模型指的是线性链CRF。
条件随机场和马尔可夫随机场均使用团上的势函数定义概率,两者在形式上没有显著区别,但条件随机场处理的是条件概率,而马尔可夫随机场处理的是联合概率。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。