模式识别4次作业汇总.docx
《模式识别4次作业汇总.docx》由会员分享,可在线阅读,更多相关《模式识别4次作业汇总.docx(36页珍藏版)》请在冰豆网上搜索。
模式识别4次作业汇总
北京工商大学
模式识别作业汇总
(2014年秋季学期)
课程名称:
模式识别
专业班级:
计研141班
学生姓名:
董文菲刘倩
指导教师:
于重重
成绩:
2015年1月20日
第一次课的作业
1.在Matlab环境下,利用第一题中给了matlab程序,尝试声音识别过程,并把程序流程图画出。
解:
程序实现了识别“kiss”与“love”两个声音的界面图。
程序流程图如下:
2.运行网址
http:
//www.wcl.ece.upatras.gr/en/ai/resources/demo-emotion-recognition-from-speech
上的javaapplet,了解声音识别的过程。
解:
智能对话系统的测试点如下图所示,
该智能对话系统可以通过语音交互获取信息,控制娱乐设备等智能应用。
情感识别的构成如下图:
情感识别依赖于先进的音频参数化技术,利用高斯混合模型训练情绪识别模型。
目前负面情绪的识别得到了很好的结果。
3.选择鸢尾花数据集(iris,网上下载),并尽可能多地使用《数据挖掘导论第三章》介绍的不同的可视化技术完成数据预处理(可参看第三章资料中的辅助ppt),形成报告。
文献注释和该书网站提供了可视化软件的线索。
解:
(1)分类
选择朴素贝叶斯分类器算法,训练选项选择交叉验证,即把数据集分成若干份,1份作为验证集,其余部分作为训练集合。
这样的方法保证了数据集的所有元素都被验证过。
这里把数据集分为10份来进行训练。
分类器运行的信息,分类器训练的结果,分类器验证验证的结果、准确性计算等信息如下:
Visualize信息图,3种类别用不同颜色表示出来。
可以从图中看出哪些属性的组合具有较好的区分度。
(2)离散化(discretize):
类weka.filters.supervised.attribute.Discretize和weka.filters.unsupervised.attribute.Discretize。
分别进行监督和无监督的数值属性的离散化,用来离散数据集中的一些数值属性到分类属性。
unsupervised.attribute.Discretize:
supervised.attribute.Discretize
(3)规范化(Nomalize):
类weka.filters.unsupervised.attribute.Normalize。
规范化给定数据集中的所有数值属性值,类属性除外。
结果值默认在区间[0,1],但是利用缩放和平移参数,我们能将数值属性值规范到任何区间。
如:
但scale=2.0,translation=-1.0时,你能将属性值规范到区间[-1,+1]。
(4)标准化(standardize):
类weka.filters.unsupervised.attribute.Standardize。
标准化给定数据集中所有数值属性的值到一个0均值和单位方差的正态分布。
第二次课的作业
1.
解:
属性有四种类型:
标称、序数、区间、比率。
其中标称和序数属性统称分类的或定性的。
区间和比率是数值的或定量的。
1)众数
一组数据中出现次数最多的数据就是这组数据的众数。
2)x2检验
亦称卡方检验。
统计学中假设检验的方式之一。
x是一个希腊字母,x2可读音为卡方,所以译为卡方检验。
卡方检验主要用于定类或定序变量的假设检验,在社会统计中应用非常广泛。
卡方检验的步骤一般为:
(1)建立假设,确定显著水平a与自由度df、查x2值表得到否定域的临界值;
(2)由样本资料计算x2值;
(3)将计算所得的x2值与临界x2值(负值都取绝对值)作比较,若计算值大于临界值,则否定Ⅱ0;反之,则承认Ⅱ0。
计算卡方值的公式一般可表示为:
x2=∑[(fo—fc)2/fc]
式中:
fo表示实际所得的次数,fc表示由假设而定的理论次数,∑为加总符号。
x2检验对于定类与定类或定类与定序变量之间的相关检验应用较多。
例:
用卡方检验拟合优度:
[h,p,st]=chi2gof(bins,'ctrs',bins,...
'frequency',obsCounts,...
'expected',expCounts)
bin:
有n组数值则:
bin=0:
(n-1);
obsCounts:
观测值
expCounts:
期望值
h,p,st:
返回值
3)符号检验
符号检验法:
是通过两个相关样本的每对数据之差的符号进行检验,从而比较两个样本的显著性。
具体地讲,若两个样本差异不显著,正差值与负差值的个数应大致各占一半。
符号检验与参数检验中相关样本显著性t检验相对应,当资料不满足参数检验条件时,可采用此法来检验两相关样本的差异显著性。
根据符号检验判断差异显著性时也要查表找出相应的临界值。
但特别应注意的是在某一显著性水平下,实得的r值大于表中r的临界值时,表示差异不显著,这一点与参数检验时的统计量和临界值的判断结果不同。
4)均值
M=mean(A)
返回沿数组中不同维的元素的平均值。
如果A是一个向量,mean(A)返回A中元素的平均值。
如果A是一个矩阵,mean(A)将中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。
如果A是一个多元数组,mean(A)将数组中第一个非单一维的值看成一个向量,返回每个向量的平均值。
例:
5)标准差(StandardDeviation)
在概率统计中最常使用作为统计分布程度(statisticaldispersion)上的测量。
标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。
标准差也被称为标准偏差,或者实验标准差,公式为:
6)皮尔逊相关
皮尔逊相关系数是一种度量两个变量间相关程度的方法。
它是一个介于1和-1之间的值,其中,1表示变量完全正相关,0表示无关,-1表示完全负相关。
7)几何平均数
几何平均数是求一组数值的平均数的方法中的一种。
适用于对比率数据的平均,并主要用于计算数据平均增长(变化)率。
n个观察值连乘积的n次方根就是几何平均数。
根据资料的条件不同,几何平均数分为加权和不加权之分。
设一组数据为X1,X2,...,Xn,且大于0,则几何平均数Xg为:
Xg=√∏xi,i=1,2,...,n
8)算数平均
算术平均数是加权平均数的一种特殊形式(特殊在各项的权重相等)。
在实际问题中,当各项权重不相等时,计算平均数时就要采用加权平均数;当各项权相等时,计算平均数就要采用算数平均数。
9)调和平均
调和平均数(HarmonicAverage)又称倒数平均数,是总体各统计变量倒数的算术平均数的倒数。
简单调和平均数是算术平均数的变形,它的计算公式如下:
2.以DimensionalityReduction为关键词,做一个简单的文献综述(1000-1500字),总结一下你理解的最近常用的DimensionalityReduction。
数据降维方法综述
在科学研究和工程实际中,很多大数据集具有高维数的特点。
如:
图像分析,计算机视觉,地震属性,三维模型的分类与检索等。
这些丰富的数据资源在给人们带来便利的同时也带来了一大堆的难题,例如信息过量、难以处理、有价值的信息淹没在海量数据中、数据难以取舍等等。
因此,如何对这些丰富的数据资源进行有效的分析,挖掘出数据中蕴含的有用信息己经成为目前的研究者和技术专家所面临的共挑战。
为了解决这一问题,可以首先将数据降到低维空间,然后利用得到的低维特征进行既定的学习或者挖掘任务。
有效的数据降维技术(DimensionalityReduction)能够探索出原始数据的内在结构和联系,不仅可以消除数据间的冗余,以简化数据,提高计算效率,还能够大大改善数据的可理解性,提高学习算法的精度。
数据降维的方法可以分为线性降维技术和非线性降维技术。
线性降维技术通常假设数据集采样自一个全局线性的高维空间,即构成数据的各变量之间是独立无关的。
如果所面临的数据确实具有全局线性的结构,或者在一定程度上可以近似为全局线性时,这些方法能够有效地学习出其线性结构,得到数据紧致的低维表示。
常用的比如主成分分析(PCA:
PrincipleComponentAnalysis),独立成分分析(ICA:
IndependentComponentAnalysis),线性判别分析(LDA:
LinearDiscriminantAnalysis)。
其它如因子分析,多维尺度变换、典型相关分析等。
然而在现实中所获取的许多数据其各个属性间常常是强相关的,呈现出高度的非线性,例如文本数据、图像数据、语音数据以及视频数据等。
这些数据都具有难以获知的复杂结构,此时,采用线性方法就无法得到理想的效果。
为了解决这一问题,也提出了许多非线性降维算法。
如基于核思想的降维方法:
核主成分分析(KPCA),核独立成分分析(KICA),核FISHER判别分析(KFDA)。
另如基于流形学习的方法:
局部线性嵌入(LLE),等距映射(ISOMAP)。
阅读文献比较中发现现有降维方法存在以下有待解决的问题:
1、现有的非线性降维方法对于个别的人造数据效果很好,但对于现实数据往往并不优于传统的线性方法,因而要进一步研究这些非线性降维
方法使其得到最大程度的改进;2、流形学习的提出为数据降维提供了非常有利的框架,但它们大多为局部方法,局部方法的一个很大的缺陷就是受噪声影响大,如何减少噪声的干扰、提高算法的鲁棒性一直以来都是研究的方向;3、现有降维方法不具有增值能力,对动态增加的观测数据点不能快速明确地映射到低维空间,学习改进增量算法具有一定的研究价值。
3.特征子集选择和特征生成的方法是否一样?
你说说你的理解
解:
不一样。
(1)特征生成是选择事物所特有的性质。
特征生成的思路如下:
•时域、频域、时频联合
–相关系数、FFT、DCT、Wavelet、Gabor
•统计、结构、混合
–直方图、属性‐关系图
•底层、中层、高层
–颜色、形状、纹理、梯度、语义
•模型
–ARMA、LPC
(2)特征选择也叫特征子集选择(FSS,FeatureSubsetSelection),是指从已有的M个特征(Feature)中选择N个特征使得系统的特定指标最优化,是从原始特征中选择出一些最有效特征以降低数据集维度的过程。
特征子集产生过程是搜索特征子空间的过程。
搜索的算法分为完全搜索(Complete),启发式搜索(Heuristic),随机搜索(Random)3大类,如下图1所示。
图1特征子集产生过程算法分类图
4.完成对Brute-forceapproch算法的简单实现,并找到一种改方法的改进算法,给出流程,重点说明改进后算法的优点。
解:
Brute-Force算法的基本思想是:
(1)从目标串s的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s的第二个字符起再重新和串t进行比较。
(2)依此类推,直至串t中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在串s中的位置就是t在s中的位置,否则模式匹配不成功。
Brute-Force算法的C语言实现:
#include"stdafx.h"
#include
#include"stdlib.h"
#include
usingnamespacestd;
//宏定义
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineMAXSTRLEN100
typedefcharSString[MAXSTRLEN+1];
/*返回子串T在主串S中第pos位置之后的位置,若不存在,返回
*/
intBFindex(SStringS,SStringT,intpos)
{
if(pos<1||pos>S[0])exit(ERROR);
inti=pos,j=1;
while(i<=S[0]&&j<=T[0])
{
if(S[i]==T[j])
{
++i;++j;
}
else{
i=i-j+2;
j=1;
}
}
if(j>T[0])returni-T[0];
returnERROR;
}
voidmain()
{
SStringS={13,'a','b','a','b','c','a','b','c','a','c',
'b','a','b'};
SStringT={5,'a','b','c','a','c'};
intpos;
pos=BFindex(S,T,1);
cout<<"Pos:
"<}
改进后的算法--KMP算法:
每当一趟匹配过程中出现字符比较不等时,不需要回溯I指针,而是利用已经的带的“部分匹配”的结果将模式向右滑动尽可能远的一段距离后,继续进行比较。
即尽量利用已经部分匹配的结果信息,尽量让i不要回溯,加快模式串的滑动速度。
KMP算法的最大优点是消除了主串指针的回溯,从而使算法效率有了某种程度的提高。
KMP算法的流程图如下:
第三次课的作业
1.考虑表4-7中二元分类问题的训练样本。
(a)计算整个训练样本集的Gini指标值。
(b)计算属性顾客ID的Gini指标值。
(c)计算性别属性的Gini指标值。
(d)计算多路划分属性车型的Gini指标值。
(e)计算使用多路划分属性衬衣尺码的Gini指标值。
(f)下面哪个属性更好,性别、车型还是衬衣尺码?
(g)解释为什么属性顾客ID的Gini值最低,但却不能作为属性测试条件?
解:
(a)计算整个训练样本集的GINI指标值。
C0
C1
10
10
P(C0)=10/20=0.5P(C1)=10/20=0.5
训练样本集的Gini=1–P(C0)
–P(C1)
=1–0.25-0.25=0.5
(b)计算属性顾客ID的Gini指标值。
每个顾客的ID都是不同的,特有一个,所以P(j|t)=1,Gini=0,所以属性顾客ID的Gini指标值为0。
(c)计算属性性别的Gini指标值。
M
F
10
10
P(M)=10/20=0.5P(F)=10/20=0.5
性别的Gini=1–P(M)
–P(F)
=1–0.25-0.25=0.5
因此性别的Gini指标值是:
0.5×0.5+0.5×0.5=0.5
(d)计算使用多路划分属性车型的Gini指标值。
Cartype
class
Cartype
Flamily
sports
Luxury
C0
1
8
1
C1
3
0
7
FamilyGini指标:
:
P(C0)=1/4=0.25P(C1)=3/4=0.75
Gini=1–P(C0)
–P(C1)
=1–0.0625-0.5625=0.375
sportsGini指标:
因为C1=0,可知Gini=0
Luxury的Gin:
0.2188
P(C0)=1/8=0.125P(C1)=7/8=0.875
Gini=1–P(C0)
–P(C1)
≈0.2188
车型属性的Gini=4/20*0.375+8/20*0.2188=0.16252
(e)计算使用多路划分属性衬衣尺码的Gini指标值。
size
CLass
ShirtSize
small
Medium
Large
ExtraLarge
C0
3
3
2
2
C1
2
4
2
2
小尺码Gini指标:
P(C0)=3/5=0.6P(C1)=2/5=0.4
Gini=1–P(C0)
–P(C1)
=0.48
中尺码Gini指标:
P(C0)=3/7=0.429P(C1)=4/7=0.571
Gini=1–P(C0)
–P(C1)
=0.4898,
大尺码Gini指标:
P(C0)=2/4=0.5P(C1)=2/4=0.5
Gini=1–P(C0)
–P(C1)
=0.5
加大尺码Gini指标:
P(C0)=2/4=0.5P(C1)=2/4=0.5
Gini=1–P(C0)
–P(C1)
=0.5
所以属性衬衣尺码的Gini指标:
=5/20*0.48+7/20*0.4898+2*4/20*0.5=0.4914.
(f)下面哪个属性更好,性别、车型还是衬衣尺码?
Attribute
Sex
Cartype
Shirtsize
Gini
0.5
0.16252
0.4914.
则车型属性更好。
因为三个属性中Gini指标值最低,代表子节点不纯度高,及产生了更纯的派生节点。
(g)解释为什么属性顾客ID的Gini值最低,但却不能作为属性测试条件。
因为属性顾客ID虽然相比其他属性产生更纯的划分,但它只是一个标记,没有预测性,因为与每个划分相关联的的记录太少,以致于不能做出可靠预测。
2.考虑如下样本集:
(a)用本章所介绍的贪心法计算两层的决策树。
使用分类差错率作为划分标准。
决策树的总差错率是多少?
解:
两层的决策树为:
X
Y
Z
C1
C2
PC1
PC2
ERROR
0
0
0
5
40
0.111111
0.888889
0.111111
0
0
1
0
15
0
1
0
0
1
0
10
5
0.666667
0.333333
0.333333
0
1
1
45
0
1
0
0
1
0
0
10
5
0.666667
0.333333
0.333333
1
0
1
25
0
1
0
0
1
1
0
5
20
0.2
0.8
0.2
1
1
1
0
15
0
1
0
SumERROR=0.977778
(b)使用X作为第一个划分属性,两个后继结点分别在剩余的属性中选择最佳的划分属性,重复步骤(a)。
所构造决策树的差错率是多少?
X
Y
Z
C1
C2
PC1
PC2
ERROR
0
0
0
5
40
0.111111
0.888889
0.111111
0
0
1
0
15
0
1
0
0
1
0
10
5
0.666667
0.333333
0.333333
0
1
1
45
0
1
0
0
1
0
0
10
5
0.666667
0.333333
0.333333
1
0
1
25
0
1
0
0
1
1
0
5
20
0.2
0.8
0.2
1
1
1
0
15
0
1
0
(c)比较(a)和(b)的结果,评述在划分属性选择上启发式贪心法的作用。
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。
也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。
3.课件阅读,并翻译。
翻译课件见文件夹里“数据挖掘课件PDF”
4.ConsiderthedecisiontreesshowninFigure4.3.Assumetheyaregeneratedfromadatasetthatcontains16binaryattributesand3classes,C1,C2,andC3.Computethetotaldescriptionlengthofeachdecisiontreeaccordingtotheminimumdescriptionlengthprinciple.
●Thetotaldescriptionlengthofatreeisgivenby:
Cost(tree,data)=Cost(tree)+Cost(data|tree).
●EachinternalnodeofthetreeisencodedbytheIDofthesplittingattribute.Iftherearemattributes,thecostofencodingeachattributeislog2mbits.
●EachleafisencodedusingtheIDoftheclassitisassociatedwith.Iftherearekclasses,thecostofencodingaclassislog2kbits.
●Cost(tree)isthecostofencodingallthenodesinthetree.Tosimplifythecomputation,youcanassumethatthetotalcostofthetreeisobtainedbyaddingupthecostsofencodingeachinternalnodeandeachleafnode.
●Cost(data|tree)isencodedusingtheclassificationerrorsthetreecommitsonthetrainingset.Eacherrorisencodedbylog2nbits,wherenisthetotalnumberoftraininginstances.
Whichdecisiontreeisbetter,accordingtotheMDLprinciple?
答:
共有16个属性,则决策树中每个内部节点的损耗是
log2(m)=log2(16)=4
共有3类,则每个叶子节点的损耗是
log2(k)_=log2(3)_=2
每个错误分类的损耗是log2(n)
则决策树a的总共损耗是2×4+3×2+7×log2n=14+7log2n
决策树