(四)机器学习方法的分类


  在上一篇博客中,主要介绍了机器学习的两种任务,分类任务和回归任务。这主要是从机器学习可以解决的问题的角度进行分类的,而并不是从机器学习算法本身进行分类的,如果我们将目光放在机器学习算法上,整体上我们可以将机器学习的算法分为监督学习,非监督学习,半监督学习和增强学习这四个大类。

一、监督学习


  所谓的监督学习,就是我们给机器的训练数据集是拥有 “标记” 或者是 “拥有答案” 的。比如不论是之前举出的花的数据集还是房产的数据集,在数据集的最后,都拥有标记那一列,我将这一列称之为 y,如果我们给机器学习的数据是这样的数据的话就称为是监督学习。

  换言之,我们想要在图像识别中,识别这张照片到底是猫还是狗,我们只给机器这个照片是不够的,与此同时,我们对于每一张照片,比如,下列照片中,我们需要告诉左边的图片是一只狗,右边的图片是一只猫。
在这里插入图片描述
  同理,对于 MINST数据集来说,以下图片只是展示了MINST数据集中每一张的图片信息,就是之前我们所说的 X 的那个信息而已。
在这里插入图片描述

  但是与此同时,对于每一个图片信息,还应该附上一个标记信息。
在这里插入图片描述
  如果我们给机器的数据是这样的数据,既有 X 又有 y,既有数据的特征本身,又有数据所对应的标记,那么它就称之为是监督学习。在这里,监督的意思其实就在于我们人类已经针对给机器的这个数据进行了正确答案的划分,这个正确的划分本身就被称之为监督的信息。可以思考一下,在实际的生活中,很多学习的过程都是监督学习的过程,比如说,图像已经拥有了标定信息;银行已经积累了一定的客户信息和它们信用卡的信用情况;医院已经积累了一定的病人信息和它们他们最终确诊是否患病的情况;市场积累了房屋的基本信息和最终成交的金额等等等等。

  对于监督学习而言,主要处理两大类问题,分别是分类问题和回归问题。在后面学习的大部分算法,属于监督学习算法。比如 k 近邻,线性回归和多项式回归,逻辑回归,SVM,决策树和随机森林。但是并不是代表非监督学习不重要。

二、非监督学习


  理解了监督学习,那么理解非监督学习就很容易了。非监督学习,就是给机器训练的数据没有任何的 “标记” 或者 “答案”。非监督学习可以对没有 “标记” 的数据进行分类,通常我们叫做聚类分析。

  比如,我们每一个顾客去访问电商网站,在这个电商网站上浏览不同的商品信息购买不同的商品留下一些行为数据,其实电商网站对于我们每一个人都是同等对待的,初始的时候,对于每一个人是没有这种标记的,但是,随着我们在电商网站上留下越来越多的足迹,电商网站就可以使用这种非监督学习的算法为它的而客户群体进行分类,可能认为某一些群体是理智型消费者,一些人为冲动型消费者,一些人是更重视性价比,另一些更重视质量等等。
在这里插入图片描述
  非监督学习可以完成另外一个非常重要的功能就是对数据进行降维处理。主要包含特征提取和特征压缩。所谓的特征提取,当我们面对一个数据的时候,这个数据有很多的特征,有的时候,我们可能根据我们的经验或者深入的分析,认为某一些特征对我们将要预测或者是计算的最终结果是没有贡献的。举个简单的例子,银行可能会根据不同的人的信用卡进行一个信用评级,不同人的信息可能会包含人的体重这样的信息,可以想象一下,一个人的胖瘦与这个人的信用似乎并没有什么关系,那么在这种情况下,我们可以直接将这种信息扔掉,这种就叫做特征提取。另外一个非常重要的工作叫做特征压缩,特征压缩的意思就是我们并不扔掉任何特征,但是有的时候特征之间的关联性非常的强。举个简单的例子,就像之前提到的识别一个手写的数字,需要28*28个特征点来标记,那么我们通过特征压缩,有可能使用几十个点或者十几个点就可以很好的表示。所以特征压缩在我们面对高维的数据的时候,是非常有效的一个工具。特征压缩使用的一个主要的手段就是 PCA。简单总结一下,特征压缩所作的事情就是尽量少的损失信息的情况下,将高维的特征向量降为低维的特征向量,这样,对于很多任务来说,可以大大提高我们机器学习算法的运行效率,但是,并不影响机器学习最终预测的准确率。

  那么对数据进行降维,还有一个很重要的意义:方便可视化。这是因为对于我们人类来说,很难理解四维以上的空间这样的信息的,也为了能够直观的看到这些信息,有些时候我们能够把很高维的数据降到三维是甚至是二维,那么很有可能降到这么低的维度会丢失很多信息,不过,没有关系,我们降到这么低的维度,主要是让我们对数据进行可视化,方便我们直观的对数据有一定的理解。

  非监督学习除了可以完成降维这样的工作之外,还可以进行异常的检测。所谓的异常检测,有时候在我们的数据中,存在一些点,这些点明显是具有异常的,那么在这里就是一个例子。
在这里插入图片描述
  在一个二维空间中,这两个红点与这些蓝点相隔的有点远。如果他们是从属于一类数据的话,我们可以认为这两个红点是异常的点,对于这种异常的点,并不是说它们没有意义,但是我们直观地去看它们就可以看出来它们并不能表达这个样本整体的一个特性。而对于我们的机器学习来说,很多时候需要找到的是我们这个样本一般化的特征,那么对于这种特殊的点,对于让我们的算法发现这种一般化的规律很有可能是没有帮助的,所以我们通常需要将这种异常的点去除。当然,对于这个数据只是一个二维的数据,我们用肉眼就能够很直接的观察到,但是对于一个高维的数据而言,我们就需要使用非监督学习中相应的算法来帮助我们剔除这些异常的点进行异常检测。

三、半监督学习


  我们再来看另一类机器学习的方法,半监督学习。其实就是一部分数据有 “标记” 或者 “答案”,另一部分数据没有。

  其实这种情况在我们的生活中是更常见的,因为数据常常会因为各种原因产生的标记缺失这种情况。而相应的,一个数据集的完整标记,通常需要一个公司或者企业投入人力物力财力来进行这种数据标记的工具,从而才能使得所有的数据都带有标记。通常对于半监督学习来说,我们通常先使用无监督学习手段对数据做处理,之后使用监督学习手段做模型的训练和预测。

四、增强学习


  最后一种机器学习的方法就是增强学习。即根据周围环境的情况,采取行动,根据采取行动的结果,学习行动方式。

  增强学习,是指我们机器学习的这个算法,此时这个算法通常我们都叫做 Agent。要根据周围的环境来采取行动,在我们采取行动之后,我们的算法相应的就会收到一些反馈,那么这些反馈有时候我们使用 reward (奖赏)的机制来进行反馈,有的时候是使用惩罚的机制来进行反馈,不管怎么样,当我们的这个 Agent 算法得到反馈之后,他就会改进自己的行为模式,之后再面临环境的其它情况下根据这种改进的算法再做出相应的 Action,然后环境再反馈给我们的 Agent,以此类推,通过这个过程可以看出来, Agent 通过这么一轮又一轮行动与反馈逐渐增强自己的智能。
在这里插入图片描述
  事实上,Alpha Go就是增强学习的一个典型应用。最前沿的无人驾驶还是研究具有强人工智能的机器人,它们都需要增强学习这个领域的知识。

五、机器学习的其他分类


我们另外的维度来将机器学习进行分类,分别是在线学习批量学习(离线学习)参数学习非参数学习

1. 批量学习(Batch Learning)

  其实批量学习的概念非常好理解,我们之前介绍的算法如果没有进行特殊说明的话都可以使用批量学习的方式来进行机器学习,所谓的批量学习就是,我们首先先收集一定量的样本资料,然后将这些样本资料送给我们的机器学习算法,我们的机器学习算法就可以训练出一个模型,当我们生产出这样一个模型之后,就可以直接将这个模型投入到生产环境中了,在新的生产环境环境中,会有新的样例送进来,然后通过这个模型预测出相应的结果。这个过程中我们的模型不会再发生任何变化了。
在这里插入图片描述

  对于批量学习的方式,它的优点就是非常简单,但是它也有一个显然的问题,就是如何适应环境变化?之前有提到过,对于机器学习来说,一个非常大的问题就是学习的内容随着时间的变化有可能是在不断变化的,比如说,对于垃圾邮件处理,随着时间的变化,新的垃圾邮件是层出不穷的,明年垃圾邮件的样式有可能会和今年的有所不同,所以我们今年训练出了一个垃圾邮件识别系统,希望它能够一直使用3年,5年,甚至更久,其实是不现实的。对于垃圾邮件这个例子,其实它的变化速度相对还是比较慢的,所以我们可以采用一个非常简单的解决方案:定时重新批量学习。换句话说,我们可以制定每隔三个月的时间就将这三个月期间新来的样本数据和原来的样本融合在一起形成新的学习的数据集,然后在新的数据集上重新执行机器学习算法,重新训练我们的模型,这样来适应环境的变化。但是这个方案也有一个很明显的缺点就是每次重新批量学习,运算量是非常大的。而且在某些环境变化非常快的情况下,批量学习是不可能的。比如每天都需要批量学习,但是每次重新批量学习的时间是在24小时内无法完成的,这种情况下运用批量学习就是不现实的。

2. 在线学习(Online Learning)

  再举一个例子,如果我们使用批量学习来进行股市分析的话,股市是每时每分每秒都在不断变化,如果我们希望我们的算法能够及时的适应环境的变化,就需要使用在线学习的方式及时将新产生的数据用于改进机器学习的模型。

在这里插入图片描述
  在线学习的优点很明显是及时反映新的环境变化,但是同样它也有一个新的问题,就是新的数据会带来不好的变化?比如说,有可能我们部署在生产环境上的机器学习的算法获得的新的数据由于设备的原因这个新的数据不是正常的数据,那么这些不正常的数据将会非常快的进入到机器学习算法中用来训练我们的模型,反而使我们的模型对于事件的准确率下降了。或者甚至在有些时候,我们的竞争对手成心的使用一些错误的方式来使用我们的系统,但是由于我们的系统采用在线学习的方式会将这些错误的方式学习来,得出不准确的结果。这些问题的解决方案通常是需要加强对数据进行监控。在之前所提到的非监督学习中的一个使用场景就是进行异常的数据检测,那么通常在线学习过程中,我们就需要及时地对异常数据进行检测。另外一方面,在线学习不仅可以及时反映新的环境变化,也适用于数据量巨大,完全无法批量学习的环境。

  从另外一个维度,可以将机器学习分为参数学习(Parametric Learning)和非参数学习(Nonparametric Learning)。

3. 参数学习(Parametric Learning)

  那什么叫做参数学习呢?下图展示了一个二维空间,我们可以假设横坐标是房屋的面积,纵坐标是房屋的价格,对应的每一个房屋在二维空间中就为一个相应的点。对于这些数据点,我可以假设面积和房屋的价格之间是一个线性的关系。也就是说,我先假设房屋的价格 f(x) = a * x + b,x 为房屋的面积。那么整个机器学习的过程就是想办法找到一个好的 a 和 b来描述房屋的面积和房屋的价格之间的关系,那么这个 a 和 b 就是参数。这样一个机器学习的过程就叫做参数学习,而且参数学习有一个特点就是一旦学习到了参数,就不再需要原有的数据集
在这里插入图片描述

4. 非参数学习

  所谓的非参数学习,就是不对模型进行过多假设。但是这里需要注意一点的是,非参数不等于没参数!这里面的区别是我不对整个问题进行一个建模,不把整个问题理解成是学习一些参数,但是在学习过程中依然是需要有参数来参与的。

猜你喜欢

转载自blog.csdn.net/qq_41033011/article/details/108910406