基础概念
机器学习主要分为监督学习、非监督学习、半监督学习和强化学习等四种学习方式
-
监督学习
通过已有的一部分输入数据与输出数据之间的对应关系(训练集),生成一个函数模型,将输入映射到合适的输出(测试集)。
训练集:包括输入(特征)和输出(目标),是由人为标记的。
测试集:评估模型的精确度。
验证集:主要用来进一步确定模型的参数。
监督式学习的常见应用场景是分类问题
和回归问题
。分类算法中目标变量的类型通常是离散的;而在回归算法中是连续的。
-
非监督学习
在非监督学习中,数据没有类别的信息,也不会给定目标值(没有训练集),而是直接对输入的数据进行建模。
非监督学习常见的应用场景是聚类
和关联规则的学习
。
-
半监督学习
简单来说就是介于监督学习和非监督学习中间的一种学习方式,采用有类别标注的数据和没有类比标注的数据相结合的学习方式。
主要考虑如何利用少量的样本标注和大量的未标注样本进行训练和分类 的问题,这样可以减少标注代价。
应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸。
-
强化学习(主动学习)
输入数据作为对模型的反馈,而模型也必须针对反馈立刻做出调整。
监督学习中,输入数据仅作为检查模型对错的方式。
常见的应用场景包括动态系统
以及机器人控制
等。
开发机器学习应用程序的步骤
通常开发的步骤分为以下几步:
- 收集数据
- 准备输入数据(一般主要解决格式问题)
- 分析输入数据(判断数据中是否存在空值、异常值和垃圾数据)
- 训练算法(非监督学习不需要训练算法)
- 测试算法(必须用评测手段来检验算法的成功率)
- 使用算法
监督学习
监督学习的主要研究内容是分类和回归。
- 分类:在监督学习中,如果预测的变量是离散的,就称之为分类。如通过肿瘤的大小来预测该肿瘤是恶性瘤还是良性瘤,这就是一个分类问题,它的输出是0或者1两个离散的值。(0代表良性,1代表恶性)。
分类常见的算法有:
决策树
K近邻算法(KNN)
朴素贝叶斯
支持向量机(SVM)
神经网络
Logistic回归
- 回归:在监督学习中,如果预测变量是连续的,就称之为回归。一般用来预测数值型数据。如预测一个给定面积的房屋的价格就是一个回归问题,我们可以把价格看成是面积的函数,它是一个连续的输出值。
分类常用算法大多也适用于回归
接下来主要讲讲监督学习常用的算法。
K近邻算法(KNN)
采用测量不同特征值之间的距离方法的进行分类,彼此靠近的一个点更有可能属于同一个类别。
工作原理:
存在一个训练样本集,且样本集中的每个数据都存在类别标签。将待预测类别的一条数据输入,计算这条数据与训练样本集中数据的距离(距离的计算方式一般是将数据特征值数值化,运用数学方式进行计算),然后选取训练样本集中与待测数据距离最近的K条数据(通常K是小于20的整数)。这K条训练样本中类别出现最频繁的类别标签即作为带预测数据的类别标签。
k-近邻算法(KNN)是分类数据最简单最有效的算法。但是k-近邻算法必须保存全部的数据集,如果训练数据集很大,必须使用大量的存储空间。同时可能非常耗时。
决策树
决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。
决策树是通过一系列规则对数据进行分类的过程。每个样本数据包含许多特征,但有些特征在分类的时候起到决定性的作用,决策树的构造过程就是找到这些具有决定性作用的特征,根据其决定性程度来构造一颗倒立的树,决定性最大的那个特征作为根节点,然后递归找到各个分支中决定性最大的特征,直到子分支中的数据都属于同一类。
决策树的学习过程:
- 特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。
- 决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
- 剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
基于信息论的三种决策树算法:
如何选取决定性最大的特征,可以通过量化的方法来判断,量化方法有很多,“信息论度量信息分类”就是其中一种。基于信息论的决策树算法主要有三种:ID3、CART和C4.5。
- ID3:根据信息论的信息增益评估和选择特征,每次选择信息增益最大的特征做判断模块。
- C4.5:算法用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足在树构造过程中进行剪枝。
- CART:采用的是Gini指数(选Gini指数最小的特征s)作为分裂标准,同时它也是包含后剪枝操作
朴素贝叶斯
朴素贝叶斯是基于贝叶斯决策理论的分类方法,是一种利用概率统计知识进行的分类算法。利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。朴素贝叶斯是一种简单但是非常强大的线性分类器。它在垃圾邮件分类,疾病诊断中都取得了很大的成功。它只所以称为朴素,是因为在整个过程中都假设特征之间是相互独立的以及每一个特征都是同等重要的。
朴素贝叶斯分类过程:
- 计算每个类别的先验概率
- 计算各类别下的所有特征属性的条件概率
- 计算样本属于每个类别的概率
- 取最大项最为x的分类类别
先验概率:是通过现有掌握的部分资料计算出来的概率。
后验概率:可以通过Bayes定理,用先验概率和似然函数计算出来。
贝叶斯定理:http://blog.csdn.net/google19890102/article/details/25592833
支持向量机(SVM)
支持向量机同样用于解决分类问题,而且它是一个二分类的分类模型。也就是说,它的样本集只包含正例和反例。
假设一个二维平面里仅有两类点class1和class2(也就是正例和反例),找一条线将class1和class2分开,可能划分的方法有很多种,支持向量机的任务就是找到一条对于两个类来说划分结果最优的线。当新输入一个点时,如果落在线的左边那么该样本就归为class1类,如果落在线的右边那么该样本就归为class2 类。
在二维平面总,分类边界是线,如果在三维平面中,分类边界就是面,到了高维后,分类边界都统称维超平面。
SVM的四个关键名词:
- 分离超平面 ( separating hyperplane ) :处理分类问题的时候需要一个决策边界,在界这边我们判别A,在界那边我们判别B。这种决策边界将两类事物相分离,而线性的决策边界就是分离超平面。
- 最大边缘超平面(Maximal Margin Hyperplane) :分离超平面可以有很多个,怎么找最好的那个呢,SVM的作法是找一个“最中间”的,也就是说这个平面要尽量和两边保持距离,以留足余量,减小泛化误差,保证稳健性。
- 软边缘(Soft Margin):很多情况下不可能用一个平面完美分离两个类别,在线性不可分情况下就要考虑软边缘了。软边缘可以破例允许个别样本跑到其它类别的地盘上去。
- 核函数(Kernel Function): 为了解决完美分离的问题,SVM还提出一种思路,就是将原始数据映射到高维空间中去,直觉上可以感觉高维空间中的数据变的稀疏,有利于“分清敌我”。那么映射的方法就是使用“核函数”。如果这种“核技术”选择得当,高维空间中的数据就变得容易线性分离了。
神经网络
神经网络全称叫做人工神经网络(ANN),是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。神经网络通常需要进行训练,训练改变了网络节点的连接权的值使其具有分类的功能,经过训练的网络就可用于对象的识别。
图中的圆被称为神经元,大量的神经元连接成神经网络,以达到处理信息的目的。
比如选橙子的问题。虽然输入了大量的经验,这个程序仍然不是一开始就总能准确地判断出橙子好不好吃的。它仍需要进行大量的训练:输入一个新橙子的特征,程序根据这些特征计算出各个结果的概率。比如输入“美国加州大脐橙”、“颜色浅”、“软”,结果程序给出甜的概率 85%,不甜的概率 15%,汁多的概率 50%,水不多的概率 50%,经过人为尝试后,发现甜,但是汁不多,程序可以回去自动调整某些与“汁多不多”有关节点的权重。通过不断地用最终结果去返回调试,这个神经网络给正确结果赋予的概率会越来越高,反之给错误结果的概率会越来越低。