简单易懂的人工智能系列:常见算法介绍

算法

算法是利用计算机解决特定问题的处理步骤,是有限操作的集合。

说明性的栗子

我们以上篇文章提到的机器学习下西洋跳棋为例,其问题描述如下:

  • 任务T:下西洋跳棋
  • 性能指标P:赢棋的概率
  • 经验E:和自己对弈
  • 确定的目标函数:V

通过将棋盘上的棋子进行评分,并将棋子所在位置和一个目标函数V建立联系,该目标函数的值可以描述当前棋局。在棋子、局面和性能标准 P 之间建立联系,然后就可以将P描述成一个和棋子、局面相关的函数,根据已有数据(经验E)去求解P中相关参数的最优解。

我们再来看一个栗子:由身高预测体重,首先我们收集了一些人的身高和体重,基于这些信息,去预测一个身高已知的人的体重。

对于身高和体重这两个变量(设身高为x,体重为y),他们之间的关系可用简单的线性关系描述:y = a x + b,根据已有的数据,求解这个线性模型中的两个参数:a 和 b,然后就可以用这个模型去预测了。然而对于两个未知参数,任意已知两条记录,即可求出参数,但是为了得到更具有普遍可信的模型,就需要尽可能的使用越多的已有数据。

我们于是将所有的样本记录数据代入y = a x + b 得到计算结果的 y’,而预测值y'与真实值y的差为预测误差,预测误差是一个关于参数a,b 的函数。我们的目的就是要找到某一组参数(a,b)使得预测误差最小。具体做法如下:

数据集和计算结果如下:

利用有限的步骤集合去求解一个特定问题,谓之算法。

机器学习算法的分类

按照学习方式不同进行分类:根据学习的样本数据不同,对求解问题有着不同的建模方式,可以分为以下三类:

  • 有监督学习
  • 无监督学习
  • 半监督学习

有监督学习

有监督学习(Suoervised learning):利用一组已知类别的样本来训练模型,使其达到性能要求。特点是输入数据(训练数据)均有一个明确的表示或者结果(标签label)。简而言之就是我们提供样例“教”计算机如何学习。

                   

比如我们之前提到的教孩子认识猫,已知数据中每一条都有一个明确标识该动物是否是猫的标签:

          

然后对于一个新的没有见过的数据,根据已知学习得到的模型来判断新数据是否为猫。

分类:Classfication

分类 就是通过已有数据集(训练集)的学习,得到一个目标函数f(模型),把每个属性集x映射到目标属性y(类),且 y 必须是离散的(若 y 是连续的,则属于回归算法)。通过对已知类别训练集的分析,从中发现分类规则,以此预测新数据的类别。

举个栗子,比如已有部分用户是否购买电脑的记录(如下图),据此来建模,来预测某个新用户是否购买。即分成两类:购买不购买

这是一个二分类的问题,比如构建的模型如下(决策树):

可见,首先关注的是用户的年龄,如果是中年,就买,如果是青少年那么还要看是否单身,而如果是老年,就看该用户的信用等级,以此模型来预测一个新用户是否会购买电脑。假如这时候来了一个新用户{ 老年,低,否,一般},那么从模型来看,老年人信用一般,通常就会购买电脑。

回归:Regression

简而言之,回归就是分类中的  y 是连续的。举个栗子,比如我们采集了一些父子身高数据,对这些数据进行建模,然后使用模型,根据输入的新的父亲的身高去预测他儿子的身高的取值:

    

结合拟合的线性方程画出散点图,拟合图中可以看出样本数据的点,基本上是分布在直线附近,呈线性分布:

分类算法

分类算法通过对已知类别训练集的分析,从中发现分类规则,以此预测新数据的类别。分类算法的应用十分广泛,比如,银行风险评估,客户类别分类,文本检索和搜索引擎分类,安全领域中的入侵检测以及软件项目中的应用等。

分类算法按原理分类:

  • 基于统计:如贝爷斯分类
  • 基于规则:如决策树算法
  • 基于神经网络:神经网络算法
  • 基于距离:KNN(k近邻)

模型构建好了以后,我们要评价模型好不好,就需要用到一些常见的评估指标

在介绍指标前必须先了解“混淆矩阵”(TP,TN,FP,FN):

分类算法常用的评估指标有:

  • 准确率

准确率(accuracy)计算公式为:


注: 准确率是我们最常见的评价指标,而且很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好。 准确率确实是一个很好很直观的评价指标,但是有时候准确率高并不能代表一个算法就好。比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震、1:发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么它就可能达到99%的准确率,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。为什么99%的准确率的分类器却不是我们想要的,因为这里数据分布不均衡,类别1的数据太少,完全错分类别1依然可以达到很高的准确率却忽视了我们关注的东西。再举个例子说明下。在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc也有 99% 以上,没有意义。因此,单纯靠准确率来评价一个算法模型是远远不够科学全面的

  • 精确率

预测结果与实际结果的比例(精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是对的。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)。

  • 召回率

预测结果中某类结果的正确覆盖率(召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。召回率是覆盖面的度量,度量有多个正例被分为正例,recall=TP/(TP+FN)。)

  • F1-Score 

统计量,可以综合评估分类模型,取值在0~1之间。(P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。 F-Measure是Precision和Recall加权调和平均:

其他常见的有监督学习算法

这些算法后续文章会一一介绍。

无监督学习

无监督学习(Unsupervised learning):从无标记的训练数据中推断结论。其特点为输入数据(训练数据)不存在明确的标识或结果。常见的无监督学习为聚类,即发现隐藏的模式或者对数据进行分组。即计算机根据我们提供的材料“自动”学习,给定数据,寻找隐藏的结构或模式。

例如左侧图我们事先并不知道使用何种模式对这组照片进行分类,发现其中隐藏的模式,有可能是年龄,也有可能是性别,这就是对应了无监督学习。

我们可以用一个常见的栗子来说明有监督学习和无监督学习,比如你平时做题,通常题目都是有答案的,我们在做题的过程中,通过自己做的同正确结果相比较,然后修正做题思路和方法,提高做题的准确率,这就是有监督学习;又比如你考试时,是事先没有结果和答案比对,仅按照自己已有的知识,把题作正确,这就是无监督学习。

聚类算法

聚类:就是将相似的食物聚集在一起,而将不像是的食物划分到不同的类别的过程。它是一种探索性的分析,不必实现给出一个分类的标准,聚类分析能够从样本数据出发,自动进行聚类。聚类分析所使用的方法的不同,常常会得到不同的结论。

常见算法:层次聚类、划分聚类、基于密度聚类。

说明性的栗子:鸢尾花

有未知分类的鸢尾花的测量数据,包括萼长,萼宽,瓣长,瓣宽,根据这些测量数据,将类似的测量记录归类(同样花的测量数据具有类似的特征),需使用聚类实现“自动”学习。

                                                             

预先不知道应该分为几类,已知有4个特征,那么我们可以画一个折线图:

可见,大致是为3类,因此我们按照3类进行聚类后,结果如下:

FhEaeznWkD4K9qsyb7TWGCDATO4Fuploading.4e448015.gif正在上传…重新上传取消

可见和我们预期判断大致吻合,而具体实现的效果如何,最终我们需要用一些量化指标来做判断。

其他常见的无监督学习算法

聚类

关联规则

其他学习算法

半监督学习

半监督学习:训练数据有部分被标识,部分没有被标识,这种模型首先需要学习数据的内在结构,以便合理的组织数据来进行预测。旨在避免数据和资源的浪费,解决监督学习模型泛化能力不强,无监督学习的模型不精确等问题。

常见学习方法:

  • 半监督分类:无类标签的样例的帮助下训练有类标签的样例,弥补又类标签的样本不足的缺陷
  • 半监督回归:在无输出的输入的帮助下训练有输出的输入,获得性能更好的回归器
  • 半监督聚类:在有类标签的样本的信息帮助下获得比只用无类标签的样例得到的结果更好的簇
  • 半监督降维:在有类标签的样本的信息帮助下找到高维输入数据的低维结构,同时保持原始高维数据和承兑约束的结构不变

集成学习

集成学习:针对同一数据集,训练多种学习器,来解决同一问题。通过组合多种学习器,得到一个比单一学习器更优的学习模型

Bagging

Boosting

Stacking

深度学习:Deep Learning

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习 结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。属于机器学习中比较新的一个领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑机制来解释数据,例如图像,声音和文本

常见的深度学习算法:

增强学习:Reinforcement Learning

增强学习要解决的问题是:一个能感知环境的自治 agent ,通过学习,选择能达到其目标的最优动作。本质上就是解决“决策(decision making)”问题,即学会自动进行决策比如控制移动机器人,在工厂中学习最优操作工序,学习棋类对弈等。

常见的增强学习算法:

迁移学习:Transfer Learning

迁移学习 是要把已训练好的模型参数迁移到新的模型来帮助新模型训练数据集。初衷是节省人工标注样本的时间,让模型可以通过已有的标记数据向未标记数据迁移,换言之,就是运用已有的知识来学习新的知识,核心是找到已有知识和新知识之间的相似性。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫96

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值