机器学习概要
概念
- 机器学习即让计算机在没有被显式编程的情况下,具备自我学习的能力。另一解释:就是把无序的数据转换成有用的信息
- 例如:对于垃圾邮件,当某几个特定单词同时出现时,再辅以考察邮件长度及其他因素,人们可以准确的判断该邮件是否为垃圾邮件
范围
- 机器学习横跨计算机科学、工程技术和统计学等多个学科
基本概念:
- 样本X(training Data) :描述/观测维度/特征数据中的每一行,例如用户的一条记录
特征:数据中的每一列,又可称为观测的维度,属性
标签y(labels):数据的结果
分类
-
监督学习:
算法预先知道预测什么,即目标分量的分类信息;
在有监督学习中,提供的样本中必须含有数据的特征,同时给定一个在此描述下的标准答案y,X,y数据会被送到模式(从机器学习算法中挖掘出的套路) -
监督学习中解决分类和回归问题
- 分类:需要解决输出的结果是离散目标中的那个结果。电商预测用户会不会买这个商品,会与不会两个结果选择一个;图片当中的动物识别,是猫或是狗或是其他。
- 回归:需要输出一个连续的值,预测房价,股票
- 聚类:没有标签,把样本中的数据分到不同的组里
- 降维:三维数据压缩到二维数据,能够保存数据当中的大部分信息
-
无监督学习:
此类数据没有类别信息,也不给定目标值。在无监督学习中,将数据集合成由类似的对象组成的多个类的过程被称为聚类。(预测房子价格、垃圾邮件)
只有样本X,去挖掘X中存在的一些固有的模式(套路)。例如:电商用户分类群体,男女生买东西,根据一些列能够观测到的行为去对它进行聚类,并认为分为同一类的用户比较接近,至于为什么接近需要进一步的观察;
应用降维:把高纬度的数据转化为低纬度的表示,并保存其中的大部分信息 -
半监督学习:
-
通过学习大量的无标记数据,去分析出数据本身的内在特点和结构。(网上购物阴谋论)
-
强化学习:
和环境平凡的交互,经常出现在游戏Game当中,围棋,机器人。这类算法强调和环境交互会有一些反馈,但这些反馈并不是当时就会有结果的(不像有监督学习知道标准答案)是围棋中下了棋子或是机器人走了这一步后过一段时间才会知道结果怎么样
在工业界看到的是有监督学习,无监督学习通常会是有监督学习算法的辅助***根据类别常用算法***
如何选择合适算法
- 首先考虑机器学习使用的目的
- 如果想要预测目标变量的值,则可以选择监督学习算法,否则选择无监督学习算法
- 如果选定监督学习算法,需要进一步确定目标变量类型
- 如果目标变量是连续的数值,如0.099.0,-1000100000等,则需要选择回归算法。
- 如果目标是离散型,如是/否、1/2/3、A/B/C或者红/黑/黄,可以选择分类器算法
- 如果不想预测目标的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法
- 其次需要考虑的是数据问题
- 重点考虑数据的以下特征,特征值是离散型变量还是连续型变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何等
开发机器学习应用的步骤
- 收集数据
比如可以用爬虫从网站抽取数据、设备发来的实测数据,也可以使用公开可用的数据源。 - 准备输入数据
得到数据之后,确定数据格式符合要求,此处需要注意有些算法要求目标变量和特征值是字符串类型,而另一些算法则可能要求是整数类型,具体情况具体分析。 - 分析输入数据
确保数据不是空值或者数据集中没有垃圾数据,此处如果信任数据源可以跳过,否则人工干预降低系统的价值。 - 训练算法
将前两步得到的格式化数据输入算法,从中抽取知识或信息。如果是无监督算法,因为不存在目标变量值,故而不需要训练算法 - 测试算法
进一步将实际应用第四步机器学习得到的知识信息。 - 使用算法
将机器算法转换为应用程序,执行实际任务
机器学习常用概念
- 过拟合是指模型能很好的拟合训练样本,但对新数据的预测准确性很差
如果我们有非常多特征/模型很复杂,我们的假设函数曲线可以对原始数据拟合得非常好,但是丧失了一般性,从而导致对新给的待预测样本,预测效果差(太依赖数据的关系) - 欠拟合:是指模型不能很好的拟合训练样本,且对新数据的预测准确性也不好
- 成本:是衡量模型与训练样本符合程度的指标,也即是针对所有的训练样本,模型拟合出来的值与训练样本的真实值的误差平均值。
- 成本函数:是成本与模型参数的函数关系。
- 模型训练:模型训练的过程,就是找出合适的模型参数,使得成本函数的值最小。也即是训练这个模型的目标,找出合适的模型参数,使得所有的点到直线上的距离最短
- 模型准确性:数据集一般分成训练数据集和测试数据集,划分的原则是 8:2或者 7:3,然后用训练数据集来训练模型,训练出来模型参数后再使用测试数据集来测试模型的准确性,并根据模型的准确定来评价模型的性能