浅谈机器学习框架和算法

来源:互联网 发布:mac怎么写java 编辑:程序博客网 时间:2024/06/07 03:17

概述

机器学习,顾名思义,就是学习得像机器一样,形成一种解决某类问题的模型,以便我们遇到问题解决问题。下面我将介绍机器学习的框架和一些常用的比较主流的算法。

框架

确定目标

  1. 业务需求:首先我们必须要明确机器学习是要用来解决问题的,一般是通过大量的数据,来预测未来的行为。所以首先要明确的就是业务需求,明确了业务需求,才能采集对应的数据,进行深入研究。
  2. 数据:这个数据就是我们要分析的基础,但不是机器学习的直接原材料,所有的数据都在数据池中,而且这个数量是庞大的,也是根据上一步明确了业务需求之后进行的。
  3. 特征工程(Feature Engineering):这个步骤可以说是在明确目标这一模块中最为重要的,包括数据清洗、数据整合、特征提取等几个步骤,根据我们的业务需求,提取出具有相同特征满足我们想要结果要求的所有数据。要知道数据池中的数据是杂乱无章的,参差不齐的,所以要提取出整齐的,满足我们要求的数据,是相对复杂也极为重要的,只有这一布处理好了,下面进行训练的时候才能较为准确,更加高效。

训练模型

  1. 定义模型:要想通过学习训练得到训练模型,必须要先定义一个模型,明确要得到一个什么样的模型,才能通过大量的数据训练得到期望的较为准确的模型。
  2. 定义损失函数:什么是损失函数?顾名思义,是为了填补损失的函数。何谓损失?损失就是通过机器学习预测的结果和真正结果之间的关系。预测的结果肯定不能十分准确,那就需要损失函数来填补这二者之间的差距,让最终的预测结果尽可能地准确。
  3. 优化算法:这个的目的就是找到让损失函数取最小值的最优算法。这部分是最为有趣的部分。

模型评估

  1. 交叉验证:对预测结果进行验证,利用交叉的方法测试。
  2. 效果评估:要对这个预测结果的效果进行总体的评估,看是否能满足最初的业务需求,计算准确率,如果不达要求,还要重新进行前两步的步骤,重新提取特征,进行训练,得到新的训练模型。

算法分类

机器学习的算法有很多种,可以根据多个角度进行分类。下面以三个不同的角度,将机器学习的算法进行分类:

第一种

  1. 有监督学习:明确了给出的样本是属于哪个标签的,即:已知并明确了类别,要将样本进行分类。例如划分垃圾邮件的朴素贝叶斯算法,就属于此类,因为垃圾邮件的类别已知,只有两类,是或者不是垃圾邮件。用一个更生动的形容,可以将样本比作X,所属类别比作Y,那么这个分类就是已知X和Y类。属于此类的有分类算法,回归算法等
  2. 半监督学习:又名强化学习,有Y值,但是不是最终的分类结果,需要在算法过程中逐渐完善类别,明确类别。
  3. 无监督学习:不知道Y值,即不知道最终要分成几类。例如聚类算法,目的就是要的出有几种类别。

第二种

第二种分类依据是根据要解决的问题的类型:
1. 分类与回归:类似于有监督学习。
2. 聚类:类似于务监督学习。
3. 标注:类似于半监督学习。

第三种

第三种分类是依据算法的本质进行划分
1. 生成模型:通过算法,计算出属于各个类别的概率,不明确指出具体唯一地属于哪个类,属于陪审团的角色。
2. 判别模型:直接给出函数的结果,即分类结果,属于法官的角色。
所有算法非1即2,算法的本质不一样导致训练模型的思想不一样。

流行的主流算法

如图所示
这里写图片描述