目录
一、线性回归
线性回归是一种评估自变量X与因变量Y之间的关系
>画出的图像是直的(简单线性回归是直线,多元线性回归是超平面)
1、正向拟合函数:
2、如何衡量损失:
f(x)=ax+b为预测值,y为真实值。
i代表n组数据中的第i组。这里称J(a,b)为损失函数,明显可以看出它是个二次函数,即凸函数(这里的凸函数对应中文教材的凹函数),所以有最小值。当J(a,b)取最小值的时候,f(x)和y的差异最小,然后我们可以通过J(a,b)取最小值来确定a和b的值。
3、优化策略:
当函数是一元函数时,梯度就是导数。这里我们用一个最简单的例子来讲解梯度下降法,然后推广理解更为复杂的函数
在梯度下降法中,先给参数a赋予一个预设值,然后再一点点的修改a,直到J(a)最小,确定a的值。(其中α为正数)
假设给a取的预设值是a1的话,那么a对J(a)的导数为负数,则
也为负数,所以
意味着a向右移一点。然后重复这个动作,直到J(a)到达最小值。
同理,假设给a取的预设值是a2的话,那么a对J(a)的导数为正数,则
意味着a向左移一点。然后重复这个动作,直到J(a)到达最小值。
所以我们可以看到,不管a的预设值取多少,J(a)经过梯度下降法的多次重复后,最后总能到达最小值。
二、逻辑回归
逻辑回归是机器学习中的一种分类模型,逻辑回归也是一种分类方法。
1 正向拟合函数
1.1 线性函数生成
其中
逻辑回归的输入就是一个线性回归的结果。
1.2 Sigmoid激活函数
判断标准:
>输出的结果输入到Sigmoid函数当中
>输出结果:[0,1]区间的一个概率值,默认0.5为阈值。
预测大于0.5默认为正例(1),小于0.5默认为反例(0)
2、如何衡量损失
逻辑回归的损失称之为对数似然损失,公式如下:
>分开类别
怎么理解单个的式子呢?这个要根据log的函数图像来理解
3、优化策略
同样使用梯度下降优化算法
三、决策树
引言
决策树之所以叫决策树,就是因为它的结构是树形状的,如果你之前没了解过树这种数据结构,那么你至少要知道以下几个名词是什么意思。
- 根节点:最顶部的那个节点
- 叶子节点:每条路径最末尾的那个节点,也就是最外层的节点
- 非叶子节点:一些条件的节点,下面会有更多分支,也叫做分支节点
- 分支:也就是分叉
1. ID3 算法
1.1前向输出
决策树算法前向输出不想线性回归那样拟合函数,ID3在每个节点通过分支对模型进行预测
1.2 损失衡量
信息增益
- 计算分支属性对于样本集分类好坏程度的度量——信息增益
- 由于分裂后样本集的纯度提高,则样本集的熵降低,熵降低的值即为该分 裂方法的信息增益
1.3优化策略
由根结点通过计算信息增益最大的作为根节点,然后对非叶子节点继续进行信息增益计算,选取下一个分支特征。不断重复此步骤,直至所有样本属于同 一类,或者达到要求的分类条件为止
2. C4.5算法
C4.5算法总体思路与ID3类似,都是通过构造决策树进行分类,其区别在于分支的处理,在分支属性的选取上,ID3算法使用信息增益作为度量,而C4.5算法引入了信息增益率作为度量
由信息增益率公式中可见,当𝑣比较大时,信息增益率会明显降低,从而在一定程度上能够解决ID3算法存在的往往选择取值较多的分支属性的问题
在前面例子中,假设选择“饮食习性”作为分支属性,其信息增益率为
3. C5.0算法
C5.0算法是Quinlan在C4.5算法的基础上提出的商用改进版本,目的是对含有 大量数据的数据集进行分析
C5.0算法与C4.5算法相比有以下优势:
– 决策树构建时间要比C4.5算法快上数倍,同时生成的决策树规模也更小,拥有更少的叶子结
点数
– 使用了提升法(boosting),组合多个决策树来做出分类,使准确率大大提高
– 提供可选项由使用者视情况决定,例如是否考虑样本的权重、样本错误分类成本等
4. CART算法
1、基尼指数 Gini指标
CART算法在分支处理中分支属性的度量指标
在前面例子中,假设选择“会飞”作为分支属性,其Gini指标为
四、回归树
回归树用于处理输出为连续型的数据,回归在选取划分点,希望划分的两个分支的误差越小越好。
1、前向输出
回归树类似于分类树,区别在于回归树的每个节点(不一定是叶子节点)都会得到一个预测值,以年龄为例,该预测值是该节点上所有人年龄的均值。
2、损失衡量
最小化均方差:回归树最好的标准不再是最大熵,而是最小化均方差即(每个人的年龄-预测年龄)^2 的总和 / N。也就是被预测出错的人数越多,错的越离谱,均方差就越大,
3、优化策略
穷举每一个特征的每个阈值的最小均方差作为分割点
五、随机森林
随机森林生成n棵决策树。然后这n棵决策树进行投票或平均得出最终结果,而每棵树的生成方式为随机选取样本,随机选取特征。随机森林既可以用于回归也可以用于分类。
六、AdaBoost
引言
boosting:用于分类、回归问题,从弱学习器开始加强,通过加权来进行训练,即一种迭代算法,通过不断使用一个弱学习器弥补前一个弱学习器的“不足”的过程,来串行的构造一个较强的学习器,这个学习器能够使目标函数值足够小,boosting是一种串行算法,具有代表的就是adaboost。
adaboost是一种迭代算法,在每一轮中加入一个新的弱分类器,知道达到某个预定的足够小的错误率。其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的分类器。
1、adaboost计算步骤:
>新增弱分类器WeakClassifier(i)与弱分类器权重alpha(i)
>通过数据集data与数据权重W(i)训练弱分类器WeakClassifier(i),并得出其分类错误率,以此计算 出其弱分类器权重alpha(i)
>通过加权投票表决的方法,让所有弱分类器进行加权投票表决的方法得到最终预测输出,计算最终分类错误率,如果最终错误率低于设定阈值(比如5%),那么迭代结束;如果最终错误率高于设定阈值,那么更新数据权重得到W(i+1)
2、损失衡量
分类错误率:通过数据集data与数据权重W(i)训练弱分类器WeakClassifier(i),并得出其分类错误率。
3、优化策略
1、关于Adaboost的两种权重
Adaboost算法中有两种权重,一种是数据的权重,另一种是弱分类器的权重。其中,数据的权重主要用于弱分类器寻找其分类误差最小的决策点,找到之后用这个最小误差计算出该弱分类器的权重(发言权),分类器权重越大说明该弱分类器在最终决策时拥有更大的发言权。
2、Adaboost数据权重与弱分类器
刚刚已经介绍了单层决策树的原理,这里有一个问题,如果训练数据保持不变,那么在数据的某个特定维度上单层决策树找到的最佳决策点每一次必然都是一样的,为什么呢?因为单层决策树是把所有可能的决策点都找了一遍然后选择了最好的,如果训练数据不变,那么每次找到的最好的点当然都是同一个点了。
所以,这里Adaboost数据权重就派上用场了,所谓“数据的权重主要用于弱分类器寻找其分类误差最小的点”,其实,在单层决策树计算误差时,Adaboost要求其乘上权重,即计算带权重的误差。
举个例子,在以前没有权重时(其实是平局权重时),一共10个点时,对应每个点的权重都是0.1,分错1个,错误率就加0.1;分错3个,错误率就是0.3。现在,每个点的权重不一样了,还是10个点,权重依次是[0.01,0.01,0.01,0.01,0.01,0.01, 0.01,0.01,0.01,0.91],如果分错了第1一个点,那么错误率是0.01,如果分错了第3个点,那么错误率是0.01,要是分错了最后一个点,那么错误率就是0.91。这样,在选择决策点的时候自然是要尽量把权重大的点(本例中是最后一个点)分对才能降低误差率。由此可见,权重分布影响着单层决策树决策点的选择,权重大的点得到更多的关注,权重小的点得到更少的关注。
在Adaboost算法中,每训练完一个弱分类器都就会调整权重,上一轮训练中被误分类的点的权重会增加,在本轮训练中,由于权重影响,本轮的弱分类器将更有可能把上一轮的误分类点分对,如果还是没有分对,那么分错的点的权重将继续增加,下一个弱分类器将更加关注这个点,尽量将其分对。
这样,达到“你分不对的我来分”,下一个分类器主要关注上一个分类器没分对的点,每个分类器都各有侧重。
3、Adaboost分类器的权重
由于Adaboost中若干个分类器的关系是第N个分类器更可能分对第N-1个分类器没分对的数据,而不能保证以前分对的数据也能同时分对。所以在Adaboost中,每个弱分类器都有各自最关注的点,每个弱分类器都只关注整个数据集的中一部分数据,所以它们必然是共同组合在一起才能发挥出作用。所以最终投票表决时,需要根据弱分类器的权重来进行加权投票,权重大小是根据弱分类器的分类错误率计算得出的,总的规律就是弱分类器错误率越低,其权重就越高。
六、GBDT算法
原理:
GBDT,全名为梯度提升树,使用的是boosting的思想。GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差)。当然了,它里面的弱分类器的表现形式就是各棵树。
举一个非常简单的例子,比如我今年30岁了,但计算机或者模型GBDT并不知道我今年多少岁,那GBDT咋办呢?
- 它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁;
- 接下来在第二棵树中,用6岁去拟合剩下的损失,发现差距还有4岁;
- 接着在第三棵树中用3岁拟合剩下的差距,发现差距只有1岁了;
- 最后在第四课树中用1岁拟合剩下的残差,完美。
- 最终,四棵树的结论加起来,就是真实年龄30岁(实际工程中,gbdt是计算负梯度,用负梯度近似残差)。
个人理解:
1、 前向输出
GBDT就是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差)。
2、模型损失衡量
GBDT使用的评价指标是均方误差,
3、 GBDT是怎么样优化模型的呢?
因为GBDT的评价指标是均方误差
在使优化误差最小时,也就是最小,当
最小时,其一阶导数为零。
,即残差为0。
所以模型在降低均方误差时,也就在拟合残差。
使用GBDT可以通过均方误差使 y预测值 接近 y真实值,也就是GBDT可以通过降低均方误差优化残差。