今天的这两章比较枯燥!线性模型和决策树!其实机器学习说白了就是回归和分类。
机器学习之线性模型
-
1.一元线性回归模型
2.多元线性回归模型
3.逻辑回归模型(对数几率回归)
Logistic回归模型的实践
线性回归也就是可以用一条直线来拟合一个点集。对于常用的逻辑回归模型,利用sklearn机器学习包实现对MNIST公共数据集的简单分类应用。机器学习无非是回归和分类的问题,其目的就是学习一个数学函数,通过该数学函数输入得到输出。线性模型主要有以下三大类,也是本文要总结的三大类,其实只有前两者是用来做回归的,而最后一个是做分类的:
一元线性回归模型(一个自变量和一个因变量)
多元线性回归模型(多个因变量)
对数几率回归模型(逻辑回归模型,用来做分类)
1.一元线性回归模型
这个其实很好理解,直接看西瓜书给出的公式就知道:
目的很简单,就是给定样本输入x求解输出f(x),而线性回归模型的主要工作就是学得参数w和b,且使得损失函数最小,也就是说在预测过程中,我们需要使预测值和真实值之间的误差最小。求解参数的主要思路步骤:
由最小二乘法导出损失函数E(w,b),也就是均方误差最小化求解。损失函数定义如下:
证损失函数是凸函数,根据二元函数凹凸性判定定理证明即可,也就是分别求出关于w和b的二阶偏导值,利用AC-B^2>=0来判断其为凸函数。
分别对w和b求解一阶偏导,并令其为0,解出的w和b就是我们要求得的参数能使得损失函数值最小,由此可以推导出西瓜书的等式:
其实最后一步w参数的向量化目的是方便编程,在实际的应用中,给出的数据样本值x一般是一个序列,向量化有助于python利用矩阵工具计算相应的参数值。
2.多元线性回归模型
多元回归模型的推导思路和一元是一样的,但是不同的是需要把w和b统一为向量的形式(w;b),西瓜书中直接给出了损失函数让人看不懂:
实际的推导如下*(因为公式不好敲,这里就贴个图片了哈,谅解!!!)*
现在最关键的一步就是损失函数的求解,求解最小值,这里讲述两种方式,第一种就是和一元的思路差不多,涉及到矩阵的求导和微分(牛顿法/拟牛顿法),第二种也是值得推荐的一种常用的方法,梯度下降法,其不只是使用在一元/多元线性回归上,其它机器学习的模型也常用梯度下降法来优化损失函数,求解最优参数解。现在分别大致描述下两种方法的思路。
1. 西瓜书的思路属于第一种,判断凹凸性,也就是Hessian矩阵正定,则为凸函数。Hessian矩阵其实就是在梯度(一阶偏导数存在) 的类似基础上,求解二阶偏导数存在。推到过程如下:2. 梯度下降法它是用迭代的方法求解目标函数得到最优解,是在cost function(成本函数)的基础上,利用梯度迭代求出局部最优解。
对于线性回归模型:
损失函数为:
给一个初始值,使损失函数逐次变小,使每次都往梯度下降的方向改变:表示下降速度。
为了求偏导数,当只有一个样本时,即;
当有多个训练样本时,下降梯度算法即为:
由于每次迭代都需要计算所有样本的残差并加和,因此此方法也叫做批下降梯度法(batch gradient descent),当有大规模数据时,此方法不太适合,可采取它得一个变种,即每次更新权重时,不是计算所有的样本,而是选取其中一个样本进行计算梯度,这个方法叫做随机下降梯度法(stochastic gradient descent):随机下降梯度法与下降梯度法对比可能收敛更快,但是可能找不到最优点而在最优点附近徘徊。
**总结:**线性回归的优点计算简单,容易实现,缺点使无法拟合非线性数据!!!
3.逻辑回归模型(对数几率回归)
Logistic是用来分类的,是一种线性分类器。逻辑回归的表达式可以通过替代函数和广义线性模型来推导,需要记住其表达式为:
其导数形式为:
logsitc回归方法主要是用极大似然估计来学习的,所以单个样本的后验概率为:
所以,整个样本的后验概率为:
取对数,得似然函数:似然函数取得最大值即为损失函数取得最小值,也可采用梯度下降法求解参数:
**总结:**逻辑回归的优点计算简单,分类时计算很快;缺点就是容易欠拟合,准确度不高,只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分。
机器学习之决策树
决策树由一个根节点、若干个内部节点和叶节点构成,其中,叶节点对应决策结果,其他节点(根节点、内部节点)对应属性判断规则。决策树本质上是一层一层地根据条件递归做判断。
决策树既可以应用于分类任务,也可用于回归任务,具体是用于分类任务还是回归任务,主要取决于目标变量的连续性。如果目标变量为离散变量,则为分类;如果目标变量为连续变量,则为回归。
由于对应决策过程易于可视化、可同时应用于分类和回归任务、可处理大规模数据集等优点,决策树至今仍是监督式学习中应用最广泛的模型之一。
决策树究竟是如何做判断的呢?
案例
已知100个人的身高、体重,并且知道其中有60名男性、40名女性。先需要根据词数据集构造决策树,用于仅根据身高和体重两个属性判断是每个人的性别。
根据男女身高和体重的额差异,可能会问这个人的身高是否超过170cm或者体重是否超过60kg。根据上述过程,可以绘制如下图所示的决策树。其中,图1先根据身高判断,图2先根据体重判断。
以上两种判断过程,哪一种更合理呢?也就是按什么样的特征顺序进行划分,才能找到最纯净的划分(叶节点)?这就是决策树原理中最重要的一个方面:特征属性的重要性,即找出最能区别样本数据集的属性,作为优先判断条件,从而提高决策树的纯度。
01 树的纯度与特征属性重要性
目前,用于衡量树的纯度的方法有三种,纯度的的相反面是不纯度,不纯度越低,即纯度越高。下面是衡量决策树(不)纯度的三种算法。
(1) ID3算法:使用信息增益作为分裂规则;
(2) C4.5算法:使用信息增益率作为分类规则;
(3) CART算法:使用基尼系数作为分裂规则。
●
1. ID3算法:熵、信息增益
介绍信息增益之前,首先介绍一下熵的概念,这是一个物理学概念,表示“一个系统的混乱程度”。熵越小,系统的不确定性越低,纯度越高。
●2. C4.5算法(信息增益率)
在ID3算法中,显然属性的取值越多,信息增益越大。为了避免属性取值个数的影响, C4.5算法从候选划分中找出信息增益高于平均水平的属性,再从中选出信息增益率(用信息增益除以该属性本身的固有值Intrinsic value)最高的分类作为分裂规则。
●3. 基尼系数
CART(Classification and Regression Tree)算法使用基尼系数作为分裂规则,选择Gini系数减少最快的分裂规则,最小化不纯度。CART算法既可以用分类任务,也可用于回归任务。
数据集D的基尼系数Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此Gini(D)越小,则数据集D的纯度越高。
决策树主要优缺点:
优点:
1. 可同时用于分类和回归任务,且可以处理多分类问题;
2. 不需要归一化,减少了数据预处理工作;
3. 自动筛选变量,容易解释和可视化决策过程;
4. 适合处理高维度数据。
缺点:
1. 不稳定,泛化性能差;
2. 没有考虑变量之间的相关性,每次筛选都只考虑一个变量;
3. 只能线性分割数据;
4. 本质上是贪婪算法(可能找不到最优的树)。
02 控制树的深度(剪枝)
根据决策树的原理,如果把每一个样本编号,那么将编号作为一个属性,则每个个体都可以独自分为一类,这样本质上相当于没有分类,也不能泛化到其他数据集,也就是常说的过拟合。
为了防止过拟合,需要控制决策树的广度与深度,即对决策树进行剪枝。
剪枝可分为预剪枝和后剪枝:
预剪枝,在对每一个节点包含的样本进行分类前,比较分类前后的测试集预测的精确率(precision=TP/TP+FP,即正确预测为正与全部预测为正的比率)。
预剪枝的优缺点:
优点:使得决策树的部分分支没有展开,降低了过拟合的风险,节省了训练时间;缺点:有可能出现欠拟合。
后剪枝,在完全构建成一个决策树后,在从叶节点开始,从下往上判断是否需要剪掉叶节点,将原来的内部节点变为叶节点。判断的基础仍然为测试集预测的精确率。
后剪枝的优缺点:
优点:欠拟合风险很小,泛化性能也较高;
缺点:训练时间比预剪枝长。
经过特征重要性选择和树的剪枝,我们基本可以得到一颗效果不错的决策树了。但一颗决策树虽然易于可视化和讲给老板和同事听,但准确度并不一定是最高的。为了提高决策树的精确度,可以用多棵树共同判断,即随机森林