数据分析的特征选择实例分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据分析的特征选择实例分析

1.数据挖掘与聚类分析概述

数据挖掘一般由以下几个步骤:

(l)分析问题:源数据数据库必须经过评估确认其是否符合数据挖掘标准。以决定预期结果,也就选择了这项工作的最优算法。

(2)提取、清洗和校验数据:提取的数据放在一个结构上与数据模型兼容的数据库中。以统一的格式清洗那些不一致、不兼容的数据。一旦提取和清理数据后,浏览所创建的模型,以确保所有的数据都已经存在并且完整。

(3)创建和调试模型:将算法应用于模型后产生一个结构。浏览所产生的结构中数据,确认它对于源数据中“事实”的准确代表性,这是很重要的一点。虽然可能无法对每一个细节做到这一点,但是通过查看生成的模型,就可能发现重要的特征。

(4)查询数据挖掘模型的数据:一旦建立模型,该数据就可用于决策支持了。

(5)维护数据挖掘模型:数据模型建立好后,初始数据的特征,如有效性,可能发生改变。一些信息的改变会对精度产生很大的影响,因为它的变化影响作为基础的原始模型的性质。因而,维护数据挖掘模型是非常重要的环节。

聚类分析是数据挖掘采用的核心技术,成为该研究领域中一个非常活跃的研究课题。聚类分析基于”物以类聚”的朴素思想,根据事物的特征,对其进行聚类或分类。作为数据挖掘的一个重要研究方向,聚类分析越来越得到人们的关注。聚类的输入是一组没有类别标注的数据,事先可以知道这些数据聚成几簇爪也可以不知道聚成几簇。通过分析这些数据,根据一定的聚类准则,合理划分记录集合,从而使相似的记录被划分到同一个簇中,不相似的数据划分到不同的簇中。

2.特征选择与聚类分析算法

Relief为一系列算法,它包括最早提出的Relief以及后来拓展的Relief和ReliefF,其中ReliefF算法是针对目标属性为连续值的回归问题提出的,下面仅介绍一下针对分类问题的Relief和ReliefF算法。

2.1Relief算法

Relief算法最早由Kira提出,最初局限于两类数据的分类问题。Relief算法是一种特征权重算法(Feature weighting algorithms),根据各个特征和类别的相关性赋予特征不同的权重,权重小于某个阈值的特征将被移除。Relief算法中特征和类别的相关性是基于特征对近距离样本的区分能力。算法从训练集D中随机选择一个样本R,然后从和R同类的样本中寻找最近邻样本H,称为Near Hit,从和R不同类的样本中寻找最近邻样本M,称为NearMiss,然后根据以下规则更新每个特征的权重:如果R和Near Hit在某个特征上的距离小于R和Near Miss 上的距离,则说明该特征对区分同类和不同类的最近邻是有益的,则增加该特征的权重;反之,如果R和Near Hit 在某个特征的距离大于R和Near Miss上的距离,说明该特征对区分同类和不同类的最近邻起负面作用,则降低该特征的权重。以上过程重复m次,最后得到各特征的平均权重。特征的权重越大,表示该特征的分类能力越强,反之,表示该特征分类能力越弱。Relief算法的运行时间随着样本的抽样次数m和原始特征个数N的增加线性增加,因而运行效率非常高。具体算法如下所示:

2.2 ReliefF算法

由于Relief算法比较简单,运行效率高,并且结果也比较令人满意,因此得到广泛应用,但是其局限性在于只能处理两类别数据,因此1994年Kononeill对其进行了扩展,得到了ReliefF作算法,可以处理多类别问题。该算法用于处理目标属性为连续值的回归问题。ReliefF算法在处理多类问题时,每次从训练样本集中随机取出一个样本R,然后从和R同类的样本集中找出R的k个近邻样本(near Hits),从每个R的不同类的样本集中均找出k个近邻样本(near Misses),然后更新每个特征的权重,如下式所示:

Relief系列算法运行效率高,对数据类型没有限制,属于一种特征权重算法,算法会赋予所有和类别相关性高的特征较高的权重,所以算法的局限性在于不能有效的去除冗余特征。

Matlab实现源码:

1.ReliefF特征提取算法Matlab主程序

1 %主函数

2 clear;clc;

3 load('matlab.mat')

4 D=data(:,2:size(data,2));%

5 m =80 ;%抽样次数

6 k = 8;

7 N=20;%运行次数

8 for i =1:N

9 W(i,:) = ReliefF (D,m,k) ;

10 end

11 for i = 1:N %将每次计算的权重进行绘图,绘图N次,看整体效果

12 plot(1:size(W,2),W(i,:));

13 hold on ;

14 end

15 for i = 1:size(W,2) %计算N次中,每个属性的平均值

16 result(1,i) = sum(W(:,i))/size(W,1) ;

17 end

18 xlabel('属性编号');

19 ylabel('特征权重');

20 title('ReliefF算法计算乳腺癌数据的特征权重');

21 axis([1 10 0 0.3])

22 %------- 绘制每一种的属性变化趋势

23 xlabel('计算次数');

24 ylabel('特征权重');

25 name =char('块厚度','细胞大小均匀性','细胞形态均匀性','边缘粘附力','单上皮细胞尺寸','裸核','Bland染色质','正常核仁','核分裂');

26 name=cellstr(name);

27

28 for i = 1:size(W,2)

29 figure

30 plot(1:size(W,1),W(:,i));

31 xlabel('计算次数') ;

32 ylabel('特征权重') ;

33 title([char(name(i)) '(属性' num2Str(i) ')的特征权重变化']);

34 end

2.ReliefF函数程序

1 %Relief函数实现

2 %D为输入的训练集合,输入集合去掉身份信息项目;k为最近邻样本个数

3 function W = ReliefF (D,m,k)

4 Rows = size(D,1) ;%样本个数

5 Cols = size(D,2) ;%特征熟练,不包括分类列

6 type2 = sum((D(:,Cols)==2))/Rows ;

7 type4 = sum((D(:,Cols)==4))/Rows ;

8 %先将数据集分为2类,可以加快计算速度

9 D1 = zeros(0,Cols) ;%第一类

10 D2 = zeros(0,Cols) ;%第二类

11 for i = 1:Rows

12 if D(i,Cols)==2

13 D1(size(D1,1)+1,:) = D(i,:) ;

14 elseif D(i,Cols)==4

15 D2(size(D2,1)+1,:) = D(i,:) ;

16 end

17 end

18 W =zeros(1,Cols-1) ;%初始化特征权重,置0

19 for i = 1 : m %进行m次循环选择操作

20 %从D中随机选择一个样本R

21 [R,Dh,Dm] = GetRandSamples(D,D1,D2,k) ;

22 %更新特征权重值

23 for j = 1:length(W) %每个特征累计一次,循环

24 W(1,j)=W(1,j)-sum(Dh(:,j))/(k*m)+sum(Dm(:,j))/(k*m) ;%按照公式更新权重

25 end

26 end

ReliefF辅助函数,寻找最近的样本数K

1 %获取随机R 以及找出邻近样本

2 %D:训练集;D1:类别1数据集;D2:类别2数据集;

相关文档
最新文档