APP下载

案例驱动下的分类与预测课程教学方法研究

2018-08-17方贤文陈小奎

长春师范大学学报 2018年8期
关键词:朴素结点决策树

方 欢,方贤文,郭 娟,陈小奎

(安徽理工大学数学与大数据学院,安徽淮南 232001)

近年来,随着大数据技术应用的深入,开设“数据科学与大数据技术”(专业代码:080910T)以及在已有专业的基础上增设“数据分析与挖掘”专业方向的本科院校越来越多,而在市场招聘中,对于数据分析与挖掘类人才的能力与要求也各有不同。根据领英人才报告,相关的大数据人才需求可以分为几个层次,具体如表1所示。从表1的岗位和技术能力要求可以看出,虽然大数据分析师是目前的亟需人才,但是这个岗位对专业技术能力的要求也较高。因此,在本科院校中研究如何展开数据分析师相关课程的教学工作十分必要。

表1 市场对大数据人才的需求层次

以笔者所在学校为例,其目前在应用统计学、信息与计算科学两个理科专业,都开设有“数据分析与处理”“数据挖掘技术”以及“Python程序设计方法”等课程[1-3],用以支撑这两个专业学生在数据分析方向的就业,这也进一步促进了有关数据挖掘相关课程的教学研究[4-7]。本文针对“数据挖掘技术”课程中“分类与预测”内容的教学方法进行深入探讨,结合教学实践,阐述在案例驱动的条件下使用Python程序对分类与预测方法进行教学,并给出相关的实验设计方案。

1 分类与预测的总体教学方案设计

1.1 经典的分类与预测方法

在“数据挖掘技术”课程中,主要介绍以下六种分类与预测方法:(1)基于决策树的分类预测方法;(2)基于条件规则的分类预测方法;(3)基于神经网络的分类预测方法;(4)基于支持向量机的分类预测方法;(5)基于朴素贝叶斯及贝叶斯信念网络的分类预测方法;(6)基于记忆的推理分类预测方法。

在这些方法中,基于决策树的方法、朴素贝叶斯方法以及基于条件规则的方法不需要太多的预备知识,只需要掌握经典的概率论方法即可,因此在本科生教学时选择这三种方法为主要讲解内容,调整后的分类预测方法教学内容如下:(1)信息熵理论、信息的不确定性理论;(2)决策树的概念;(3)ID3分类预测算法;(4)规则条件系统以及决策树与条件规则系统的转换;(5)朴素贝叶斯分类预测算法;(6)分类预测算法的评价。

1.2 背景案例

表2 采集的案例数据集

表3 需要分类预测的数据集

2 基于信息熵的ID3算法

2.1 信息熵与信息的不确定性

2.1.1 基于古典概率模型的信息熵

例 有32个足球队比赛,每个队实力相当,每一个队胜出的概率都是1/32,那么要猜对哪个足球队胜出非常困难,此时熵H(X)=5。试想如果32个队中有1个是AC米兰队,另外31个队是安理信计1班、2班、…、31班,那么几乎只有一个可能,即AC米兰队胜利的概率是100%,其他球队的获胜概率都为0,此时这个系统的熵就是H(X)=0。

2.1.2 熵的性质

(1)有序的系统,熵为0;(2)熵也可以作为一个系统的混乱程度的标准,系统越混乱,熵越大。因此,熵可以作为衡量信息量大小的度量标准之一。

2.2 决策树的基本概念

决策树是样本知识的一种表现形式,主要由三类结点组成:决策结点、分支以及叶子结点,其中决策结点由样本属性构成,而分支则来源于样本属性的取值,叶子结点为分类标签值。图1给出了一个流感问题描述的决策树模型,方形为决策结点,圆形是叶子结点,而边上的标注为属性分支。

2.3 基于ID3算法的决策树构造

2.3.1 决策树构造思路

使用贪心法来选择具有最高信息增益的属性作为当前计算的分裂属性,因此一颗ID3决策树一定满足以下三个条件:(1)决策树的根结点是所有样本中信息量最大的属性;(2)树的中间结点是以该结点为根的子树所包含的样本子集中信息量最大的属性;(3)决策树的叶子结点是样本的类别值。

2.3.2 决策树的计算过程

2.3.3 算法示例

根据决策树构造算法,对表2的样本数据进行计算,可以得到如图2所示的决策树模型。

3 决策树模型向条件规则系统的转换方法

根据决策树模型,可以很容易得到相关样本的条件规则系统。转换规则如下:从树根开始,选择任意一条可以达到叶子结点的路径,将分裂属性及其对应的分支条件结合起来,并使用合取条件进行条件复合,即可得到一条规则,重复这个过程直至所有的路径都被遍历。

根据这个思路,图2的决策树表达成条件规则系统,如下所示:

(1)age<=30 and student=’no’ then buys_computer=’no’;

(2)age<=30 and student=’yes’ then buys_computer=’yes’;

(3)age in 31..40 then buys_computer=’yes’;

(4)age>40 and credit_rating=’excellent’ then buys_computer=’no’;

(5)age>40 and credit_rating=’fair’ then buys_computer=’yes’.

由此,这五条规则构成了表2样本的条件规则系统。

4 基于朴素贝叶斯算法的分类预测方法

4.1 朴素贝叶斯算法的基本思想

所谓的“朴素”是指样本的属性特征相互独立,在此条件下才可以进行朴素贝叶斯的分类预测算法。

朴素贝叶斯分类的思想如下:

step1 设x={a1,a2,…,am}为一个待分类项,而每个ai为x的一个特征属性;

step2 有类别集合C={y1,y2,…,yn};

朴素贝叶斯分类决策算法的决策过程如图3所示。

4.2 朴素贝叶斯算法演示

以表2的样本数据为例,假设待分类数据x为x={age=”<=30”,income=”medium”,student=”yes”,credit_rating=”fair”},表2的样本可以分为两类:Class y1:buys_computer=“yes”和Class y2:buys_computer=“no”。

计算过程如下:

step1 计算每个类的先验概率P(yi):P(y1)=9/14,P(y2)=5/14;

step2 计算每个特征属性对于每个类别的条件概率:

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

step5 结论

对于样本x,朴素贝叶斯分类预测buys_computer=”yes”。

5 基于Python的分类预测程序实现方法

Python程序是目前数据挖掘与机器学习最常用的一门设计语言,使用Python对上述的ID3以及朴素贝叶斯算法进行使用大致有两种途径:(1)可以根据本文给出的算法思路进行个性化设计,将算法过程用Python进行展示;(2)通过调用Python中的scikit-learn包库来进行算法调用。前者耗时较大,后者使用比较简单。本文主要讲解后者的调用方法。

5.1 ID3算法的Python包库调用方法

在scikit-learn包库中存在decision-tree-id3模型,可以使用如下格式进行调用(其中load_breast_cancer为调用的数据集名称):

>>>from sklearn.datasets import load_breast_cancer

>>>from id3 import Id3Estimator

>>>from id3 import export_graphviz

>>>bunch = load_breast_cancer()

>>>estimator = Id3Estimator()

>>>estimator.fit(bunch.data, bunch.target)

>>>export_graphviz(estimator.tree_, ’tree.dot’, bunch.feature_names)

5.2 scikit-learn中朴素贝叶斯模型的调用方法

在scikit-learn中存在三种不同属性的朴素贝叶斯模型。(1)高斯分布模型:假定属性(特征)服从整体分布;(2)多项式模型:用于离散值模型,比如文本分类与挖掘问题;(3)伯努利模型:在这种情形下,特征只能表述为0(没出现)或1(出现过)。

其各自的调用方式分别为:

>>>fromsklearn import metrics

>>>fromsklearn.naive_bayes import GaussianNB

>>>fromsklearn.naive_bayes import MultinomialNB

>>>fromsklearn.naive_bayes import BernoulliNB

以其中的GaussianNB模型为例,下面给出一组GaussianNB的分类预测算法实现过程:

>>>model= GaussianNB()

>>> start_time= time.time()

>>>model.fit(X,y)

>>>print(’training took %fs!’%(time.time()-start_time))

>>>print(model)

>>>expected= y

>>>predicted= model.predict(X)

>>>print(metrics.classification_report(expected,predicted))

>>>print(metrics.confusion_matrix(expected,predicted))

6 结语

在目前大数据背景下,我们把分类和预测统称为推测。分类就是应用已知的一些属性数据去推测一个未知的离散型的属性数据,而这个被推测的属性数据的可取值是预先定义的。想要很好地实现这种推测,就需要事先在已知的一些属性和未知的离散型属性之间建立一个有效的模型,即分类模型。本文主要讲解了应用古典概率模型就可以计算的ID3决策树模型、朴素贝叶斯算法模型。除此之外,还有很多可以应用的数学模型,比如神经网络、logistic回归、支持向量机等。这些数学模型可能比较难,如何将这些数学模型与编程语言结合起来是一件非常困难的事情,需要教师不断地应用各种案例进行引导,加深学生的理解。另外,在实际教学过程中,还可引入一些案例让学生动手实践,使学生对分类预测方法有更深刻的理解,提高学生的实践动手能力。

猜你喜欢

朴素结点决策树
隔离朴素
基于八数码问题的搜索算法的研究
朴素的安慰(组诗)
他是那样“笨拙”和朴素——30多年后,我们为什么还需要读路遥?
一种针对不均衡数据集的SVM决策树算法
最神奇最朴素的两本书
决策树和随机森林方法在管理决策中的应用
基于决策树的出租车乘客出行目的识别
基于肺癌CT的决策树模型在肺癌诊断中的应用
基于Raspberry PI为结点的天气云测量网络实现