机器学习的算法——用最通俗的例子去理解

1、 DT:决策树(Decision Tree)

决策树,是树形结构,通过树形结构将各种情况组合都表示出来,每次分割的时候,都将当前的空间一分为二,简单来说就是每个分支进行一次Yes 或 No 的选择,直到所有选择都进行完毕,最终给出正确答案。

示例:

比如希望根据一个人的性别、年龄、身高和收入来判断,是否要考虑跟他相亲。用决策树可以这样去设计算法:


优点:

¬ 计算复杂度不高, 能同时处理数据和分类,在相对短的时间内能够对大数据集合做出可行且效果良好的分类结果

¬ 是一个白盒模型,根据决策树很容易推断出相应的逻辑表达式;

缺点:

¬ 忽略了数据集中属性之间的相关性

¬ 对噪声数据较为敏感

¬ 容易出现过拟合问题(为了得到一致假设而使假设变得过度严格称为过拟合,简单来理解就是模型设定的条件过于严格苛刻)

2、 RF:随机森林(Random Forest)

随机机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

示例:

a、 假设决策树有三个,出现的结果依次是下方的 S1、S2、S3区域那么决策树出来的结果即为 M 区域。


b、 如下图,假设决策树三个,出现的结果是两个 A 类,1个 B 类,那么决策树的结果则为 A 类。比如依次是这样:


决策树算法出来的结果就是考虑。

优点:

¬ 能够处理很高维度(feature很多)的数据,并且不用做特征选择

¬ 训练时树与树之间是相互独立的,训练速度快,并且可并行

¬ 实现比较简单

¬ 如果有很大一部分的特征遗失,仍可以维持准确度。

缺点:

¬ 和决策树方法一样,在某些问题上可能出现过拟合

¬ 属性的数据有不同取值时,取值划分较多的属性会对随机森林产生更大的影响

3、 LR:逻辑回归(Logistic Regression)

逻辑回归,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。

常用的一个公式


示例:

一门考试之前学生的复习时间与这个学生最后是否Pass这门考试的数据:


通过这些数据,利用逻辑回归算法进行模型训练,可以得到最终的模型结果是这个样子:


这样,给出任何复习时间,就可以预测出是否通过的概率


优点:

¬ 速度快,适合二分类问题

¬ 简单易于理解,直接看到各个特征的权重

¬ 能容易地更新模型吸收新的数据

缺点:

¬ 对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

4、 NBM:朴素贝叶斯分类器(Naive Bayesian Model)

朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。

应用场景很多,典型如邮件处理,标记一个电子邮件是否为垃圾邮件, Gmail就是使用的这个算法,判断一篇新闻文章是技术类、政治类或体育类,检查一段文字表达积极的情绪,或消极的情绪。

示例:

给一段文字,返回情感分类,这段文字的态度是positive,还是negative。



这段文字,将转化为一些典型的单词来代表,每个单词分别定义了他的分数或者概率。



假设单词great在positive 的情况下出现的分数是2,在negative的情况下出现的分数是0.1。love在positive 的情况下出现的分数是2,在negative的情况下出现的分数是0.1。



again在positive 的情况下出现的分数是1,在negative的情况下出现的概率是1。

整体计算这句话里典型单词的分数和概率是多少,从而判断这句话是属于正面积极向上的,还是负面消极懈怠的。

优点:

¬ 基于概率公式,数学基础坚实,分类效率稳定

¬ 没有复杂的计算规则,适用于规模巨大的数据集

缺点:

¬ 属性之间的独立性假设往往不完全存在

¬ 需要知道先验概率,分类决策存在错误率

5、 KNN:K最近邻(K-NearestNeighbor)

K最近邻法,是一种惰性分类方法,从训练集中找出K个最接近测试对象的训练对象,再从这K个训练对象中找出居于主导的类别,将其赋给测试对象。通俗上来说就以物以类聚的思路,给一个新的数据时,离它最近的 K个点中,哪个类别多,这个数据就属于哪一类。

示例:

如图所示,假设需要判断问号的这个是什么颜色。


假设设定 K=3,那么机器识别出来他为红色,因为距问号图形距离为3的范围内,红色数目为2,蓝色数目为1。

假设设定K=5,那么机器会识别出来他为蓝色,因为距问号图形距离为5的范围内,红色苏沪为2,蓝色数目为3。

而实际上这个颜色属于绿色。

优点:

¬ 简单,容易理解和实现

¬ 重新训练的代价较低(类别体系的变化和训练集的变化)

¬ 适合处理多模分类和多标签分类问题

¬ 对于类域的交叉或重叠较多的待分类样本集较为适合

缺点:

¬ 比积极学习的算法要慢

¬ 对于样本不平衡的数据集效果不佳

¬ k值的选择对分类效果有很大影响,k 值较小的话对噪声敏感,需要找最佳 K 值

¬ 可解释性不强,计算量大。

展开阅读全文

没有更多推荐了,返回首页