课程地址:山东大学生物信息学
文章目录
七、数据挖掘
● 数据挖掘三要素
- 统计
- 数据库系统
- 机器学习
7.1 数据库系统
● 数据库系统
- 数据库系统 DBS:System(DB+DBMS)
- 数据库管理系统 DBMS: Database Management System (software for management)
- 数据库 DB: Database (data storage)
- 数据库系统 = 数据库 + 数据库管理系统
● 数据库类型
- 关系型数据库:表格形式存储数据。
- 面对对象型数据库:xml 形式存储,结构清晰、灵活,适合存储复杂的生物数据。
● 常用数据库系统
- 关系型数据库系统:MySQL(SQL 语言)
- 面对对象型数据库系统:exist-db (基于 JAVA,XQuery 语言)
7.2 机器学习
- 机器学习 (Machine Learning):主要是设计和分析一些让计算机自动“学习”的算法。这些算法是一类从数据中获得规律,并利用这些规律对未知数据进行预测的算法。
- 机器学习的实现:把需要计算机学习的物体转化成向量,用向量描述物体,让计算机读取向量值。如:
常见的机器学习的任务
1、分类(Classification):有背景知识,根据背景知识判断新物体属于哪一类。
2、聚类(Clustering):没有背景知识,对于一组新物体,通过判断其属性,将所有新物体分组。
3、回归(Regression):有背景知识,根椐背景知识推导出 x1, x2, …,xn 与 y 之间的定量关系,并据此计算新物体的 y。
K 次交叉检验
-
聚类不需要训练组数据学习背景知识(Unsupervised)。
扫描二维码关注公众号,回复: 15708255 查看本文章 -
回归和分类需要训练组数据
training dataset
学习背景知识(Supervised)训练出预测模型,预测模型训练好后还需要从训练组中拿出一部分作为测试组数据test dataset
来测试模型的准确度。 -
理论上,所有已知结果的数据都应该拿来做训练,训练数据以外的数据不知道结果,无法拿来做测试;如果用训练数据做测试是过学习;用测试组数据做测试是欠学习;使用 K 次交叉检验可以避免过学习和欠学习,是检验机器学习效果的常用方法之一。
-
K 次交叉检验 (K-fold cross validation):把所有已知结果的数据分成 k 份。取出第 1 份作为测试组数据,其余 k-1 份作为训练组数据训练模型,用测试组数据测试模型的准确度;再取出第 2 分作为测试组数据,其余 k-1 份作为训练组数据训练模型;依此类推,让每一份都作为依次测试组数据,如此,用同种算法构建出 k 个模型进行 k 次测试,得到 k 个准确度,计算平均准确度,即最终模型的准确度。
-
详见视频:机器学习-01 P127
机器学习的算法
● 几种常见算法:
-
贝叶斯:Bayes theorem
通常,事件 A 在事件 B(发生)的条件下的概率,与事件 B 在事件 A 的条件下的概率是不一样的;然而,这两者是有确定的关系,贝叶斯定理就是这种关系的陈述。P(A|B) = P(B|A)P(A) / P(B)
详见:【学习笔记】山东大学生物信息学-05 高通量测序技术介绍 + 06 统计基础与序列算法(原理) -
最近邻居:Neighbor Joining
将已知物体根据自身的特征属性标记在坐标系中,再将未知物体想据其身的特征属性也标记在坐标系中。新物体离哪个已知物体最近,新物体就是哪种已知物体。
-
决策树:Decision Tree
决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。树的叶子节点表示对象所属的预测结果。
-
支持向量机:Support Vector Machine
支持向量机是一个二分类模型,但也可以扩展为多分类。其基于间隔最大化的特点可以使它更加灵活地处理线性或非线性的分类问题。
类似最近邻居法,将物体根据属性标记在坐标系中,画一条线将不同物体尽可能分开,且线两边离线最近的物体到线的垂直距离尽可能大(间隔最大化,最大最小距离),新物体落在线的哪测就属于哪种物体。
-
遗传算法
-
人工神经网络
-
其他更多算法……
7.3 WEKA
- WEKA 怀卡托智能分析环境 (Waikato Environment for Knowledge Analysis),免费,数据挖掘软件,不用操心算法,输入数据,选择现成的算法,即可输出结果模型。
- Weka 3: Machine Learning Software in Java
- WEKA 存储数据的格式是
ARFF
(Attribute-Relation File Format) 格式,这是一种 ASCII 文本文件。不能直接读取 EXCEL 文件。 - 详见视频:机器学习-01 P127
- WEKA 中的术语:
◆ 表格里的一个横行称作一个实例 (Instance
),相当于统计学中的一个样本,或者数据库中的一条记录。
◆ 表格里的一个竖行称作一个属性 (Attrbute
),相当于统计学中的一个变量,或者数据库中的一个字段。
◆ 这样一个表格,或者叫数据集,在 WEKA 看来,呈现了属性之间的一种关系 (Relation
),例如下图 WEKA 的关系是 weather。
7.3.1 ARFF 文件的格式
● WEKA 读取 ARFF 文件的依据是分行和空格,因此不能随意断行或加入空格,空行和全是空格的行将被忽略。
● %
开头是注释行
● 头信息 (Head information),包括对关系的声明和对属性的声明。
- 关系声明:关系名称在 ARFF 文件的第一个有效行来定义,格式为:
@relation relation-name
其中relation-name
是一个字符串,如果这个字符串中包含空格,它必须加上引号(英文标点的单引号或双引号)。 - 属性声明:用以定义每一个属性的属性名称和属性类型,格式为:
@attribute attr-name attr-type
其中 attr-name 是必须以字母开头的字符串。和关系名称一样,如果这个字符串包含空格,必须加引号。
属性声明语句的顺序表明了属性在数据部分的位置。最后一个声明的属性被称作 class 属性。在分类或回归任务中,它是默认的目标变量。
● 数据信息 (Data information),即数据集中给出的数据。
- 数据信息中
@data
独占一行。接下来是所有实例的数据信息,每个实例占一行。实例的各属性值用逗号,
隔开。如果某个属性的值是缺失值 (missing value)、用问号?
表示,且这个问号不能省略。例如:
@data
sunny,85,85,FALSE,no
?,78,90,?,yes - 字符串型属性和标称型属性的值是区分大小写的。若值中含有空格,必须被引号括起来。
7.3.2 ARFF 属性类型与格式转换
● ARFF 格式共有四种属性类型:
-
数值型
numeric
格式:@attribute name numeric
注意:
numeric = integer = real
“integer”, “real”, “numeric”, “date”, “string” 这些关键字是区分大小写的。
“relation”, "attribute"和 “data” 不区分大小写。 -
标称型
nominal-specification
格式:@attribute name {nominal.name1, nominal-name2,...}
注意:
标称属性由一系列可能的类别名称构成的集合,并放在大括号{}
中。
“name” 或 “nominal-name” 中如果有空格,需要用引号引起来。
“name” 以及所有 “nominal-name” 都是区分大小写的。 -
字符串型
string
格式:@attribute name string
注意:
这种类型的属性在文本挖掘中非常有用。
“name” 中如果有空格,需要用引号引起来。
字符串属性的 “data” 可以包含任意文本。如有空格要用引号引起来。 -
时间日期型
date
格式:@attribute name date "<date-format>"
注意:
日期和时间属性统一用"date"类型表示。
“date-format” 是一个用来规定怎样解析和显示日期时间格式的字符串。
“date-format” 如果省略,则按默认格式(见上)书写。
● 格式转换
- WEKA 不能读取 EXCEL 文件,但可以读取 CSV 文件(用逗号分隔各列的纯文本文件),将 EXCEL 另存为 CSV 文件,即可用 WEKA 的 ArffViewer 打开,然后 File → Save as 保存成
.arff
文件。
- 转成的 ARFF 文件会自动分配属性类型,可能会不准确,需要人工更正。比如下图 name 属性应为字符串型,而不是标称型。
7.3.2 数据准备:Explorer 界面介绍
-
Explorer 界面是数据预处理及挖掘任务界面
-
使用 Open file 打开 weather.numeric.arff 文件。
-
根据不同功能可以把当前所在的
Precrocess
界面分成 8 个区域。
◆ 区域 1 的几个选项卡可用来切换不同的挖掘任务面板。当前所在的 Preprocess 面板可进行数据预览和预处理。
◆ 区域 2 是一些常用的功能按钮。包括打开、撤销、编辑、保存等。
◆ 区域 3(数据预处理) 中通过使用filter
选项里的各种函数,可以实现对数据的筛选或对属性类型的转换。
◆ 区域 4 (Current relation
) 展示了数据集的一些基本情况,包括:关系名称,属性个数,实例个数。
◆ 区域 5 (Attributes
) 中列出了所有属性。Remove
按钮可以删除某些属性,删除后可利用区域 2 的Undo
按钮找回。区域 5 上方的一排按钮是用来实现快速勾选的。
◆ 在区域 5 中选中某个属性,则在区域 6 (Selected attribute
) 中会出现关于这个属性的摘要。注意对于数值型属性和标称型属性,摘要的显示方式是不样的。
◆ 区域 7 是区域 5 中选中属性的直方图。直方图反映了标称型目标属性(class 属性)的各个标称在当前选中属性的各个标称中的分布情况。WEKA 默认将最后一个定义的属性为目标属性。也可通过下 Class 属性下拉菜单重新选择。
△Visualize All
可查看所有属性的直方图。标称型属性和数值型属性的直方图是有差别的,数值型的直方图是根据平均值划分出两个区段,分别统计每个区段里 class 属性值的分布。
◆ 区域 8 是状态栏,可以查看日志以判断程序是否出错。weka 鸟反映了任务数量和任务状态。右键点击状态栏还可以执行内存垃圾回收。
7.3.3 数据预处理
- 详见视频:WEKA-04 数据预处理 P132
数据预处理(1)属性转换
- 有些算法,只能处理所有属性都是标称型的数据。这就需要将数值型的属性转换成标称型。
filters - unsupervised - attribute -Discretize
离散化函数 → 点击参数框设置参数(如下)→ Apply。
attributeIndices
:选择转换哪些属性,输入属性的顺序编号,以逗号相隔。
bins
: 设置离散化成几段,即转化成几个标称。
NumericToNominal
函数也可以将数值型转换成标称型,与 Discretize 函数略有不同。
数据预处理(2)增加属性
- 通过
AddExpression
函数定义公式,并据此添加一个新属性。 - 比如:添加新属性 temp/humi, 它的值等于 temperature 的值除以 humidity 的值。
- 注意:新创建的属性添加在最后!这就会影响 WEKA 对 class 属性的判断!需要人工修正 class 属性的选取!
7.3.4 执行挖掘任务
- 详见视频:WEKA-05 执行挖掘任务 P133
- 目标属性(输出变量)是标称型就是分类任务,数值型就是回归任务。
WEKA 自带的典型算法
● 典型的分类算法:
- Bayes(贝叶斯分类器) :
BayesNet(贝叶斯信念网络)
NaiveBayes(朴素贝叶斯网络) - Functions:
Multilayer Perceptron(多层前馈人工神经网络)
SMO(支持向量机) - Trees(决策树分类器):
Id3 (ID3 决策树学习算法)
J48 (C4.5 决策树学习算法)
RandomTree(随机决策树算法)
RandomForest(基于决策树的组合方法)
● 典型的回归算法:
- Functions:
LinearRegression(除目标属性以外,支持多个属性)
SimpleLinearRegression(除目标属性以外,只支持一个属性)
PaceRegression (Pace 回归)
WEKA 实操
- 详见视频:WEKA-05 执行挖掘任务 P133
- 数据文件:weka 安装目录下的 data/diabetes.arff
- 1、构建模型:通过 8 种生理指标预测糖尿病结果(阴性或阳性)(分类任务)。
- 2、结果输出:文本形式的决策树和图形化的决策树。
文本形式的决策树方便进一步编写程序以实现预测模型的自动化。
放大决策树:
决策树末端叶子只有两种:预测的糖尿病结果为阴性或阳性。
- 3、预测准确度:
预测得出的 TN、FN、TP、FP 可以代入公式计算出各种准确度衡量参数,包括 Sensitivity 和 Specificity。
当把 tested_negative 定义为阳性,tested_positive 定义为阴性后,会得出另一套 TN、FN、TP、FP,从而计算出另一组准确度衡量参数,两次统计结果可以分别体现出目标中每个标称的预测质量。