• 探索性数据分析


           探索性数据分析(Exploratory Data Analysis,EDA)是指对已有数据在尽量少的先验假设下通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法,该方法在上世纪70年代由美国统计学家J.K.Tukey提出。传统的统计分析方法常常先假设数据符合一种统计模型,然后依据数据样本来估计模型的一些参数及统计量,以此了解数据的特征,但实际中往往有很多数据并不符合假设的统计模型分布,这导致数据分析结果不理想。EDA则是一种更加贴合实际情况的分析方法,它强调让数据自身“说话”,通过EDA我们可以最真实、直接的观察到数据的结构及特征。

          EDA出现之后,数据分析的过程就分为两步了,探索阶段和验证阶段。探索阶段侧重于发现数据中包含的模式或模型,验证阶段侧重于评估所发现的模式或模型,很多机器学习算法(分为训练和测试两步)都是遵循这种思想。当我们拿到一份数据时,如果做数据分析的目的不是非常明确、有针对性时,可能会感到有些茫然(我在哪儿,我要干什么。。。我最初就是这样的),那此刻就更加有必要进行EDA了,它能帮助我们先初步的了解数据的结构及特征,甚至发现一些模式或模型,再结合行业背景知识,也许就能直接得到一些有用的结论。

           EDA的技术手段主要包括:汇总统计、可视化,下面分别做介绍。

    1.汇总统计

           汇总统计是量化的(如均值和方差等),用单个数和数的小集合来捕获数据集的特征,从统计学的观点看,这里所提的汇总统计过程就是对统计量的估计过程。

          1.1 单个属性情况

    • 频率和众数

            频率可以简单定义为属于一个类别对象的样本数占总样本的比例,这里类别对象可以是分类模型的中不同的类,也可以是一个区间或一个集合。众数指具有最高频率的类别对象。

            频率可以帮助查看数据在不同类别对象上的分布情况,众数可以让我们获知数据主要集中在那个类别对象上,不过要注意是可能有多个类别对象上的频率与众数对象上的频率相差不大,此时就要权衡众数的重要性是否有那么大。

    • 百分位数

           在有序数据上,百分位数是一个重要的统计量。给定一组数据,p百分位数x_{p}是这样的数:这组数据中有p%的数据小于x_{p}。百分位数能让我们了解数据大小分布情况。

    • 位置度量:均值和中位数

           对于连续数据,均值和中位数是比较常用的统计量,其中中位数即1/2分位数。均值对数据中的离群点比较敏感,一些离群点的存在能显著的影响均值的大小,而中位数能较好的处理离群点的影响,二者视具体情况使用。

           为了克服离群点对均值的影响,有时使用截断均值。截断均值有一个参数p,计算p截断均值时去除高端(p/2)%和低端(p/2)%的数据,剩下数据的均值即为p截断均值。

           均值、中位数和百分位数一样,都是用来观察数据值大小分布情况的。

    • 散步分量:极差和方差

           极差和方差是常用的统计量,用来观察数据分布的宽度和分散情况。极差是最大值与最小值的差值,它标识着数据的最大散步,但若大部分数值集中在较窄的范围内,极差反而会引起误解,此时需要结合方差来认识数据。

           极差和方差对离群点非常敏感,因此有时也使用这三种统计量:绝对平均偏差(absolute average deviation,AAD)、中位数绝对偏差(median absolute deviation,MAD)、四分位数极差(interquartile range,IQR),三者定义分别为:

                                                                   AAD(x)=frac{1}{m}sum_{i=1}^{m}left | x_{i}-ar{x} 
ight |

                                                                  MAD(x)=median( left|{ x_{1}- ar{x}
ight|,..., left| x_{m}- ar{x}
ight|})

                                                                         IQR=x_{3/4}-x_{1/4}

          1.2 多个属性情况

           多个属性数据间常用的统计量有协方差、相关系数。设属性i、属性j均有m个数据,x_{ki}x_{kj}分别属性i、属性j的第k个数值,ar{x_{i}}ar{x_{j}}分别为属性i、属性j的均值,则属性i和属性j的协方差定义为

                                                                 cov(i,j)=frac{1}{m-1}sum_{k=1}^{m}(x_{ki}-ar{x_{i}})(x_{kj}-ar{x_{j}})

            协方差越接近于0越表明两个属性值间不具有(线性)关系,但协方差越大并不表明越相关,因为协方差的定义中没有考虑属性值本身大小的影响。

            相关系数考虑了属性值本身大小的影响,因此是一个更合适的统计量。s_{i}s_{j}是属性i、属性j的方差,则相关系数定义为:

                                                                               r_{ij}=frac{cov(i,j)}{s_{i}s_{j}}

            相关系数的取值在[-1,1]上,-1表示负相关,即变换相反,1表示正相关,0则表示不相关。相关系数是序数型的,只能比较相关程度大小(绝对值比较),并不能做四则运算。

            将属性间的相关系数按矩阵方式排列得到了相关系数矩阵,矩阵中对角线上的为属性的自相关系数(均为1)。                    

    2.可视化

           可视化技术能够让人快速吸收大量可视化信息并发现其中的模式,是十分直接且有效的数据探索性分析方法,但可视化技术具有专门性和特殊性,采用怎样的图表来描述数据及其包含的信息与具体的业务紧密相关。

           运用可视化技术时,需要考虑三个问题:(1)如何将数据映射到图形元素 (2)如何组织数据进行映射 (3)如何解决数据维度问题

           (1)如何将数据映射到图形元素

           一般的可视化中,需要映射的是数据对象、数据对象的属性、数据对象间的联系这几种信息。

           数据对象通常用几何图形表示,如圆圈、星号、叉号等。

           属性的表示方法取决于属性的类型。对于取值连续的属性,可以用位置、亮度、颜色、尺寸等可以连续变化的图形元素表示;对于序数型属性,也可以用位置、亮度、颜色、尺寸等表示,不过变化不再是连续的,因此为了对不同属性取值加以区分,可以将图形元素间的区别放大一些;对于标称型属性,要注意避免表示出“序”的信息,此时可以将属性的每个取值用不同类型的图形元素表示,

           数据对象间的关系有显式、隐式两种。显式的关系是已知、不需要去发掘的,我们只需要在图形中表示出来,常用的显式关系表示方法是用线条连接数据对象,或者将具有联系的数据对象赋予某一相同的图形特征;隐式的关系则需要我们采用合理的图表、合理的数据组织形式进行映射来帮助发现数据对象间的关系,例如在分类中将相同类型的数据对象放在一起显示就容易帮助发现数据对象间的联系,他们具有相似的属性取值。

      (2)如何组织数据进行映射

           在一些需要映射数据对象的可视化技术中,以特定的形式组织数据更能帮助发现数据对象间的联系。数据组织形式可简单理解为在图表的每个维度(即每个属性)上,坐标值(属性值)分布的形式。一般情况下,对于连续型、序数型属性,通常按属性取值大小排列组织数据显示,这使得图表呈现的信息易于理解;对于标称型属性,数据的组织形式并没有约定成俗的方式,此时不同的数据组织形式呈现的信息差异可能就比较明显了。

      (3)如何解决数据维度问题

          当前只能在三维空间中显示图标,再加上颜色、亮度等一个属性,一个图表上一般最多能显示四个属性信息了,对于多属性数据来说,如何解决维度问题就是一个值得考虑的问题。

          一种做法是只显示属性子集(通常是两个属性),当属性数量不算太多时可以绘制双属性的矩阵图。当属性数量较多、以致于影响图形观察时则需要另想办法了。

          另外一种做法是采用主成分分析(如PCA)等降维方法了。

          可视化技术发展很快,现今包括动画、可交互式图标都是不错的可视化方法。   

    3.小结

            数据探索性分析可能还有一些更基本的作用,例如我们在进行数据预处理前,需要知道哪些地方需要处理,这个过程也是数据探索的一个过程。

  • 相关阅读:
    css设置兼容的透明样式
    mybatis 使用oracle merge into 语句踩坑实录
    eclipse导入SVN上的Maven多模块项目
    jquery.form插件中动态修改表单数据
    java的几种对象(po,dto,dao等)
    redis面试总结
    前段面试准备
    查询各科成绩最好的学生
    Github访问慢解决办法
    该文件有程序在使用
  • 原文地址:https://www.cnblogs.com/hgz-dm/p/10886148.html
Copyright © 2020-2023  润新知