机器学习实战-基本算法总结1

机器学习基本算法总结

☞监督学习——分类

代码在这,基于python3(原书代码是python2)

这里只是一个总结,原书已经讲解很清楚了,不清楚的直接看代码,或者李航的统计学习方法也有公式推导。

目录1

==========================

一、k-近邻算法(kNN)

1.概述

k-NN算法是最简单的分类算法,主要的思想是计算待分类样本与训练样本之间的差异性,并将差异按照由小到大排序,选出前面K个差异最小的类别,并统计在K个中类别出现次数最多的类别为最相似的类,最终将待分类样本分到最相似的训练样本的类中。与投票(Vote)的机制类似。
k-近邻算法是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数
据。

  • 优点:精度高,对异常值不敏感,无数据输入假定
  • 缺点:时间和空间复杂度高,无法获取样本特征
  • 数据:数值型和标称型
2.算法介绍
  • 训练算法:此步骤不适用于k-临近算法
  • 测试算法:计算错误率
  • 使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-临近算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续处理。
##2.1 错误率

error_rate=分错的样本数量 / 总样本数量

##2.2 归一化

newvalue=(oldvalue-min) / (mx-min)

3.伪代码

对未知类别属性的数据集中的每个点依次执行以下操作:
(1)计算已知类别数据集中的点与当前点之间的距离;
(2)按照距离递增次序排序;
(3)选取与当前点欧氏距离最小的k个点
(4)确定前k个点所在类别的出现频率;
(5)返回前k个点出现频率最高的类别作为当前点的预测分类。

4.实例
1、约会网站配对案例

某人将对象分为三类人,不喜欢的人,魅力一般的人,极具魅力的人。
这里实现的过程是,给定一个人的数据,进行打分预测属于哪类人,从而帮助用户是否选择相亲进行决策。

2、手写数字识别实战案例
5.存在的问题及解决方法、总结

算法小结:
(1)如果我们改变训练样本的数目,调整相应的k值,都会对最后的预测错误率产生影响,我们可以根据错误率的情况,对这些变量进行调整,从而降低预测错误率

(2)k近邻算法是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数据。k近邻算法必须保存全部数据集,如果训练数据集很大,必须使用大量的存储空间。此外,由于必须对数据集中的每个数据计算距离,实际使用时也可能会非常耗时
(3)此外,k近邻算法无法给出数据的基础结构信息,因此我们无法知道平均实例样本和典型实例样本具有怎样的特征。

1、计算复杂度的问题
  在K-NN算法中,每一个预测样本需要与所有的训练样本计算相似度,计算量比较大。比较常用的方法有K-D树,局部敏感哈希等等

2、K-NN的均匀投票
  在上述的K-NN算法中,最终对标签的选择是通过投票的方式决定的,在投票的过程中,每一个训练样本的投票的权重是相等的,
  (1)可以对每个训练样本的投票加权,以期望最相似的样本有更高的决策权。
  (2)归一化。

===============================================================

二、决策树ID3

1.概述

  k-近邻算法可以完成很多分类任务,但是它最大的缺点就是无法给出数据的内在含义,决策树的主要优势就在于数据形式非常容易理解。

  决策树算法是从数据的属性(或者特征)出发,以属性作为基础,划分不同的类。
  实现决策树的算法有很多种,有ID3、C4.5和CART等算法。

  • 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
  • 缺点:可能会产生过度匹配问题。
  • 数据:数值型和标称型
2.算法介绍
  • 训练算法:构造树的数据结构。
  • 测试算法:使用经验树计算错误率。
  • 使用算法:此步骤可以适用于任何监督学习算法,而使用决策树可以更好地理解数据
    的内在含义。
2.1 ID3算法

  ID3算法是由Quinlan首先提出的,该算法是以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类。
(1) 在ID3算法中,选择信息增益最大的属性作为当前的特征对数据集分类。
(2) 判断划分结束,第一种为划分出来的类属于同一个类,第二种为遍历完所有划分数据集的属性。

2.2 信息增益

   ID3算法是以信息熵和信息增益作为衡量标准的分类算法。
  熵的概念主要是指信息的混乱程度,变量的不确定性越大,熵的值也就越大,熵定义为信息的期望值。
符号 xi x i 的信息定义为:

l(xi)=log2p(xi)(1) (1) l ( x i ) = − log 2 ⁡ p ( x i )

  其中 p(xi) p ( x i ) 是选择该分类的概率。
  为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值,通过下面的公式得到:
H=i=1np(xi)log2p(xi)(2) (2) H = − ∑ i = 1 n p ( x i ) log 2 ⁡ p ( x i )

  划分数据集的大原则是:将无序的数据变得更加有序。在划分数据集之前之后信息发生的变化称为信息增益,,获得信息增益最高的特征就是最好的选择。

3.伪代码

对未知类别属性的数据集中的每个点依次执行以下操作:
(1)选择特征
(2)划分数据集——寻找划分数据集的最好特征,创建分支节点
(3)满足终止条件
(4)满足就结束,不满足则回到(1)

4.实例
4.1 预测眼镜蛇类型

存在过度匹配问题

5.存在的问题及解决方法

1、过度匹配数据集

   裁剪决策树,合并相邻无法产生大量信息增益的叶节点,消除过度匹配问题。

  当决策树的复杂度较大时,很可能会造成过拟合问题。此时,我们可以通过裁剪决策树的办法,降低决策树的复杂度,提高决策树的泛化能力。比如,如果决策树的某一叶子结点只能增加很少的信息,那么我们就可将该节点删掉,将其并入到相邻的结点中去,这样,降低了决策树的复杂度,消除过拟合问题。

===============================================================

三、基于概率论的分类方法:朴素贝叶斯

1.概述

  前两章的KNN分类算法和决策树分类算法最终都是预测出实例的确定的分类结果,但是,有时候分类器会产生错误结果;本章要学的朴素贝叶斯分类算法则是给出一个最优的猜测结果,同时给出猜测的概率估计值。利用已知值估计未知概率

  • 优点:在数据较少的情况下仍然有效,可以处理多类别问题。
  • 缺点:对于输入数据的准备方式较为敏感。
  • 适用数据类型:标称型数据
2.算法介绍
  • 训练算法:计算不同的独立特征的条件概率。
  • 测试算法:计算错误率。
  • 使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使_用朴素贝叶斯命类器,不一定非要是文本。输入数据分别属于哪个分类,最后应用对计算出的分类执行后续处理。
2.1 条件概率

P(c|x)=P(c,x)P(x)=P(x|c)P(c)P(x)(1) (1) P ( c | x ) = P ( c , x ) P ( x ) = P ( x | c ) P ( c ) P ( x )

2.2 如何使用条件概率进行分类

  假设这里要被分类的类别有两类,类c1和类c2,那么我们需要计算概率p(c1|x,y)和p(c2|x,y)的大小并进行比较:

如果:p(c1|x,y)>p(c2|x,y),则(x,y)属于类c1

     p(c1|x,y)<p(c2|x,y),则(x,y)属于类c2

  我们知道 p(x,y|c) p ( x , y | c ) 的条件概率所表示的含义为:已知类别c条件下,取到点(x,y)的概率;那么 p(c|x,y) p ( c | x , y ) 所要表达的含义呢?显然,我们同样可以按照条件概率的方法来对概率含义进行描述,即在给定点(x,y)的条件下,求该点属于类c的概率值。那么这样的概率该如何计算呢?显然,我们可以利用贝叶斯准则来进行变换计算:

p(ci|x,y)=p(x,y|ci)p(ci)p(x,y)(2) (2) p ( c i | x , y ) = p ( x , y | c i ) p ( c i ) p ( x , y )

上述公式写为:
  • 6
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
参考中的资源提到了一些常见的机器学习算法,包括K近邻算法、线性回归算法、逻辑回归算法和支持向量机(SVM)。这些算法都是监督学习的一部分,可以在机器学习算法竞赛中应用。此外,参考中的资源是关于Matlab算法学习指南,其中涵盖了信号处理、图像处理、数值计算和机器学习等领域的常见题型和算法示例。这些资源提供了详细的描述、示例代码和讲解,对于对Matlab算法和应用感兴趣的人群是非常有用的。另外,引用中提到了XGBoost算法的一些主要特点,包括稀疏感知算法、近似树学习、并行计算和核外计算等。XGBoost算法机器学习算法竞赛中也是一个非常流行的选择。所以,在机器学习算法竞赛实战中,你可以考虑使用K近邻算法、线性回归算法、逻辑回归算法、支持向量机(SVM)和XGBoost算法等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [机器学习算法基础(实战)](https://blog.csdn.net/weixin_42430904/article/details/82948030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Matlab算法学习指南(数值计算、机器学习、信号处理、图像处理)](https://download.csdn.net/download/weixin_41784475/88221221)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [《机器学习算法竞赛实战》整理 | 五、模型训练](https://blog.csdn.net/qq_37039382/article/details/124541131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值