7.1分类过程
分类过程
[P1] 前面我们说过聚类算法,聚类是把一群数据,根据它们自身的属性,聚成一群一群,从而形成一个一个的类别,这里可以看到,一开始我们对数据的类别是一无所知的,通过对数据的属性分析我们才获得数据类别信息,这是聚类算法。从本章开始,我们要处理的主要都是分类问题。分类问题与聚类问题不同,它已经知道了用于训练的数据对象的每个所属类别标号,我们需要解决的问题是,对于不知道标号的数据对象,给它们分配标号。一般而言,每个数据对象有且仅有一个标号。因为已知训练集中的类别标号,所以分类问题在机器学习教材中通常被称为“有监督的学习”。
[P2] 我们通过三个部分来学习分类过程,首先是分类过程的介绍,然后是对于分类的学习阶段构建分类模型,最后根据学习的模型,我们真正的对新数据做分类操作。
[P3] 分类是一种重要的数据挖掘技术。分类的目的是建立分类模型,并利用分类模型预测未知类别数据对象的所属类别。分类问题的实质是预测,通过已知的信息,包括训练集中数据对象的特征和类别标号,以及测试集中数据对象的特征,来预测未知的信息,即测试集中数据对象的类别标号。这与聚类不一样,聚类是属于描述性的问题,让我们看到隐藏在原始数据中的一些深刻模式。 一般而言,数据挖掘的问题都是分为这两类:一种是描述性的,如聚类,一种是预测性的,如分类。因为分类在数据挖掘中特别重要,所以我们往往把它视作单独的一类,与预测相区分。
[P4] 分类任务就是通过学习得到一个目标函数f,把每个数据集 x 映射到一个预先定义的类别 y,即 y=f(x)。这个目标函数就是分类模型。分类和聚类不一样,分类首先需要有一个学习的过程,也就是我们把数据集分出一部分,这部分数据的分类结果是已知的,用这部分已知结果的数据集去训练学习,从数据学习中总结拟合出一个数据模型函数。这个函数验证能够比较好的贴合我们已有的数据规律,比如 y=f(x),把每一个数据的都带入其中,得到一个y,y的误差在可控范围之内,我们就认可这个模型函数。接下来,我们就需要用这个模型函数,对剩下的未知数据去做分类操作,得到剩下未知数据的分类结果。
[P5] 学习阶段是通过分析由已知类别数据对象组成的训练数据集,建立描述,并区分数据对象类别的分类函数或分类模型。所以,在学习阶段,最主要的就是由已知的数据,去推导出一个数据模型的公式,然后我们才可以用这个模型公式去对后续未知的数据做计算,得到未知数据的分类结果。学习阶段又分为 训练 和 测试 两个部分。在训练阶段,我们用已知结果的数据,分析它们的属性和对应的结果,从而构建数据分类模型。模型构建完成之后,我们需要验证这个数据模型到底准确性如何,于是我们需要用到另外一部分已知结果的数据,用这部分数据去验证数据模型的计算结果,看看结果的精准度如何,这就是测试阶段。只有经过了测试验证的数据模型,才是可用的,才能用于后续未知数据的分类计算。
[P6] 建立分类模型,学习阶段的主要任务是通过已知结果的数据,建立起分类数据模型。我们假设已知数据集为S,它的每个数据同时拥有 m 个属性,我们用 A1 到 Am 来表示数据的 m个属性。对于每个数据,我们都已知它的分类为 C,那么一个数据就可以用 X = (A1...Am 外加 C) 来表示。其中数据的属性 A 可以是连续值,比如年龄从1岁到100岁的任意值,或者,属性也可以是离散值,比如性别只有 男、女两个取值。整个训练数据的数据集一共有 k 个已知分类,从C1 到 Ck 。我们需要根据这些数据的属性和分类,去拟合出一个函数 f(x),使得函数对每个数据的计算结果都能在误差之内和已知分类相匹配,满足这些条件,这个数据函数就是合格的数据模型。
[P7] 对于分类算法得到的数据模型,我们需要进行比较和评估,从而确定这个数据模型的有效性。一般情况下,我们从下面几个指标来衡量一个数据模型的分类算法是否有效。准确率,把计算的分类结果和已知的分类结果对比,看准确比例,从而确定分类模型的预测能力。速度,由于我们做分类的数据量可能非常庞大,所以数据模型的计算速度和效率就非常重要。强壮性,真实的数据难免是有瑕疵的,比如有些属性不存在或者为空,这个时候算法应该在这些噪声数据上能正确处理,并且不会影响整体最终结果。可伸缩性,对于小数据量和大数据量,都能够在可接受的时间内建立起数据模型。可解释性,
[P8] 其中,对于分类模型最重要的指标是 准确率。一个算法,首要保证的一定是数据计算匹配准确,否则算法无意义。对已经建立模型的算法,我们用事先准备好的测试数据去挨个计算,然后针对计算结果和事先知道的数据分类结果比对,其中算法计算预测正确的结果占总结果的比例,称为正确率。如果正确率超过我们设定的阈值,这个分类模型算法就是有效的,否则,这个分类模型无效需要重新建立模型。
[P9] 有了分类模型,并且,已经验证过模型算法的正确率合格。现在就可以对未知数据按照算法进行分类了。一般情况下,我们拿到一批新数据,首先要对数据做一些预处理,以保证数据能符合算法的计算条件和要求。预处理的方式和我们之前的训练数据是一样的。经过预处理的数据,就可以用我们的模型算法去计算分类了,得到的结果如果需要,可能还要做一次修正,最终得到新数据的分类。
[P10] 总结一下,这章我们主要说了分类算法的两个过程,学习阶段 和 分类阶段。一个分类算法,首先需要建立它的数据分类模型,也就是生成一个计算函数,用于计算数据的分类。这个模型依赖于一批已经知道结果的数据,称为训练数据,我们用这些数据来生成分类模型,并且,我们需要对数据模型验证它的正确率数据。有了数据模型之后,我们可以把一批新的未知数据进行预处理,然后用数据模型计算,从而得到这些新数据的分类结果,这样就完成了用一批已知数据,建立数据模型,最终推演出后续数据的分类结果。