目录
1. 什么是机器学习?
机器学习是一个计算机程序,针对某个特定的任务,从经验中学习,并且越做越好。 从这个理解上,我们可以得出以下针对机器学习最重要的内容。
数据:经验最终要转换为计算机能理解的数据,这样计算机才能从经验中学习。谁握的数据量大、质量高,谁就占据了机器学习和人工智能领域最有利的资本。用人类来类比,数据就像我们的教育环境,一个人要变得聪明,一个很重要的方面是能享受到优质的教育。所以,从这个意义来讲,就能理解大型互联网公司开发出来的机器学习程序性能为什么那么好了,因为他们能获取到海量的数据。
模型:即算法,是本书要介绍的主要内容。有了数据之后,可以设计一个模型,让数据作为输入来训练这个模型。经过训练的模型,最终就成了机器学习的核心,使得模型成为了能产生决策的中枢。一个经过良好训练的模型,当输入一个新事件时,会做出适当的反应,产生优质的输出。
2. 机器学习分哪两类?它们之间有什么区别?
机器学习可以分成以下两类。
有监督学习(Supervised learning)通过大量已知的输入和输出相配对的数据,让计算机从中学习出规律,从而能针对一个新的输入做出合理的输出预测。比如,我们有大量同特征(面积、地理位置、朝向、开发商等)的房子的价格数据,通过学习这些数据,预测一个已知特征的房子价格,这种称为回归学习(Regression learning),即输出结果是一个具体的数值,它的预测模型是一个连续的函数。再比如我们有大量的邮件,每个邮件都已经标记是否是垃圾邮件。通过学习这些已标记的邮件数据,最后得出一个模型,这个模型对新的邮件,能准确地判断出该邮件是否是垃圾邮件,这种称为分类学习(Classfication learning),即输出结果是离散的,即要么输出1表示是垃圾邮件,要么输出0表示不是垃圾邮件。
无监督学习(Unsupervised learning)通过学习大量的无标记的数据,去分析出数据本身的内在特点和结构。比如,我们有大量的用户购物的历史记录信息,从数据中去分析用户的不同类别。针对这个问题,我们最终能划分几个类别?每个类别有哪些特点?我们事先是不知道的。这个称为聚类(Clustering)。这里需要特别注意和有监督学习里的分类的区别,分类问题是我们已经知道了有哪几种类别;而聚类问题,是我们在分析数据之前其实是不知道有哪些类别的。即分类问题是在已知答案里选择一个,而聚类问题的答案是未知的,需要利用算法从数据里挖掘出数据的特点和结构。
这两种机器学习类别的最大区别是,有监督学习的训练数据里有已知的结果来“监督” ;而无监督学习的训练数据里没有结果“监督”,不知道到底能分析出什么样的结果。
3. 机器学习应用开发的典型步骤
假设,我们要开发一个房价评估系统,系统的目标是对一个已知特征的房子价格进行评估预测。建立这样一个系统需要包含以下几个步骤。
3.1 数据采集和标记
我们需要大量不同特征的房子和所对应的价格信息,可以直接从房产评估中心获取房子的相关信息,如房子的面积、地理位置、朝向、价格等。另外还有一些信息房产评估中 心不一定有,比如房子所在地的学校情况,这一特征往往会影响房子的价格,这个时候就需要通过其他途径收集这些数据,这些数据叫做训练样本,或数据集。房子的面积、地理位置等称为特征。在数据采集阶段,需要收集尽量多的特征。特征越全,数据越多,训练 出来的模型才会越准确。
3.2 数据清洗
假设我们采集到的数据里,关于房子面积,有按平方米计算的,也有按平方英尺计算的,这时需要对面积单位进行统一。这个过程称为数据清洗。数据清洗还包括去掉重复的数据及噪声数据,让数据具备结构化特征,以方便作为机器学习算法的输入。
3.3 特征选择
假设我们采集到了100个房子的特征,通过逐个分析这些特征,最终选择了30个特征作为输入。这个过程称为特征选择。特征选择的方法之一是人工选择方法,即对逐个特征进行人员分析,然后选择合适的特征集合。另外一个方法是通过模型来自动完成,如PCA算法。
3.4 模型选择
房价评估系统是属于有监督学习的回归学习类型,我们可以选择最简单的线性方程来模拟。选择哪个模型,和问题领域、数据量大小、训练时长、模型的准确度等多方面有关。
3.5 模型训练和测试
把数据集分成训练数据集和测试数据集,一般按照8:2或7:3来划分,然后用训练数据集来训练模型。训练出参数后再使用测试数据集来测试模型的准确度。为什么要单独分出一个测试数据集来做测试呢?答案是必须确保测试的准确性,即模型的准确性是要用它“没见过”的数据来测试,而不能用那些用来训练这个模型的数据来测试。理论上更合理的数据集划分方案是分成3个,此外还要再加一个交叉验证数据集。
3.6 模型性能评估和优化
模型出来后,我们需要对机器学习的算法模型进行性能评估。性能评估包括很多方面,具体如下。训练时长是指需要花多长时间来训练这个模型。对一些海量数据的机器学习应用,可能需要1个月甚至更长的时间来训练一个模型,这个时候算法的训练性能就变得很重要了。 另外,还需要判断数据集是否足够多,一般而言,对于复杂特征的系统,训练数据集越大越好。然后还需要判断模型的准确性,即对一个新的数据能否准确地进行预测。最后需要判断模型是否能满足应用场景的性能要求,如果不能满足要求,就需要优化,然后继续对模型进行训练和评估,或者更换为其他模型。
3.7 模型使用
训练出来的模型可以把参数保存起来,下次使用时直接加载即可。一般来讲,模型训练需要的计算量是很大的,也需要较长的时间来训练,这是因为一个好的模型参数,需要对大型数据集进行训练后才能得到。而真正使用模型时,其计算量是比较少的,一般是直接把新样本作为输入,然后调用模型即可得出预测结果。
310

被折叠的 条评论
为什么被折叠?



