今天的这两章比较枯燥!线性模型和决策树!其实机器学习说白了就是回归和分类。

机器学习之线性模型

  • 1.一元线性回归模型

  • 2.多元线性回归模型

  • 3.逻辑回归模型(对数几率回归)

  • Logistic回归模型的实践

线性回归也就是可以用一条直线来拟合一个点集。对于常用的逻辑回归模型,利用sklearn机器学习包实现对MNIST公共数据集的简单分类应用。机器学习无非是回归和分类的问题,其目的就是学习一个数学函数,通过该数学函数输入得到输出。线性模型主要有以下三大类,也是本文要总结的三大类,其实只有前两者是用来做回归的,而最后一个是做分类的:

  • 一元线性回归模型(一个自变量和一个因变量)

  • 多元线性回归模型(多个因变量)

  • 对数几率回归模型(逻辑回归模型,用来做分类)

1.一元线性回归模型

这个其实很好理解,直接看西瓜书给出的公式就知道:
目的很简单,就是给定样本输入x求解输出f(x),而线性回归模型的主要工作就是学得参数w和b,且使得损失函数最小,也就是说在预测过程中,我们需要使预测值和真实值之间的误差最小。求解参数的主要思路步骤:

  1. 由最小二乘法导出损失函数E(w,b),也就是均方误差最小化求解。损失函数定义如下:

  2. 证损失函数是凸函数,根据二元函数凹凸性判定定理证明即可,也就是分别求出关于w和b的二阶偏导值,利用AC-B^2>=0来判断其为凸函数。

  3. 分别对w和b求解一阶偏导,并令其为0,解出的w和b就是我们要求得的参数能使得损失函数值最小,由此可以推导出西瓜书的等式:

  4. 其实最后一步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,即正确预测为正与全部预测为正的比率)。

预剪枝的优缺点:

优点:使得决策树的部分分支没有展开,降低了过拟合的风险,节省了训练时间;缺点:有可能出现欠拟合。

后剪枝,在完全构建成一个决策树后,在从叶节点开始,从下往上判断是否需要剪掉叶节点,将原来的内部节点变为叶节点。判断的基础仍然为测试集预测的精确率。

后剪枝的优缺点:

优点:欠拟合风险很小,泛化性能也较高;

缺点:训练时间比预剪枝长。

经过特征重要性选择和树的剪枝,我们基本可以得到一颗效果不错的决策树了。但一颗决策树虽然易于可视化和讲给老板和同事听,但准确度并不一定是最高的。为了提高决策树的精确度,可以用多棵树共同判断,即随机森林

3. 机器学习中为什么需要梯度下降?梯度下降算法缺点?_一起学习西瓜书2相关推荐

  1. 3. 机器学习中为什么需要梯度下降?梯度下降算法缺点?_浅谈随机梯度下降amp;小批量梯度下降...

    机器学习三要素 上次的报告中,我们介绍了一种用于求解模型参数的迭代算法--梯度下降法.首先需要明确一点,即"梯度下降算法"在一个完整的统计学习流程中,属于什么?根据<统计学习 ...

  2. python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  3. 综合评价模型的缺点_浅谈交通影响评价中不同交通预测方法的特性

    目前,据小编经验觉得,我国交通影响评价的工作中仍有很多问题未得到很好的解决,主要表现在:交通需求预测模型有待进一步精细.交通的影响程度评价内容与指标不够明确.报告中提出的交通改善措施很难落实到位等方面 ...

  4. 最长不下降子序列java代码_浅谈最长不下降子序列与最长上升子序列

    唔,最长不下降子序列与最长上升子序列曾是困扰蒟蒻多时的一个问题,应该也有一些人分不清这2个的求法吧. 首先n^2算法肯定是都能分清的,因为不下降和上升的区别是连续的2个能不能相等,只需要在判断的时候判 ...

  5. python中for循环和while循环的区别_浅谈python中的while循环

    python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环:for循环的时候必须有一个可迭代的对象,才能循环,比如说 列表.字典.字符串等 ...

  6. 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

    批量梯度下降(BGD).随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解 </h1><div class="clear"></div> ...

  7. Lesson 4.34.4 梯度下降(Gradient Descent)基本原理与手动实现随机梯度下降与小批量梯度下降

    Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现 在上一小节中,我们已经成功的构建了逻辑回归的损失函数,但由于逻辑回归模型本身的特殊性,我们在构造损失函数时无法采用 ...

  8. 全梯度下降算法、随机梯度下降算法、小批量梯度下降算法、随机平均梯度下降算法、梯度下降算法总结

    一.常见梯度下降算法 全梯度下降算法(Full gradient descent,FGD) 随机梯度下降算法(Stochastic gradient descent,SGD) 随机平均梯度下降算法(S ...

  9. 常见优化算法批量梯度下降、小批量梯度下降、随机梯度下降的对比

    在机器学习领域中,梯度下降的方式有三种,分别是:批量梯度下降法BGD.随机梯度下降法SGD.小批量梯度下降法MBGD,并且都有不同的优缺点. 下面我们以线性回归算法(也可以是别的算法,只是损失函数(目 ...

  10. 【深度学习】——梯度下降优化算法(批量梯度下降、随机梯度下降、小批量梯度下降、Momentum、Adam)

    目录 梯度 梯度下降 常用的梯度下降算法(BGD,SGD,MBGD) 梯度下降的详细算法 算法过程 批量梯度下降法(Batch Gradient Descent) 随机梯度下降法(Stochastic ...

最新文章

  1. 在Java连接hbase时出现的问题
  2. ubuntu 解压rar报错
  3. C++morse code 摩尔斯电码算法(附完整源码)
  4. 关于COMMIT WORK and COMMIT WORK AND WAIT在SAT中的讨论
  5. 作者:黄宜华,南京大学计算机系教授、博士生导师,中国计算机学会大数据专家委员会委员、副秘书长。...
  6. 天啦噜!知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍
  7. 计蒜客挑战难题:爬楼梯
  8. mysql ignore caps_mysql优化之sql语句优化
  9. 港股打新之卖出策略(暗盘和首日)
  10. 中柏平板触摸驱动_要成绩也要玩乐,聊聊学生买平板那些事儿
  11. excel服务器2010网站,勤哲Excel服务器2010企业版(完整安装包)
  12. U盘提示''这张磁盘有写保护''修复工具
  13. 论文模型构建的步骤_最全面的财会核心期刊论文写作技巧,核心期刊审稿人带你详解财会论文写作路数...
  14. element-ui el-upload框去除‘按 delete 键可删除’提示
  15. CSS中media的最全用法格式总结!
  16. (2020年下半年软件设计师49题)程序设计语言的大多数语法现象可以用CFG(上下文无关文法)表示。下面的CFG产生式集用于描述简单算术表达式,其中+ - * 表示加、减、乘运算,id表示单个字母表示
  17. Java零基础学习记录09(飞机躲避炮弹游戏实现)
  18. second life 新手必读 原文http://www.chezhe.com/game/ol/paopao/zhin
  19. 【Unity3D】UGUI之Toggle
  20. Python计算歌手得分数案例

热门文章

  1. windows下批量换程序——运维常用
  2. 基于Office 365 无代码工作流分析-需求基本分析!
  3. From Apprentice To Artisan 翻译 17
  4. Java并发包源码学习之AQS框架(三)LockSupport和interrupt
  5. POJ 1185 炮兵阵地(动态规划+状态压缩)
  6. Scribe安装问题
  7. 计算机基础17秋在线作业3,南开17秋学期《计算机应用基础》在线作业3
  8. 设计模式 可复用面向对象软件的基础_面向对象的可复用设计模式之简单工厂模式(1/24)...
  9. github使用_简单使用Git与github
  10. java nio 关闭channel_JAVA NIO(二)Channel通道