引言
本书前两部分主要探讨监督学习(supervisedieaming)。在监督学习的过程中,我们只需
要给定输入样本集,机器就可以从中推演出指定目标变量的可能结果。监督学习相对比较简单, 机器只需从输入数据中预测合适的模型,并从中计算出目标变量的结果。
本书的前七章主要研究分类算法,第 2 章讲述最简单的分类算法:匕近邻算法,它使用距离矩阵进行分类;第 3 章引入了决策树,它比较直观,容易迎解,但是相对难于现;第 4 章将讨论如何使用概率论建立分类器;第 5 章将讨论1 % 1如0 回归,如何使最优参数正确地分类原始数据,在搜索最优参数的过程中,将使用几个经常用到的优化算法;第 6 章介绍了非常 流行的支持向量机;第一部分最后的第7 章将介绍元算法—— AdaBoost, 它由若千个分类器构 成,此外还总结了第一部分探讨的分类算法在实际使用中可能面对的非均衡分类问题,一旦训 练样本某个分类的数据多于其他分类的数据,就会产生非均衡分类问题。
1.1何谓机器学习
简单地说,机器学习就是把无序的数据转换成有用的信息。机器学习横跨计算机科学、工程技术和统计学等多个学科,需要多学科的专业知识。稍后你 就能了解到,它也可以作为实际工具应用于从政治到地质学的多个领域,解决其中的很多问题。甚至可以这么说,机器学习对于任何需要解释并操作数据的领域都有所裨益。、
机器学习的主要任务就是分类。有很多机器学习算法非常善于分类,当决定使用某个机器学习算法进行分类时,首先需要做的是算法训练,即学习如何分类。通常我们为算法输入大量已分类数据作为算法的训练集。训练集是用于训练机器学习算法的数据样本集合。目标变量是机器学习算法的预测结果,在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
为了测试机器学习算法的效果,通常使用两套独立的样本集;训练数据和测试数据。当机器学习程序开始运行时,使用训练样本集作为算法的输入,训练完成之后输入测试样本。输入测试样本时并不提供测试样本的目标变量,由程序决定样本属于哪个类别。比较测试样本预测的目标变量值与实际样本类别之间的差别,就可以得出算法的实际精确度。
1.2机器学习的主要任务
本节主要介绍机器学习的主要任务,并给出一个表格,帮助读者将机器学习算法转化为可实际运作的应用程序。
上节的例子介绍了机器学习如何解决分类问题,它的主要任务是将实例黎据划分到合适的分类中。机器学习的另一项任务是回归,它主要用于预测数值型数据。大多数人可能都见过回归的 例子—— 数据拟合曲鉍:通过给定数据点的最优拟合曲线。分类和回归属于监督学习,之所以称之为监督学习,是因为这类算法必须知道预测什么,即目标变量的分类信息。
与监督学习相对应的是无监督学习,此时数据没有类别信息,也不会给定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数据统计值的过程称之为密度估计。此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
1.3如何选择合适的算法
算法中选择实际可用的算法,必须考虑下面两个问题:一 、使用机器学习算法的目的,想要算法完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;二是需要分析和收集的数据是什么。
首先考虑使用机器学习算法的目的。如果想要预测目标变量的值,则可以选择监督学习算法, 否则可以选择无监督学习算法。确定选择监督学习算法之后,需要进一步确定目标变量类型,如果目标变量是离散型,如是/否、1/2/3、― 冗或者红/黄/黑等,则可以选择分类器算法;如果目标变量是连续型的数值,如0.0~ 100.00、-999999或者+00-00等 ,则需要选择回归算法。
其次,如果不想预测目标变量的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分 为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程 度 ,则需要使用密度估计算法。
但是这些都不是一成不变的,也是也可以进行变通的,比如说第9章我们就会使用分类算法来处理回归问题,显然这将与上面监督学习中处理回归 问题的原则不同。
再然后是考虑数据问题,我们应该充分了解数据,对实际数据了解得越充分,越容易创
建符合实际需求的应用程序。主要应该了解数据的以下特性:特征值是离散型变量还是连续型变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何(是否罕见得如同海底捞针),等等。充分了解上面提到的这些数据特性可以缩短选 择机器学习算法的时间。
1.4开发机器学习应用程序的步骤
本书学习和使用机器学习算法开发应用程序,通常遵循以下的步骤。
1 收集数据。获取样本数据方法很多,如制作网络爬虫从网站上抽取数据、从RSS反馈或者API中得到数据、设备发送过来的实测数据等、公开可用的数据源等。
2 准备输入数据。得到数据之后,还必须确保数据格式符合要求。
3 分析输入数据。此步骤主要是人工分析以前得到的数据。为了确保前两步有效,最简单的方法是用文本编辑器打开数据文件,查看得到的数据是否为空值。此外,还可以进一步浏览数据,分析是否可以识别出模式;数据中是否存在明显的异常值。这一步的主要作用是确保数据集中没有垃圾数据。如果是在产品化系统中使用机器学习算法并且算法可以处理系统产生的数据格式,或者我们信任数据来源, 可以直接跳过步骤3。
4 训练算法。机器学习算法从这一步才真正开始学习。根据算法的不同,第4步和第5步是机器学习算法的核心。我们将前两部得到的格式化数据输入到算法,从中抽取知识或信息。如果使用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法,所有与算法相关的内容都集中在第5步。
5 测试算法。这一步将实际使用第4步机器学习得到的知识信息。为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他的评测手段来检验算法的成功率。无论哪种情形,如果不满意算法的输出结果,则可以回到第4步,改正并加以测试。问题常常会跟数据的收集和准备有关,这时你就必须跳回第1步重新开始。
6 使用算法。将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。此时如果碰到新的数据问题,同样需要重复执行上述的步骤。
1.5Python语言的优势
基于以下三个原因,我们选择Python作为实现机器学习算法的编程语言:
(1)Python语法清晰;
(2 )易于操作纯文本文件;
(3)使用广泛,存在大量的开发文档。
1.6小结
尽管没有引起大多数人的注意,但是机器学习算法巳经广泛应用于我们的日常生活之中。每 天我们需要处理的数据在不断地增加,能够深人理解数据背后的真实含义,是数据驱动产业必须具备的基本技能。
学习机器学习算法,必须了解数据实例,每个数据实例由多个特征值组成。分类是基本的机器学习任务,它分析未分类数据,以确定如何将其放人已知群组中。为了构建和训练分类器,必须首先输人大量巳知分类的数据,我们将这些数据称为训练样本集。尽管我们构造的鸟类识别专家系统无法像人类专家一样精确地识别不同的鸟类,然而构建接 近专家水平的机器系统可以显著地改进我们的生活质量。如果我们可以构造的医生专家系统能够达到人类医生的准确率,则病人可以得到快速的治疗;如果我们可以改进天气预报,则可以减少 水资源的短缺,提高食物供给。我们可以列举许许多多这样的例子,机器学习的应用前景几乎是无限的。