精华内容
下载资源
问答
  • 常用数据收集方法
    千次阅读
    2020-12-04 08:40:00

    本文主要的主线就是回答下面三个问题:

    什么是数据模型
    为什么需要数据模型
    如何建设数据模型
    最后,我们在本文的结尾给大家介绍了一个具体的数据仓库建模的样例,帮助大家来了解整个数据建模的过程。

    一、 什么是数据模型

    数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。在这里,数据模型表现的抽象的是实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系。

    数据仓库模型是数据模型中针对特定的数据仓库应用系统的一种特定的数据模型,一般的来说,我们数据仓库模型分为几下几个层次,如图 2 所示。

    图 2. 数据仓库模型

    通过上面的图形,我们能够很容易的看出在整个数据仓库得建模过程中,我们需要经历一般四个过程:

    • 业务建模,生成业务模型,主要解决业务层面的分解和程序化。

    • 领域建模,生成领域模型,主要是对业务模型进行抽象处理,生成领域概念模型。

    • 逻辑建模,生成逻辑模型,主要是将领域模型的概念实体以及实体之间的关系进行数据库层次的逻辑化。

    • 物理建模,生成物理模型,主要解决,逻辑模型针对不同关系型数据库的物理化以及性能等一些具体的技术问题。

    因此,在整个数据仓库的模型的设计和架构中,既涉及到业务知识,也涉及到了具体的技术,我们既需要了解丰富的行业经验,同时,也需要一定的信息技术来帮助我们实现我们的数据模型,最重要的是,我们还需要一个非常适用的方法论,来指导我们自己针对我们的业务进行抽象,处理,生成各个阶段的模型。

    二、 为什么需要数据模型

    在数据仓库的建设中,我们一再强调需要数据模型,那么数据模型究竟为什么这么重要呢?首先我们需要了解整个数据仓库的建设的发展史。

    数据仓库的发展大致经历了这样的三个过程:

    • 简单报表阶段:这个阶段,系统的主要目标是解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所需要的汇总数据。这个阶段的大部分表现形式为数据库和前端报表工具。

    • 数据集市阶段:这个阶段,主要是根据某个业务部门的需要,进行一定的数据的采集,整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据。

    • 数据仓库阶段:这个阶段,主要是按照一定的数据模型,对整个企业的数据进行采集,整理,并且能够按照各个业务部门的需要,提供跨部门的,完全一致的业务报表数据,能够通过数据仓库生成对对业务具有指导性的数据,同时,为领导决策提供全面的数据支持。

    通过数据仓库建设的发展阶段,我们能够看出,数据仓库的建设和数据集市的建设的重要区别就在于数据模型的支持。因此,数据模型的建设,对于我们数据仓库的建设,有着决定性的意义。

    一般来说,数据模型的建设主要能够帮助我们解决以下的一些问题:

    • 进行全面的业务梳理,改进业务流程。

      在业务模型建设的阶段,能够帮助我们的企业或者是管理机关对本单位的业务进行全面的梳理。

      通过业务模型的建设,我们应该能够全面了解该单位的业务架构图和整个业务的运行情况,能够将业务按照特定的规律进行分门别类和程序化,同时,帮助我们进一步的改进业务的流程,提高业务效率,指导我们的业务部门的生产。

    • 建立全方位的数据视角,消灭信息孤岛和数据差异。

      通过数据仓库的模型建设,能够为企业提供一个整体的数据视角,不再是各个部门只是关注自己的数据,而且通过模型的建设,勾勒出了部门之间内在的联系,帮助消灭各个部门之间的信息孤岛的问题,更为重要的是,通过数据模型的建设,能够保证整个企业的数据的一致性,各个部门之间数据的差异将会得到有效解决。

    • 解决业务的变动和数据仓库的灵活性。

      通过数据模型的建设,能够很好的分离出底层技术的实现和上层业务的展现。

      当上层业务发生变化时,通过数据模型,底层的技术实现可以非常轻松的完成业务的变动,从而达到整个数据仓库系统的灵活性。


      帮助数据仓库系统本身的建设。

      通过数据仓库的模型建设,开发人员和业务人员能够很容易的达成系统建设范围的界定,以及长期目标的规划,从而能够使整个项目组明确当前的任务,加快整个系统建设的速度。

    三、 如何建设数据模型

    建设数据模型既然是整个数据仓库建设中一个非常重要的关键部分,那么,怎么建设我们的数据仓库模型就是我们需要解决的一个问题。这里我们将要详细介绍如何创建适合自己的数据模型。

    1) 数据仓库数据模型架构

    数据仓库的数据模型的架构和数据仓库的整体架构是紧密关联在一起的,我们首先来了解一下整个数据仓库的数据模型应该包含的几个部分。从下图我们可以很清楚地看到,整个数据模型的架构分成 5 大部分,每个部分其实都有其独特的功能。

    图 3. 数据仓库数据模型架构

    从上图我们可以看出,整个数据仓库的数据模型可以分为大概 5 大部分:

    • 系统记录域(System of Record):这部分是主要的数据仓库业务数据存储区,数据模型在这里保证了数据的一致性。

    • 内部管理域(Housekeeping):这部分主要存储数据仓库用于内部管理的元数据,数据模型在这里能够帮助进行统一的元数据的管理。

    • 汇总域(Summary of Area):这部分数据来自于系统记录域的汇总,数据模型在这里保证了分析域的主题分析的性能,满足了部分的报表查询。

    • 分析域(Analysis Area):这部分数据模型主要用于各个业务部分的具体的主题业务分析。这部分数据模型可以单独存储在相应的数据集市中。

    • 反馈域(Feedback Area):可选项,这部分数据模型主要用于相应前端的反馈数据,数据仓库可以视业务的需要设置这一区域。

    • 通过对整个数据仓库模型的数据区域的划分,我们可以了解到,一个好的数据模型,不仅仅是对业务进行抽象划分,而且对实现技术也进行具体的指导,它应该涵盖了从业务到实现技术的各个部分。

    2) 数据仓库建模阶段划分

    我们前面介绍了数据仓库模型的几个层次,下面我们讲一下,针对这几个层次的不同阶段的数据建模的工作的主要内容:

    图 4. 数据仓库建模阶段划分

    从上图我们可以清楚地看出,数据仓库的数据建模大致分为四个阶段:

    1.业务建模,这部分建模工作,主要包含以下几个部分:

    • 划分整个单位的业务,一般按照业务部门的划分,进行各个部分之间业务工作的界定,理清各业务部门之间的关系。

    • 深入了解各个业务部门的内具体业务流程并将其程序化。

    • 提出修改和改进业务部门工作流程的方法并程序化。

    • 数据建模的范围界定,整个数据仓库项目的目标和阶段划分。

    2.领域概念建模,这部分得建模工作,主要包含以下几个部分:

    • 抽取关键业务概念,并将之抽象化。

    • 将业务概念分组,按照业务主线聚合类似的分组概念。

    • 细化分组概念,理清分组概念内的业务流程并抽象化。

    • 理清分组概念之间的关联,形成完整的领域概念模型。

    3.逻辑建模,这部分的建模工作,主要包含以下几个部分:

    • 业务概念实体化,并考虑其具体的属性

    • 事件实体化,并考虑其属性内容

    • 说明实体化,并考虑其属性内容

    4.物理建模,这部分得建模工作,主要包含以下几个部分:

    • 针对特定物理化平台,做出相应的技术调整

    • 针对模型的性能考虑,对特定平台作出相应的调整

    • 针对管理的需要,结合特定的平台,做出相应的调整

    • 生成最后的执行脚本,并完善之。

    • 从我们上面对数据仓库的数据建模阶段的各个阶段的划分,我们能够了解到整个数据仓库建模的主要工作和工作量,希望能够对我们在实际的项目建设能够有所帮助。

    3) 数据仓库建模方法

    大千世界,表面看五彩缤纷,实质上,万物都遵循其自有的法则。数据仓库的建模方法同样也有很多种,每一种建模方法其实代表了哲学上的一个观点,代表了一种归纳,概括世界的一种方法。目前业界较为流行的数据仓库的建模方法非常多,这里主要介绍范式建模法,维度建模法,实体建模法等几种方法,每种方法其实从本质上讲就是从不同的角度看我们业务中的问题,不管从技术层面还是业务层面,其实代表的是哲学上的一种世界观。我们下面给大家详细介绍一下这些建模方法。

    1.范式建模法(Third Normal Form,3NF)

    范式建模法其实是我们在构建数据模型常用的一个方法,该方法的主要由 Inmon 所提倡,主要解决关系型数据库得数据存储,利用的一种技术层面上的方法。目前,我们在关系型数据库中的建模方法,大部分采用的是三范式建模法。

    范式是数据库逻辑模型设计的基本理论,一个关系模型可以从第一范式到第五范式进行无损分解,这个过程也可称为规范化。在数据仓库的模型设计中目前一般采用第三范式,它有着严格的数学定义。从其表达的含义来看,一个符合第三范式的关系必须具有以下三个条件 :

    • 每个属性值唯一,不具有多义性 ;

    • 每个非主属性必须完全依赖于整个主键,而非主键的一部分 ;

    • 每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。

    • 由于范式是基于整个关系型数据库的理论基础之上发展而来的,因此,本人在这里不多做介绍,有兴趣的读者可以通过阅读相应的材料来获得这方面的知识。

    根据 Inmon 的观点,数据仓库模型得建设方法和业务系统的企业数据模型类似。在业务系统中,企业数据模型决定了数据的来源,而企业数据模型也分为两个层次,即主题域模型和逻辑模型。同样,主题域模型可以看成是业务模型的概念模型,而逻辑模型则是域模型在关系型数据库上的实例。

    图 5. 范式建模法

    从业务数据模型转向数据仓库模型时,同样也需要有数据仓库的域模型,即概念模型,同时也存在域模型的逻辑模型。这里,业务模型中的数据模型和数据仓库的模型稍微有一些不同。主要区别在于:

    • 数据仓库的域模型应该包含企业数据模型的域模型之间的关系,以及各主题域定义。数据仓库的域模型的概念应该比业务系统的主题域模型范围更加广。

    • 在数据仓库的逻辑模型需要从业务系统的数据模型中的逻辑模型中抽象实体,实体的属性,实体的子类,以及实体的关系等。

    • 以笔者的观点来看,Inmon 的范式建模法的最大优点就是从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模。但其缺点也是明显的,由于建模方法限定在关系型数据库之上,在某些时候反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑到数据仓库的底层数据向数据集市的数据进行汇总时,需要进行一定的变通才能满足相应的需求。因此,笔者建议读者们在实际的使用中,参考使用这一建模方式。

    2.维度建模法

    维度建模法,Kimball 最先提出这一概念。其最简单的描述就是,按照事实表,维表来构建数据仓库,数据集市。这种方法的最被人广泛知晓的名字就是星型模式(Star-schema)。

    图 6. 维度建模法

    上图的这个架构中是典型的星型架构。星型模式之所以广泛被使用,在于针对各个维作了大量的预处理,如按照维进行预先的统计、分类、排序等。通过这些预处理,能够极大的提升数据仓库的处理能力。特别是针对 3NF 的建模方法,星型模式在性能上占据明显的优势。

    雪花模型也是维度建模中的一种选择。雪花模型的维度表可以拥有其他维度表的,虽然这种模型相比星型模型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用。雪花模型如下图

    同时,维度建模法的另外一个优点是,维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题。不需要经过特别的抽象处理,即可以完成维度建模。这一点也是维度建模的优势。

    但是,维度建模法的缺点也是非常明显的,由于在构建星型模式之前需要进行大量的数据预处理,因此会导致大量的数据处理工作。而且,当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。而在这些与处理过程中,往往会导致大量的数据冗余。

    另外一个维度建模法的缺点就是,如果只是依靠单纯的维度建模,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。

    因此以笔者的观点看,维度建模的领域主要适用与数据集市层,它的最大的作用其实是为了解决数据仓库建模中的性能问题。维度建模很难能够提供一个完整地描述真实业务实体之间的复杂关系的抽象方法。

    1.实体建模法

    实体建模法并不是数据仓库建模中常见的一个方法,它来源于哲学的一个流派。从哲学的意义上说,客观世界应该是可以细分的,客观世界应该可以分成由一个个实体,以及实体与实体之间的关系组成。那么我们在数据仓库的建模过程中完全可以引入这个抽象的方法,将整个业务也可以划分成一个个的实体,而每个实体之间的关系,以及针对这些关系的说明就是我们数据建模需要做的工作。

    虽然实体法粗看起来好像有一些抽象,其实理解起来很容易。即我们可以将任何一个业务过程划分成 3 个部分,实体,事件和说明,如下图所示:

    图 7. 实体建模法

    上图表述的是一个抽象的含义,如果我们描述一个简单的事实:“小明开车去学校上学”。以这个业务事实为例,我们可以把“小明”,“学校”看成是一个实体,“上学”描述的是一个业务过程,我们在这里可以抽象为一个具体“事件”,而“开车去”则可以看成是事件“上学”的一个说明。

    从上面的举例我们可以了解,我们使用的抽象归纳方法其实很简单,任何业务可以看成 3 个部分:

    • 实体,主要指领域模型中特定的概念主体,指发生业务关系的对象。

    • 事件,主要指概念主体之间完成一次业务流程的过程,特指特定的业务过程。

    • 说明,主要是针对实体和事件的特殊说明。

    由于实体建模法,能够很轻松的实现业务模型的划分,因此,在业务建模阶段和领域概念建模阶段,实体建模法有着广泛的应用。从笔者的经验来看,再没有现成的行业模型的情况下,我们可以采用实体建模的方法,和客户一起理清整个业务的模型,进行领域概念模型的划分,抽象出具体的业务概念,结合客户的使用特点,完全可以创建出一个符合自己需要的数据仓库模型来。

    但是,实体建模法也有着自己先天的缺陷,由于实体说明法只是一种抽象客观世界的方法,因此,注定了该建模方法只能局限在业务建模和领域概念建模阶段。因此,到了逻辑建模阶段和物理建模阶段,则是范式建模和维度建模发挥长处的阶段。

    因此,笔者建议读者在创建自己的数据仓库模型的时候,可以参考使用上述的三种数据仓库得建模方法,在各个不同阶段采用不同的方法,从而能够保证整个数据仓库建模的质量。

    四、 数据仓库建模样例

    上面介绍得是一些抽象得建模方法和理论,可能理解起来相对有些难度,因此,笔者在这里举一个例子,读者可以跟着我们的这个样例,来初步了解整个数据仓库建模的大概过程。

    熟悉社保行业的读者可以知道,目前我们国家的社保主要分为养老,失业,工伤,生育,医疗保险和劳动力市场这 6 大块主要业务领域。在这 6 大业务领域中,目前的状况养老和事业的系统已经基本完善,已经有一部分数据开始联网检测。而,对于工伤,生育,医疗和劳动力市场这一块业务,有些地方发展的比较成熟,而有些地方还不够成熟。

    1.业务建模阶段

    基于以上的背景介绍,我们在业务建模阶段,就很容易来划分相应的业务。因此,在业务建模阶段,我们基本上确定我们本次数据仓库建设的目标,建设的方法,以及长远规划等。如下图:

    图 8. 业务建模阶段

    在这里,我们将整个业务很清楚地划分成了几个大的业务主线,例如:养老,失业,工伤,生育,医疗,劳动力等着几个大的部分,然后我们可以根据这些大的模块,在每个业务主线内,考虑具体的业务主线内需要分析的业务主题。

    因此,业务建模阶段其实是一次和业务人员梳理业务的过程,在这个过程中,不仅能帮助我们技术人员更好的理解业务,另一方面,也能够发现业务流程中的一些不合理的环节,加以改善和改进。

    同时,业务建模阶段的另一个重要工作就是确定我们数据建模的范围,例如:在某些数据准备不够充分的业务模块内,我们可以考虑先不建设相应的数据模型。等到条件充分成熟的情况下,我们可以再来考虑数据建模的问题。

    2.领域概念建模阶段

    领域概念建模阶段是数据仓库数据建模的一个重要阶段,由于我们在业务建模阶段已经完全理清相应的业务范围和流程,因此,我们在这个领域概念建模阶段的最主要的工作就是进行概念的抽象,整个领域概念建模的工作层次如下图所示:

    图 9. 领域概念建模阶段

    从上图我们可以清楚地看到,领域概念建模就是运用了实体建模法,从纷繁的业务表象背后通过实体建模法,抽象出实体,事件,说明等抽象的实体,从而找出业务表象后抽象实体间的相互的关联性,保证了我们数据仓库数据按照数据模型所能达到的一致性和关联性。

    从图上看,我们可以把整个抽象过程分为四个层次,分别为:

    抽象方法层,整个数据模型的核心方法,领域概念建模的实体的划分通过这种抽象方法来实现。

    领域概念层,这是我们整个数据模型的核心部分,因为不同程度的抽象方法,决定了我们领域概念的不同。例如:在这里,我们可以使用“参与方”这个概念,同时,你也可以把他分成三个概念:“个人”,“公司”,和“经办机构”这三个概念。而我们在构建自己的模型的时候,可以参考业务的状况以及我们自己模型的需要,选择抽象程度高的概念或者是抽象程度低的概念。相对来说,抽象程度高的概念,理解起来较为复杂,需要专业的建模专家才能理解,而抽象程度低的概念,较适合于一般业务人员的理解,使用起来比较方便。笔者在这里建议读者可以选用抽象概念较低的实体,以方便业务人员和技术人员之间的交流和沟通。

    具体业务层,主要是解决具体的业务问题,从这张图我们可以看出,具体的业务层,其实只是领域概念模型中实体之间的一些不同组合而已。因此,完整的数据仓库的数据模型应该能够相应灵活多变的前端业务的需求,而其本身的模型架构具有很强的灵活性。这也是数据仓库模型所具备的功能之一。

    业务主线层,这个层次主要划分大的业务领域,一般在业务建模阶段即已经完成这方面的划分。我们一般通过这种大的业务主线来划分整个业务模型大的框架。
    通过领域概念建模,数据仓库的模型已经被抽象成一个个的实体,模型的框架已经搭建完毕,下面的工作就是给这些框架注入有效的肌体。

    3.逻辑建模阶段

    通过领域概念建模之后,虽然模型的框架已经完成,但是还有很多细致的工作需要完成。一般在这个阶段,我们还需要做非常多的工作,主要包括:

    实例话每一个抽象的实体,例如:在上面的概念模型之后,我们需要对“人”和“公司”等这些抽象实体进行实例化。主要是,我们需要考虑“人”的属性包括那些,在业务模块中,用到的所有跟“人”相关的属性是哪些,我们都需要将这些属性附着在我们数据模型的“人”这个实体上,例如“人”得年龄,性别,受教育程度等等。同理,我们对其他属性同样需要做这个工作。

    找出抽象实体间的联系,并将其实例话。这里,我们主要考虑是“事件”这个抽象概念的实例话,例如:对于养老金征缴这个“事件”的属性得考虑,对于失业劳动者培训这个“事件”的属性得考虑等等。

    找出抽象事件的关系,并对其进行说明。在这里我们主要是要针对“事件”进行完善的“说明”。例如:对于“事件”中的地域,事件等因素的考量等等。
    总而言之,在逻辑建模阶段,我们主要考虑得是抽象实体的一些细致的属性。通过逻辑建模阶段,我们才能够将整个概念模型完整串联成一个有机的实体,才能够完整的表达出业务之间的关联性。

    在这个阶段,笔者建议大家可以参考 3NF 的建模方法,表达出实体的属性,以及实体与实体之间的联系。例如:在这个阶段,我们可以通过采用 ERWIN 等建模工具等作出符合 3NF 的关系型数据模型来。

    4.物理建模阶段

    物理建模阶段是整个数据建模的最后一个过程,这个过程其实是将前面的逻辑数据模型落地的一个过程。考虑到数据仓库平台的不同,因此,数据模型得物理建模过程可能会稍微有一些不同,在这个阶段我们主要的工作是:

    • 生成创建表的脚本。不同的数据仓库平台可能生成不同的脚本。

    • 针对不同的数据仓库平台,进行一些相应的优化工作,例如对于 DB2 数据仓库来说,创建一些 MQT 表,来加速报表的生成等等。

    • 针对数据集市的需要,按照维度建模的方法,生成一些事实表,维表等工作。

    • 针对数据仓库的 ETL 车和元数据管理的需要,生成一些数据仓库维护的表,例如:日志表等。

    • 经过物理建模阶段,整个数据仓库的模型已经全部完成,我们可以按照自己的设计来针对当前的行业创建满足自己需要的数据模型来。

    这里,笔者通过一个数据建模的样例,希望能够给读者一个关于数据仓库建模的感性的认识。希望读者在利用这些数据仓库得建模方法创建自己的数据模型的时候,可以根据业务实际的需要和自己对抽象能力的把握来创建适合自己的数据模型。

    更多相关内容
  • 发现诸如此类的问题都需要针对性地处理,下面我们一起学习常用数据清洗方法. 重复观测处理 重复观测:指观测行存在重复的现象,重复观测的存在会影响数据分析和挖掘结果的准确性,所以在数据分析和建模之前需要进行...
  • 改善测量结果需要进行配置、校准以及优秀的软件开发技术。本文旨在使您了解优化测量结果的软、硬件技巧,内容包括:选择并配置数据采集设备、补偿测量误差以及采用优秀的软件技术。
  • 常用数据采集手段

    千次阅读 2020-10-05 18:30:08
    常用数据采集手段埋点——用户行为数据采集埋点方式埋点采集数据的过程常规埋点示例埋点方案应具备四个要素常用埋点APP数据分析工具ETL——系统业务数据整合常用的ETL工具网络爬虫——互联网数据采集网络爬虫工作...

    埋点——用户行为数据采集

    1. 埋点技术:收集用户在产品上面的点击和浏览情况,用于运营分析。隐性的信息收集。
    2. 埋点:在正常的业务逻辑中,嵌入数据采集的代码。
    3. 弊端:可能会被用户认为侵犯隐私。
    4. 埋点优势:数据是手动编码产生的,易于收集,灵活性大,扩展性强。
    5. 埋点劣势:必须十分清楚目标,需要什么样的数据必须提前确定;容易发生漏埋现象;产品迭代过程中 ,忽略了埋点逻辑的更改。

    埋点方式

    1. 全埋点/无埋点:“全部采集,按需选取”;在产品中嵌入SDK,做统一埋点,一般用于采集APP的用户行为。(百度统计——基于无埋点技术的第三方统计工具)
    2. 可视化埋点:在全埋点部署成功、可以获得全量数据的基础上,以可视化的方式,在对应页面上定义想要的页面数据,或者控制数据。
    3. 代码埋点:前端代码埋点和后端代码埋点。更适合精细化分析的场景,采集各种细粒度数据。(适合技术人员,前两种适合市场和运营人员)

    埋点采集数据的过程

    评估解决方案的
    效果
    需求收集和分析
    确定场景和目标
    针对需求制定数
    据采集规划方案
    埋点采集数据的
    具体措施
    数据质量的评估
    及数据分析
    设计优化方案
    实施优化方案

    常规埋点示例

    在这里插入图片描述

    埋点方案应具备四个要素

    • 确认事件与变量:事件指产品中的操作,变量指描述事件的属性。按照产品流程来设计关键事件。
    • 明确事件的触发时机:不同触发时机代表不同的数据统计口径,要尽量选择最贴近业务的统计口径,然后再与开发沟通。
    • 规范命名:对事件进行规范统一的命名,有助于提高数据的实用性及数据管理效率。
    • 明确优先级:在设计埋点方案时,一定要对埋点事件有明确的优先级排布。

    常用埋点APP数据分析工具

    • Growinglo
    • 百度移动统计
    • 神策分析
    • 腾讯移动分析
    • 谷歌GA

    ETL——系统业务数据整合

    1. ETL的概念:用来描述将数据从来源端经过抽取(extract)、(清洗)转换(transform——按照数据规则进行清洗转换,花费时间最长一般是整个ETL的2/3)、加载(load——加载至数据仓库或进行可视化展示)至目的端的过程。
    2. 常用的三种实现方式----借助ETL工具、SQL方式实现、ETL工具和SQL相结合。
    3. ETL工具解决的问题:数据来自不同的物理主机、数据来自不同的数据库或者文件、异构数据处理等。

    常用的ETL工具

    1. Kettle:一款国外开源的ETL工具,纯java编写,数据抽取高效稳定(数据迁移工具)。
    2. Apatar:开源ETL项目,模块化架构,支持所有主流数据源,提供灵活的基于GUI、服务器和嵌入式的部署选项。
    3. Scriptella:一个开源的ETL工具和一个脚本执行工具,支持跨数据库的ETL脚本。
    4. ETLAutomation:提供了一套ETL框架,重点是提供对ETL流程的支持。

    网络爬虫——互联网数据采集

    网络爬虫:是一种按照一定的规则,自动抓取万维网信息(网页)的程序或者脚本。为搜索引擎从万维网上抓取网页,是搜索引擎的重要组成部分。

    网络爬虫工作流程

    网络爬虫可分为通用网络爬虫和聚焦网络爬虫

    1. 通用网络爬虫基本工作流程

    在这里插入图片描述

    1. 聚焦网络爬虫基本工作流程(通过增加新模块实现有目的的爬取)
      相比通用网络爬虫新增目标定义、无关链接过滤、下一步要爬取的连接三个模块。
      在这里插入图片描述

    网络爬虫抓取策略

    1. 深度优先遍历策略:从起始页开始,一个个链接跟踪下去。
    2. 宽度优先遍历策略:抓取当前网页中链接的所有网页,再从待抓取队列中选取下一个URL。
    3. 反向连接数策略:反向链接数是指一个网页被其他网页链接指向的数量。使用这个指标评价网页的重要程度,从而决定抓取先后顺序。
    4. ** 基于优先级计算的策略**:针对待抓取网页计算优先级值,通过排序来确定抓取顺序。
    5. 大站优先策略:对于待抓取队列中的所有网页,根据所属的网站进行分类,对于待下载页面数多的网站优先下载。

    网络爬虫系统架构

    往往是一个分布式系统

    • 主从式系统架构(若master不工作可能会造成 整个系统瘫痪)
    • 对等式系统架构(扩展性不好)改进:基于一致性哈希运算(1997年由麻省理工学院提出,一般用来解决分布式系统中负载均衡问题),将URL的主域名映射为一个指定范围内的某个数,根据 事先的分配策略,判断由哪台服务器来进行抓取该URL。
      在这里插入图片描述

    网络爬虫定期更新策略

    1. 历时参考策略:在网页的的历时更新数据基础上,利用建模等手段,预测网页下一次更新的时间,确定爬取周期。
    2. 用户体验策略:依据网页多个历史版本的内容更新,搜索质量影响、用户体验等信息,来确定爬取周期。
    3. 聚类分析策略:首先对海量的网页进行聚类分析,每个类中的网页一般有类似的更新频率。通过抽样计算,确定针对每个聚类的爬取频率。
      简单代码示例:
    # 第一个爬虫示例,爬取百度页面
    import requests  #导入爬虫库
    response = requests.get("https://www.baidu.com")    #生成一个response对象
    response.encoding = response.apparent_encoding  #设置编码格式
    print("状态码:"+ str(response.status_code))    #打印状态码
    print(response.text)    #输出爬取信息
    
    #抓取图片保存到本地
    import requests #导入爬虫库
    response = requests.get(https://www.baidu.com/ing/baidu_jgylogo3.gif)   #用get得到图片
    file = open("baidu_logo.gif","wb")  #打开一个文件,wb表示以二进制格式打开一个文件只用于写入
    file.write(response.content)    #写入文件
    file.close()    #关闭操作
    

    Apache Flume——日志数据采集

    分布式、可靠、和高可用的海量日志采集、聚合和传输的日志收集系统。
    初始版本Flume—OG基本结构
    在这里插入图片描述第二代Flume—NG基本架构
    在这里插入图片描述 - Event:Flume数传输的基本单元,由可选的header和载有数据的byte array勾陈,byte array可以携带日志数据。

    • Client:将原始日志文件包装成Events并发送它们到一个或多个Agent实体,由独立的线程运行。
    • Agent:Flume的运行实体,包含Source,Channel,Sink等组件。利用这些组件将Events从一个节点传输到另一个节点或最终目的地。每台机器运行一个Agent。
      - Source:负责接收Event或通过特殊机制产生Event,并将Events批量的放到一个或多个Channel。
      - Channel:连接Source和Sink,类似event的缓存队列。
      - Sink:接收Event,进行下一步转发。

    Apache Kafka——数据分发中间件

    • 前端数据采集后,需要送到后端进行分析处理。前端采集与后端处理往往是多对多的关系。之间需要分发中间件负责消息转发、保障消息可靠性、匹配前后端速度差。
    • 消息队列是在消息传输过程中保存消息的容器或中间件,主要目的是提供消息路由并保障消息可靠传递。目前常见的消息队列中间件产品包括:ActiveMQ、ZeroMQ、RabbitMQ和Kafka。一般消息中间件支持两种模式:消息队列模式及Pub-Sub(发布订阅)模式。
    • Kafka:分布式发布-订阅消息系统,最初由Linkedln公司开发,之后成五日Apache项目的一部分。具有极高的消息吞吐量,较强的可扩展性和高可用性,消息传递低延迟,能够对消息队列进行持久化保存,且支持消息传递的“至少送达一次”语义。
      在这里插入图片描述
    • Topics是消息的分类名(或Feed的名称),一个Topic可以认为是一类消息,每个Topic将被分成多个Partition(区)。Partition是以log文件的形式存储在文件系统中,任何发布到Partition的消息都会被直接追加到log文件的尾部。Logs文件根据配置要求保留一定时间后删除来释放磁盘空间。
    • Partition:Topic物理上的分分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。
      在这里插入图片描述
    • Producer将消息发布到制定的Topic中,同时Producer也能决定将此消息归属于哪个Partition。消息和数据生产者,向Kafka的一个topic发布信息的过程称为producer。
    • consumer:消息和数据的消费者,订阅相关topics,并处理Producer发布的消息。运行consumer group(包含多个consumer)对一个topic进行消费,不同的consumer group 之间独立订阅。每个consumer属于一个consumer group,发布的消息,只会被订阅此topic的每个group中的一个consumer消费。同一个group中不能有多于partitions个数的consumer同时消费,否则将意味着某些consumer将无法得到消息。
    • Broker:缓存代理,Kafka集群中的一台或多台服务器统称为broker。
    • Message消息:是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。
    • 在这里插入图片描述在这里插入图片描述

    其他

    探针——网络流量数据捕获、传感器——环境数据捕获、RFID Reader——标签数据捕获……

    展开全文
  • 常用数据科学方法总结梳理笔记

    千次阅读 2019-05-10 16:27:06
    常用数据科学方法 【未经允许,不得转载】 ...

                                           常用数据科学方法

                                                     【未经允许,不得转载】

                                                                                                                                                                                                                                                ——沂水寒城

    一、数据缺失值处理

    对于数据挖掘和分析人员来说,数据准备(Data Preparation,包括数据的抽取、清洗、转换和集成)常常占据了70%左右的工作量。而在数据准备的过程中,数据质量差又是最常见而且令人头痛的问题,诸如数据缺失值、特殊值等问题,都需要专门的处理方法才行,本文档整理了常用的序列数据的处理方法,为数据挖掘、机器学习等工作提供数据处理基础。

    我们所说的缺失值,不仅包括数据库中的NULL值,也包括用于表示数值缺失的特殊数值(比如,在系统中用-999来表示数值不存在)。如果我们仅有数据库的数据模型,而缺乏相关说明,常常需要花费更多的精力来发现这些数值的特殊含义。而如果我们漠视这些数值的特殊性,直接拿来进行挖掘,那么很可能会得到错误的结论。

    还有一种数值缺失的情况,是因为我们要求统计的时间窗口并非对所有数据都适合。例如,我们希望计算出“客户在以前六个月内的最大存款余额”,对于那些建立账户尚不满六个月的客户来说,统计出来的数值与我们想要得到的就可能存在差距。

    一般来说,对缺失值的填充方法有多种,用某个常数来填充常常不是一个好方法。最好建立一些模型,根据数据的分布来填充一个更恰当的数值。(例如根据其它变量对记录进行数据分箱,然后选择该记录所在分箱的相应变量的均值或中位数,来填充缺失值,效果会更好一些)

    数据缺失的原因

    在各种使用的数据库中,属性值缺失的情况经常发全甚至是不可避免的。因此,在大多数情况下,信息系统是不完备的,或者说存在某种程度的不完备。

    缺失值的产生的原因多种多样,主要分为机械原因和人为原因。机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。人为原因是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失,比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据

    造成数据缺失的原因是多方面的,主要可能有以下几种:

    1)有些信息暂时无法获取。例如在医疗数据库中,并非所有病人的所有临床检验结果都能在给定的时间内得到,就致使一部分属性值空缺出来。又如在申请表数据中,对某些问题的反映依赖于对其他问题的回答。

    2)有些信息是被遗漏的。可能是因为输入时认为不重要、忘记填写了或对数据理解错误而遗漏,也可能是由于数据采集设备的故障、存储介质的故障、传输媒体的故障、一些人为因素等原因而丢失了。

    3)有些对象的某个或某些属性是不可用的。也就是说,对于这个对象来说,该属性值是不存在的,如一个未婚者的配偶姓名、一个儿童的固定收入状况等。

    4)有些信息(被认为)是不重要的。如一个属性的取值与给定语境是无关的,或训练数据库的设计者并不在乎某个属性的取值(称为dont-care value)。

    5)获取这些信息的代价太大。

    6)系统实时性能要求较高,即要求得到这些信息前迅速做出判断或决策。

    数据缺失机制

    在对缺失数据进行处理前,了解数据缺失的机制和形式是十分必要的。将数据集中不含缺失值的变量(属性)称为完全变量,数据集中含有缺失值的变量称为不完全变量,Little 和 Rubin定义了以下三种不同的数据缺失机制:

    1)完全随机缺失(Missing Completely at Random,MCAR)。数据的缺失与不完全变量以及完全变量都是无关的。

    2)随机缺失(Missing at Random,MAR)。数据的缺失仅仅依赖于完全变量。

    3)非随机、不可忽略缺失(Not Missing at Random,NMAR,or nonignorable)。不完全变量中数据的缺失依赖于不完全变量本身,这种缺失是不可忽略的。

    从缺失值的所属属性上讲,如果所有的缺失值都是同一属性,那么这种缺失成为单值缺失,如果缺失值属于不同的属性,称为任意缺失。另外对于时间序列类的数据,可能存在随着时间的缺失,这种缺失称为单调缺失。

    空值语义

    对于某个对象的属性值未知的情况,我们称它在该属性的取值为空值(null value)。空值的来源有许多种,因此现实世界中的空值语义也比较复杂。总的说来,可以把空值分成以下三类:

    1)不存在型空值。即无法填入的值,或称对象在该属性上无法取值,如一个未婚者的配偶姓名等。

    2)存在型空值。即对象在该属性上取值是存在的,但暂时无法知道。一旦对象在该属性上的实际值被确知以后,人们就可以用相应的实际值来取代原来的空值,使信息趋于完全。存在型空值是不确定性的一种表征,该类空值的实际值在当前是未知的。但它有确定性的一面,诸如它的实际值确实存在,总是落在一个人们可以确定的区间内。一般情况下,空值是指存在型空值。

    3)占位型空值。即无法确定是不存在型空值还是存在型空值,这要随着时间的推移才能够清楚,是最不确定的一类。这种空值除填充空位外,并不代表任何其他信息。

    空值处理的重要性和复杂性

    数据缺失在许多研究领域都是一个复杂的问题。对数据挖掘来说,空值的存在,造成了以下影响:

    第一,系统丢失了大量的有用信息;

    第二,系统中所表现出的不确定性更加显著,系统中蕴涵的确定性成分更难把握;

    第三,包含空值的数据会使挖掘过程陷入混乱,导致不可靠的输出。

    数据挖掘算法本身更致力于避免数据过分适合所建的模型,这一特性使得它难以通过自身的算法去很好地处理不完整数据。因此,空缺的数据需要通过专门的方法进行推导、填充等,以减少数据挖掘算法与实际应用之间的差距。

    常用缺失值处理方法的分析比较

    处理不完备数据集的方法主要有以下三大类:

    (一)删除元组

    也就是将存在遗漏信息属性值的对象(元组,记录)删除,从而得到一个完备的信息表。这种方法简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与信息表中的数据量相比非常小的情况下是非常有效的,类标号(假设是分类任务)缺少时通常使用。然而,这种方法却有很大的局限性。它是以减少历史数据来换取信息的完备,会造成资源的大量浪费,丢弃了大量隐藏在这些对象中的信息。在信息表中本来包含的对象很少的情况下,删除少量对象就足以严重影响到信息表信息的客观性和结果的正确性;当每个属性空值的百分比变化很大时,它的性能非常差。因此,当遗漏数据所占比例较大,特别当遗漏数据非随机分布时,这种方法可能导致数据发生偏离,从而引出错误的结论。

    (二)数据补齐

    这类方法是用一定的值去填充空值,从而使信息表完备化。通常基于统计学原理,根据决策表中其余对象取值的分布情况来对一个空值进行填充,譬如用其余属性的平均值来进行补充等。

    数据挖掘中常用的有以下几种补齐方法:

    (1)人工填写(filling manually

    由于最了解数据的还是用户自己,因此这个方法产生数据偏离最小,可能是填充效果最好的一种。然而一般来说,该方法很费时,当数据规模很大、空值很多的时候,该方法是不可行的。

    (2)特殊值填充(Treating Missing Attribute values as Special values

    将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。这样将形成另一个有趣的概念,可能导致严重的数据偏离,一般不推荐使用。

    (3)平均值填充(Mean/Mode Completer

    将信息表中的属性分为数值属性和非数值属性来分别进行处理。如果空值是数值型的,就根据该属性在其他所有对象的取值的平均值来填充该缺失的属性值;如果空值是非数值型的,就根据统计学中的众数原理,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。另外有一种与其相似的方法叫条件平均值填充法(Conditional Mean Completer)。在该方法中,缺失属性值的补齐同样是靠该属性在其他对象中的取值求平均得到,但不同的是用于求平均的值并不是从信息表所有对象中取,而是从与该对象具有相同决策属性值的对象中取得。这两种数据的补齐方法,其基本的出发点都是一样的,以最大概率可能的取值来补充缺失的属性值,只是在具体方法上有一点不同。与其他方法相比,它是用现存数据的多数信息来推测缺失值。

    (4)热卡填充(Hot deck imputation,或就近补齐)

    对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。

    (5)K最近距离邻法(K-means clustering

    先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。同均值插补的方法都属于单值插补,不同的是,它用层次聚类模型预测缺失变量的类型,再以该类型的均值插补。假设X=(X1,X2…Xp)为信息完全的变量,Y为存在缺失值的变量,那么首先对X或其子集行聚类,然后按缺失个案所属类来插补不同类的均值。如果在以后统计分析中还需以引入的解释变量和Y做分析,那么这种插补方法将在模型中引入自相关,给分析造成障碍。

    (6)使用所有可能的值填充(Assigning All Possible values of the Attribute

    这种方法是用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大,可能的测试方案很多。另有一种方法,填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试,这样能够在一定程度上减小原方法的代价。

    (7)组合完整化方法(Combinatorial Completer

    这种方法是用空缺属性值的所有可能的属性取值来试,并从最终属性的约简结果中选择最好的一个作为填补的属性值。这是以约简为目的的数据补齐方法,能够得到好的约简结果;但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大。另一种称为条件组合完整化方法(Conditional Combinatorial Complete),填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试。条件组合完整化方法能够在一定程度上减小组合完整化方法的代价。在信息表包含不完整数据较多的情况下,可能的测试方案将巨增。

    (8)回归(Regression

    基于完整的数据集,建立回归方程(模型)。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关或预测变量高度相关时会导致有偏差的估计。

    (9)期望值最大化方法(Expectation maximizationEM

    在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计(Little and Rubin)。这种方法也被称为忽略缺失值的极大似然估计,对于极大似然的参数估计实际中常采用的计算方法是期望值最大化(Expectation Maximization,EM)。该方法比删除个案和单值插补更有吸引力,它一个重要前提:适用于大样本。有效样本的数量足够以保证ML估计值是渐近无偏的并服从正态分布。但是这种方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。

    EM算法是一种在不完全数据情况下计算极大似然估计或者后验分布的迭代算法。在每一迭代循环过程中交替执行两个步骤:E步(Excepctaion step,期望步),在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望;M步(Maximzation step,极大化步),用极大化对数似然函数以确定参数的值,并用于下步的迭代。算法在E步和M步之间不断迭代直至收敛,即两次迭代之间的参数变化小于一个预先给定的阈值时结束。该方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。

    (10)多重填补(Multiple ImputationMI

    多值插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。

    多重填补方法分为三个步骤:;为每个空值产生一套可能的填补值,这些值反映了无响应模型的不确定性;每个值都被用来填补数据集中的缺失值,产生若干个完整数据集合。;每个填补数据集合都用针对完整数据集的统计方法进行统计分析。;对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。该方法的计算也很复杂。

    多重插补方法分为三个步骤:①为每个空值产生一套可能的插补值,这些值反映了无响应模型的不确定性;每个值都可以被用来插补数据集中的缺失值,产生若干个完整数据集合。②每个插补数据集合都用针对完整数据集的统计方法进行统计分析。③对来自各个插补数据集的结果,根据评分函数进行选择,产生最终的插补值。

    假设一组数据,包括三个变量Y1,Y2,Y3,它们的联合分布为正态分布,将这组数据处理成三组,A组保持原始数据,B组仅缺失Y3,C组缺失Y1和Y2。在多值插补时,对A组将不进行任何处理,对B组产生Y3的一组估计值(作Y3关于Y1,Y2的回归),对C组作产生Y1和Y2的一组成对估计值(作Y1,Y2关于Y3的回归)。

    当用多值插补时,对A组将不进行处理,对B、C组将完整的样本随机抽取形成为m组(m为可选择的m组插补值),每组个案数只要能够有效估计参数就可以了。对存在缺失值的属性的分布作出估计,然后基于这m组观测值,对于这m组样本分别产生关于参数的m组估计值,给出相应的预测即,这时采用的估计方法为极大似然法,在计算机中具体的实现算法为期望最大化法(EM)。对B组估计出一组Y3的值,对C将利用 Y1,Y2,Y3它们的联合分布为正态分布这一前提,估计出一组(Y1,Y2)。

    上例中假定了Y1,Y2,Y3的联合分布为正态分布。这个假设是人为的,但是已经通过验证(Graham和Schafer于1999),非正态联合分布的变量,在这个假定下仍然可以估计到很接近真实值的结果。

    多重插补和贝叶斯估计的思想是一致的,但是多重插补弥补了贝叶斯估计的几个不足:

    (1)贝叶斯估计以极大似然的方法估计,极大似然的方法要求模型的形式必须准确,如果参数形式不正确,将得到错误得结论,即先验分布将影响后验分布的准确性。而多重插补所依据的是大样本渐近完整的数据的理论,在数据挖掘中的数据量都很大,先验分布将极小的影响结果,所以先验分布的对结果的影响不大。

    (2)贝叶斯估计仅要求知道未知参数的先验分布,没有利用与参数的关系。而多重插补对参数的联合分布作出了估计,利用了参数间的相互关系。

    (11) C4.5方法

    通过寻找属性间的关系来对遗失值填充。它寻找之间具有最大相关性的两个属性,其中没有遗失值的一个称为代理属性,另一个称为原始属性,用代理属性决定原始属性中的遗失值。这种基于规则归纳的方法只能处理基数较小的名词型属性。

    (三)不处理

    补齐处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实,在对不完备信息进行补齐处理的同时,我们或多或少地改变了原始的信息系统。而且,对空值不正确的填充往往将新的噪声引入数据中,使挖掘任务产生错误的结果。因此,在许多情况下,我们还是希望在保持原始信息不发生变化的前提下对信息系统进行处理。这就是第三种方法:

    直接在包含空值的数据上进行数据挖掘。这类方法包括贝叶斯网络和人工神经网络等。

    贝叶斯网络是用来表示变量间连接概率的图形模式,它提供了一种自然的表示因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。当在任何一个对象中的缺失值数量很大时,存在指数爆炸的危险。

    人工神经网络可以有效的对付空值,但人工神经网络在这方面的研究还有待进一步深入展开。人工神经网络方法在数据挖掘应用中的局限性

    缺失值填充方法总结分析:

    就几种基于统计的方法而言,删除元组法和平均值法差于hot deck、EM和MI;回归是比较好的一种方法,但仍比不上hot deck和EM;EM缺少MI包含的不确定成分。值得注意的是,这些方法直接处理的是模型参数的估计而不是空缺值预测本身。它们合适于处理无监督学习的问题,而对有监督学习来说,情况就不尽相同了。譬如,你可以删除包含空值的对象用完整的数据集来进行训练,但预测时你却不能忽略包含空值的对象。另外,C4.5和使用所有可能的值填充方法也有较好的补齐效果,人工填写和特殊值填充则是一般不推荐使用的。

    大多数数据挖掘系统都是在数据挖掘之前的数据预处理阶段采用第一、第二类方法来对空缺数据进行处理。并不存在一种处理空值的方法可以适合于任何问题。无论哪种方式填充,都无法避免主观因素对原系统的影响,并且在空值过多的情形下将系统完备化是不可行的。从理论上来说,贝叶斯考虑了一切,但是只有当数据集较小或满足某些条件(如多元正态分布)时完全贝叶斯分析才是可行的。而现阶段人工神经网络方法在数据挖掘中的应用仍很有限。值得一提的是,采用不精确信息处理数据的不完备性已得到了广泛的研究。不完备数据的表达方法所依据的理论主要有可信度理论、概率论、模糊集合论、可能性理论,D-S的证据理论等。

    二:数据平滑处理

    在实际应用中,由于数据质量参差不齐对于数据挖掘工作的影响不能够忽略不计,往往70%-80%左右的时间都需要花在数据准备的阶段里面,上面的部分简单介绍和总结了一下常用的缺失值处理方法,这部分介绍一下常用的数据平滑处理方法。

    数据平滑最根本的目的就是:降低高概率,提高低概率。

    常用的数据平滑处理方法包括:拉普拉斯数据平滑(Laplace Smoothing)、古德-图灵(Good-Turing)平滑和简单移动平均平滑。

    (一)拉普拉斯数据平滑

    拉普拉斯平滑(Laplace Smoothing)又被称为加 1 平滑,是比较常用的平滑方法。平滑方法的存在时为了解决零概率问题。所谓零概率问题,就是在计算新实例的概率时,如果某个分量在训练集中从没出现过,会导致整个实例的概率计算结果为0,。针对文本分类问题就是当一个词语在训练集中没有出现过,那么该词语的概率就为0,使用连乘法计算文本出现的概率时,整个文本出现的概率也为0,这显然是不合理的,因为不能因为一个事件没有观测到就判断该事件的概率为0.

    拉普拉斯计算方法总结:分子加1,分母加K,K代表类别数目

    (二)古德-图灵(Good-Turing)平滑

    在统计语言模型章节中,我们谈到了N元语法模型不可避免的一个问题,就是数据稀疏,其原因是大规模语料统计与有限语料的矛盾。根据齐普夫(Zipf)法则,我们能够推测知零概率问题不可避免。数据稀疏问题的解决办法就是进行平滑处理。平滑处理的算法有很多,本文将介绍众多算法中的佼佼者:古德-图灵(Good-Turing)平滑算法。

    古德-图灵(Good-Turing)估计法是很多平滑技术的核心,于1953年有古德(I.J.Good)引用图灵(Turing)的方法而提出来的。其基本思想是:利用频率的类别信息来平滑频率。对于任何发生r次数的n元语法,都假设它发生了r*次。

    其中,nr是训练语料中正好发生r次的N元组的个数。也就是说,发生r次的N元组的调整由发生r次的N元组与发生r+1次的N元组两个类别共同决定。统计数为r*次的N元组,其概率为:

    我们注意到: 也就是说,N等于这个分布中最初的统计。那样,样本中所有事件的概率之和为

    因此,可以这样说我们把你n1/N的概率剩量分配给未见事件。为了更好地理解古德-图灵(Good-Turing)估计法,以一个例子来讲解。

    训练集合:T={<s>what is it what is small?}|T|=8

    验证集合:V={what is it small ? <s> flying birds are a bird.}, |V|=12

    在训练集合上,我们得到:p(<s>)=p(it)=p(small)=p(?)=0.125, p(what)=p(is)=0.25,其他为0

    如果不经过平滑处理,则验证集上两句子的概率分别为:p(what is it?)=(0.25*2)*(0.125*2)≈0.001  p(it is flying.)=0.125*0.25*(0*2)=0

    现在用古德-图灵算法进行平滑处理,如下:

    首先计算,各发生r次N元组类别的数目,依次为 N(0)=6,N(1)=4,N(2)=2,N(i)=0 ,i>2:

    其次,重新估计各概率值。

    对于发生0次的事件概率:Pr(.)=p(flying)=p(birds)=p(are)=p(bird)=p(a)= (0+1)*N(0+1)/(8*N(0))=1*4/(8*6)≈0.083

    对于发生1次的时间概率:Pr(it)=p(<s>)=p(small)=p(?)=(1+1)*N(1+1)/(8*N(1))=2*2 /(8*4)=0.125

    对于发生两次的时间概率:Pr(what)=Pr(is)=(2+1)*N(2+1)/(8*N(2))=3*0/(8*2)=0: 保持原值0.25

    归一化处理,6*P0+4*P1+2*P2=1.5。.

    所以,归一化处理后,p’(it)=p’(<s>)=p’ (small)=p’(?)= 0.125/1.5 ≈0.08,  p’(what)=p’(is)= 0.25/1.5 ≈0.17, 

    p’(.)=p’(birds)=p’(are)=p’(bird)=p’(a) = 0.083/1.5  ≈0.06

    因此:p’(what is it?)=(0175*2)*(0.08*2)≈0.0002   p’(it is flying.) ≈ 0.08*0.17*(0.06*2)≈0.00004

    (三)简单移动平均平滑

    简单移动平均平滑是计算与等权重的指示函数的卷积,也可以不等权重.

    数据平滑示意图如下图所示:

        其中,蓝线是原始的数据曲线,绿线是经过数据平滑处理后的曲线。

    1.用ones函数创建一个元素均为1的数组,然后对整个数组除以N,得到等权重.

    2.使用权值,调用convolve函数.

    3.从convolve函数分安徽的数组中取出中间的长度为N的部分(即两者作卷积运算时完全重叠的区域.)

    4.使用matplotlib绘图

    二:常见概率分布

        概率基础是机器学习、深度学习等众多智能领域的核心基础,了解常用的一些概率分布对于了解模型内在的工作机理是很有帮助的。

    (一)长尾效应

    长尾分布,或者说长尾理论是一个与互联网发展分不开的概念。说到这里就不得不先提一下传统商业中的帕累托法则(Pareto principle),又称为二八定律。比如80%的财富集中在20%的人手里,图书馆里20%的书可以满足80%的顾客。于是大家往往只关注在PDF图中最左面的20%的顾客,以期满足80%,如下图绿色的部分,来实现效益的最大化。

    根据维基百科,长尾(The Long Tail)这一概念是由“连线”杂志主编克里斯·安德森(Chris Anderson)在2004年十月的“长尾” 一文中最早提出,用来描述诸如亚马逊和Netflix之类网站的商业和经济模式。“长尾”实际上是统计学中幂律(Power Laws)和帕累托分布(Pareto)特征的一个口语化表达。简单的长尾分布如下图所示:

        举例说明:卖一辆大众汽车利润只有几万元,卖一辆兰博基尼利润则达到几十万,翻了几十倍!然而买大众汽车的人却比买兰博基尼的人多百倍、千倍!这样一来,大众的成功便不难解释了。

    Google和阿里巴巴的成功,也在于他们找到了一条长尾,把许许多多的小市场拼合在一起,成就了一个大市场。阿里巴巴从那些不被其他商家关注的中小企业、小微企业入手,把网下的贸易搬到了网上,以较低的门槛吸引他们在网上展开贸易,而这些处于长尾的小微企业,也通过阿里巴巴找到了更多的机会和财富,这些长长的尾巴聚集起来,也就铸造了阿里巴巴的成功,铺就了马云的财富金路。

    产品的“二八”市场呈现“长尾”分布,二者对比如下:

    长尾理论是蓝海战略的延续,长尾理论的基本原理是聚沙成塔,创造市场规模。 长尾价值重构目的是满足个性需求,通过创意和网络,提供一些更具价值内容,更个性化的东西,二者对比如下:

    (二)肥尾分布(Fat-tailed distribution

    从建模的角度来看,肥尾分布就是针对那些罕见事件虽然发生的概率低,但也必须要考虑到的情况。比如一个保险公司考虑灾害的发生和保险的定价,那么像自然灾害这种情况,如果不考虑的话就可能面临真的发生时要赔很多的情况。因为正如肥尾分布的名字所体现的,即使在远离峰值的远端,那些罕见事件还是有相当的概率会发生的。虽然我们常常用正态分布对很多时间进行建模,但当一个事件的本质是肥尾分布而我们误用了正态分布或指数分布时,就存在着对“小概率事件真的发生”这种危险的低估。据说美国股市历史上的黑色星期五,千禧年的互联网泡沫破灭,以及2008年前后的金融危机都是这种错误的真实案例(来源:Wikipedia, Fat-tailed distribution)。

    肥尾分布的数学定义为:

    limx→∞Pr[X>x]∼x−α,α>0

    也就是说,在 x较大的地方,肥尾分布趋于0的速度是明显慢于指数分布和正态分布的。柯西分布(Cauchy distribution)就是一类有名的肥尾分布。关于柯西分布,有几个有趣的性质,首先它是稳定的(stable),也有着显式的PDF和CDF,但是它的均值和方差确是无法定义的(undefined)。于是中心极限定理在这里就不适用了。如果试着做一下仿真,我们也可以发现,随着实验次数的增大,样本的均值并不会逐渐收敛到某个值上,而出现这种情况的原因就是时不时出现的“异常大值”会明显改变样本的均值。

    (三)重尾分布(Heavy-tailed distribution

    指数分布在 x→∞的时候是以指数的速度趋近于0,那么以指数分布为分界线,我们把 x→∞时下降速度更快的称为 Thin-tailed distribution,比如正态分布。也就是说,在远离峰值的尾部区域,时间发生的概率更低一些。所以正态分布用来对那些主流事件发生较多,非主流事件发生较少的情况进行建模更为合适。与此相对的,把 x→∞时下降速度慢于指数分布的成为重尾分布(Heavy-tailed distribution)。其数学定义为:

    limx→∞eλxF¯(x)=∞,for all λ>0

    其中,F¯(x)≡Pr(X>x)F¯(x)≡Pr(X>x) 是所谓的尾分布函数。

    重尾分布更适用于对那些离峰值较远的稀有事件也会有相当的概率发生的情况。重尾分布作为一个大的类别,还包含三个重要的子类别,分别是肥尾分布(Fat-tailed distribution),长尾分布(Long-tailed distribution)和次指数分布(Subexponential distribution)。

    (四)随机游走(Random walk

    所谓随机游走,是统计学中一个很广泛的概念,包含了很多内容。我没能找到一个统一的数学模型来描述随机游走,但大意就是在任意维度的空间里,一个点随机地向任意方向前进随机长度的距离,然后重复这一步骤的过程。有一个有名的醉汉回家问题就是一个典型的一维随机游走的问题。

    Lévy flight 是随即游走的一种,它的每一步方向完全随机而各向同性,但步长的分布是重尾分布(heavy-tailed)。Brownian motion(好像)也算是随即游走的一种,它的步长的分布取正态分布。下面两张图来自Wikipedia,分别描述了1000次的基于柯西分布的 Lévy flight (左)和基于正态分布的Brownian motion(右)。

    从这张图上也可以比较明显地看出 Lévy flight 出现大跨步的频率确实要比 Brownian motion 要多一些。已经有相当多的研究表明很多动物的移动模式可以用 Lévy flight 来描述。而近些年通过对人类的移动数据(通话记录、出租车等)的挖掘,我们惊奇地发现人类的移动模式也和 Lévy flight 高度吻合。也就是说,虽然我们每个人急功近利地去追求自己的目标,但在宏观的尺度上,我们和山里的猴子没什么区别。

    (五)连续型随机分布

    统计学中连续型随机分布主要包括:正态分布、均匀分布、指数分布、对数正态分布、柯西分布、Gamma分布、瑞利分布和韦伯分布。

    1)正态分布(Normal Distribution

    正态分布应该是实际使用中,接触最多,也是假设或者使用最多的一种连续型数据分布形态了,通常又称为高斯分布。

    2)均匀分布(Uniform Distribution

        均匀分布应该是最简单的一种概率分布函数了,概率分布函数f(x)曲线如下图所示:

    X落在(a,b)中任意等长度的子区间内的概率都是相同的,即它落在子区间的概率只依赖于子区间的长度,而与子区间的位置无关。

       常见应用情形:

       1、在数值计算中,由于四舍五入,小数点后某一位小数引入的误差;

       2、公交线路上两辆公共汽车前后通过某汽车停车站的时间,即:乘客的候车时间。(等等)

    3)指数分布(Exponential Distribution

        指数分布的使用也是很广泛的,在实际的应用中,往往采用指数分来来对时间特性进行描述。

    常见应用情形:

    主要用于描述独立事件发生的时间间隔。自然界中有很多“寿命”都可以用指数分布来进行描述。如:电子元件的寿命、动物的寿命、电话的童话时间、服务系统地服务时间等。

    4)对数分布(Log Distribution

    如果一个随机变量的对数服从正态分布,那么就称该随机变量服从于对数正态分布。

    常见应用情形:

    金融保险业、投资收益计算等。

    5)柯西分布(Cauchy Distribution

    柯西分布被称为是正态分布的孪生兄弟,它和正态分布的曲线是极为相似的也是很容易混淆的。

    常见应用情形:

    主要应用于物理学中,是描述受迫共振的微分方程的解。在光谱学中,它用来描述被共振或者其他机制加宽的谱线的形状。

    6Gamma分布

    Gamma分布又称为伽马分布,多用于描述随机事件的发生时间间隔。

    常见应用情形:

    用于描述随机变量X等到第K件事发生所需等待的时间。

    7)瑞利分布(Rayleigh Distribution

    当一个随二维向量的两个分量呈独立的、有着相同的方差的正态分布时,这个向量的模呈瑞利分布。

    常见应用情形:

    常用与描述平坦衰落信号接收包络或独立多径分量接受包络统计时变特性。如两个正交高斯噪声信号之和的包络服从瑞利分布。

    8)韦伯分布(Weibull Distribution

    韦氏分布或者威布尔分布,是可靠性分析和寿命检验的理论基础。

    常见应用情形:

    可靠性和失效分析、极值理论。

    (六)离散型随机分布

          统计学中的常用离散型随机分布主要包括:二项分布、几何分布、超几何分布、泊松分布。

    1)二项分布(Bernoulli Distribution

    2)负二项分布(Negative Bernoulli Distribution

    2)几何分布(Geometric Distribution

    3)超几何分布(Geometric Distribution

    4)泊松分布(Poisson Distribution

    (七)三大抽样分布

          统计学中包含的三大抽样分布分别为:卡方分布、F分布和t分布。

    1)卡方分布

    2F分布

    2t分布

    分布之间的关系:

    展开全文
  • windchill常用数据收集,内容来自互联网整理
  • 聚星仪器 CompactRIO平台数据采集常用编程方法2009rar,聚星仪器 CompactRIO平台数据采集常用编程方法2009
  • 聚星仪器 CompactRIO平台数据采集常用编程方法2010rar,聚星仪器 CompactRIO平台数据采集常用编程方法2010
  • 9种常用数据分析方法

    万次阅读 2020-08-17 11:09:23
    对比法就是用两组或两组以上的数据进行比较,是最通用的方法。 我们知道孤立的数据没有意义,有对比才有差异。比如在时间维度上的同比和环比、增长率、定基比,与竞争对手的对比、类别之间的对比、特征和属性对比等...

    一、公式拆解

    所谓公式拆解法就是针对某个指标,用公式层层分解该指标的影响因素。
    举例:分析某产品的销售额较低的原因,用公式法分解

     

    图片.png

    二、对比分析

    对比法就是用两组或两组以上的数据进行比较,是最通用的方法。

    我们知道孤立的数据没有意义,有对比才有差异。比如在时间维度上的同比和环比、增长率、定基比,与竞争对手的对比、类别之间的对比、特征和属性对比等。对比法可以发现数据变化规律,使用频繁,经常和其他方法搭配使用。

    下图的AB公司销售额对比,虽然A公司销售额总体上涨且高于B公司,但是B公司的增速迅猛,高于A公司,即使后期增速下降了,最后的销售额还是赶超。

     

    图片.png

    三、A/Btest

    A/Btest,是将Web或App界面或流程的两个或多个版本,在同一时间维度,分别让类似访客群组来访问,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。A/Btest的流程如下:

    (1)现状分析并建立假设:分析业务数据,确定当前最关键的改进点,作出优化改进的假设,提出优化建议;比如说我们发现用户的转化率不高,我们假设是因为推广的着陆页面带来的转化率太低,下面就要想办法来进行改进了

    (2)设定目标,制定方案:设置主要目标,用来衡量各优化版本的优劣;设置辅助目标,用来评估优化版本对其他方面的影响。

    (3)设计与开发:制作2个或多个优化版本的设计原型并完成技术实现。

    (4)分配流量:确定每个线上测试版本的分流比例,初始阶段,优化方案的流量设置可以较小,根据情况逐渐增加流量。

    (5)采集并分析数据:收集实验数据,进行有效性和效果判断:统计显著性达到95%或以上并且维持一段时间,实验可以结束;如果在95%以下,则可能需要延长测试时间;如果很长时间统计显著性不能达到95%甚至90%,则需要决定是否中止试验。

    (6)最后:根据试验结果确定发布新版本、调整分流比例继续测试或者在试验效果未达成的情况下继续优化迭代方案重新开发上线试验。
    流程图如下:

     

    image.png

    四、象限分析

    通过对两种及以上维度的划分,运用坐标的方式表达出想要的价值。由价值直接转变为策略,从而进行一些落地的推动。象限法是一种策略驱动的思维,常与产品分析、市场分析、客户管理、商品管理等。比如,下图是一个广告点击的四象限分布,X轴从左到右表示从低到高,Y轴从下到上表示从低到高。

     

    image.png

     

    高点击率高转化的广告,说明人群相对精准,是一个高效率的广告。高点击率低转化的广告,说明点击进来的人大多被广告吸引了,转化低说明广告内容针对的人群和产品实际受众有些不符。高转化低点击的广告,说明广告内容针对的人群和产品实际受众符合程度较高,但需要优化广告内容,吸引更多人点击。低点击率低转化的广告,可以放弃了。还有经典的RFM模型,把客户按最近一次消费(Recency)、消费频率(Frequency)、消费金额 (Monetary)三个维度分成八个象限。

     

    image.png


    象限法的优势:
    (1)找到问题的共性原因

    通过象限分析法,将有相同特征的事件进行归因分析,总结其中的共性原因。例如上面广告的案例中,第一象限的事件可以提炼出有效的推广渠道与推广策略,第三和第四象限可以排除一些无效的推广渠道;

    (2)建立分组优化策略
    针对投放的象限分析法可以针对不同象限建立优化策略,例如RFM客户管理模型中按照象限将客户分为重点发展客户、重点保持客户、一般发展客户、一般保持客户等不同类型。给重点发展客户倾斜更多的资源,比如VIP服务、个性化服务、附加销售等。给潜力客户销售价值更高的产品,或一些优惠措施来吸引他们回归。

    五、帕累托分析

    帕累托法则,源于经典的二八法则。比如在个人财富上可以说世界上20%的人掌握着80%的财富。而在数据分析中,则可以理解为20%的数据产生了80%的效果需要围绕这20%的数据进行挖掘。往往在使用二八法则的时候和排名有关系,排在前20%的才算是有效数据。二八法是抓重点分析,适用于任何行业。找到重点,发现其特征,然后可以思考如何让其余的80%向这20%转化,提高效果。

    一般地,会用在产品分类上,去测量并构建ABC模型。比如某零售企业有500个SKU以及这些SKU对应的销售额,那么哪些SKU是重要的呢,这就是在业务运营中分清主次的问题。

    常见的做法是将产品SKU作为维度,并将对应的销售额作为基础度量指标,将这些销售额指标从大到小排列,并计算截止当前产品SKU的销售额累计合计占总销售额的百分比。

    百分比在 70%(含)以内,划分为 A 类。百分比在 70~90%(含)以内,划分为 B 类。百分比在 90~100%(含)以内,划分为 C 类。以上百分比也可以根据自己的实际情况调整。

    ABC分析模型,不光可以用来划分产品和销售额,还可以划分客户及客户交易额等。比如给企业贡献80%利润的客户是哪些,占比多少。假设有20%,那么在资源有限的情况下,就知道要重点维护这20%类客户。

    image.png

    六、漏斗分析

    漏斗法即是漏斗图,有点像倒金字塔,是一个流程化的思考方式,常用于像新用户的开发、购物转化率这些有变化和一定流程的分析中。

     

    image.png

    上图是经典的营销漏斗,形象展示了从获取用户到最终转化成购买这整个流程中的一个个子环节。相邻环节的转化率则就是指用数据指标来量化每一个步骤的表现。所以整个漏斗模型就是先将整个购买流程拆分成一个个步骤,然后用转化率来衡量每一个步骤的表现,最后通过异常的数据指标找出有问题的环节,从而解决问题,优化该步骤,最终达到提升整体购买转化率的目的。

    整体漏斗模型的核心思想其实可以归为分解和量化。比如分析电商的转化,我们要做的就是监控每个层级上的用户转化,寻找每个层级的可优化点。对于没有按照流程操作的用户,专门绘制他们的转化模型,缩短路径提升用户体验。

    还有经典的黑客增长模型,AARRR模型,指Acquisition、Activation、Retention、Revenue、Referral,即用户获取、用户激活、用户留存、用户收益以及用户传播。这是产品运营中比较常见的一个模型,结合产品本身的特点以及产品的生命周期位置,来关注不同的数据指标,最终制定不同的运营策略。

    从下面这幅AARRR模型图中,能够比较明显的看出来整个用户的生命周期是呈现逐渐递减趋势的。通过拆解和量化整个用户生命周期各环节,可以进行数据的横向和纵向对比,从而发现对应的问题,最终进行不断的优化迭代。

     

    image.png

    七、路径分析

    用户路径分析追踪用户从某个开始事件直到结束事件的行为路径,即对用户流向进行监测,可以用来衡量网站优化的效果或营销推广的效果,以及了解用户行为偏好,其最终目的是达成业务目标,引导用户更高效地完成产品的最优路径,最终促使用户付费。如何进行用户行为路径分析?

    (1)计算用户使用网站或APP时的每个第一步,然后依次计算每一步的流向和转化,通过数据,真实地再现用户从打开APP到离开的整个过程。
    (2)查看用户在使用产品时的路径分布情况。例如:在访问了某个电商产品首页的用户后,有多大比例的用户进行了搜索,有多大比例的用户访问了分类页,有多大比例的用户直接访问的商品详情页。
    (3)进行路径优化分析。例如:哪条路径是用户最多访问的;走到哪一步时,用户最容易流失。
    (4)通过路径识别用户行为特征。例如:分析用户是用完即走的目标导向型,还是无目的浏览型。
    (5)对用户进行细分。通常按照APP的使用目的来对用户进行分类。如汽车APP的用户可以细分为关注型、意向型、购买型用户,并对每类用户进行不同访问任务的路径分析,比如意向型的用户,他进行不同车型的比较都有哪些路径,存在什么问题。还有一种方法是利用算法,基于用户所有访问路径进行聚类分析,依据访问路径的相似性对用户进行分类,再对每类用户进行分析。

    以电商为例,买家从登录网站/APP到支付成功要经过首页浏览、搜索商品、加入购物车、提交订单、支付订单等过程。而在用户真实的选购过程是一个交缠反复的过程,例如提交订单后,用户可能会返回首页继续搜索商品,也可能去取消订单,每一个路径背后都有不同的动机。与其他分析模型配合进行深入分析后,能为找到快速用户动机,从而引领用户走向最优路径或者期望中的路径。
    用户行为路径图示例:

     

    image.png

    八、留存分析

    用户留存指的是新会员/用户在经过一定时间之后,仍然具有访问、登录、使用或转化等特定属性和行为,留存用户占当时新用户的比例就是留存率。留存率按照不同的周期分为三类,以登录行为认定的留存为例:
    第一种 日留存,日留存又可以细分为以下几种:
    (1)次日留存率:(当天新增的用户中,第2天还登录的用户数)/第一天新增总用户数
    (2)第3日留存率:(第一天新增用户中,第3天还有登录的用户数)/第一天新增总用户数
    (3)第7日留存率:(第一天新增用户中,第7天还有登录的用户数)/第一天新增总用户数
    (4)第14日留存率:(第一天新增用户中,第14天还有登录的用户数)/第一天新增总用户数
    (5)第30日留存率:(第一天新增用户中,第30天还有登录的用户数)/第一天新增总用户数

    第二种 周留存,以周度为单位的留存率,指的是每个周相对于第一个周的新增用户中,仍然还有登录的用户数。

    第三种 月留存,以月度为单位的留存率,指的是每个月相对于第一个周的新增用户中,仍然还有登录的用户数。留存率是针对新用户的,其结果是一个矩阵式半面报告(只有一半有数据),每个数据记录行是日期、列为对应的不同时间周期下的留存率。正常情况下,留存率会随着时间周期的推移而逐渐降低。下面以月留存为例生成的月用户留存曲线:

     

    image.png

    九、聚类分析

    聚类分析属于探索性的数据分析方法。通常,我们利用聚类分析将看似无序的对象进行分组、归类,以达到更好地理解研究对象的目的。聚类结果要求组内对象相似性较高,组间对象相似性较低。在用户研究中,很多问题可以借助聚类分析来解决,比如,网站的信息分类问题、网页的点击行为关联性问题以及用户分类问题等等。其中,用户分类是最常见的情况。

    常见的聚类方法有不少,比如K均值(K-Means),谱聚类(Spectral Clustering),层次聚类(Hierarchical Clustering)。以最为常见的K-means为例,如下图:

    image.png

    可以看到,数据可以被分到红蓝绿三个不同的簇(cluster)中,每个簇应有其特有的性质。显然,聚类分析是一种无监督学习,是在缺乏标签的前提下的一种分类模型。当我们对数据进行聚类后并得到簇后,一般会单独对每个簇进行深入分析,从而得到更加细致的结果。



    作者:数据蝉
    链接:https://www.jianshu.com/p/d27563e492a0
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 主要介绍了PHP中4种常用的抓取网络数据方法,本文讲解使用file_get_contents函数、fopen函数、curl库三种常见方法抓取网络数据,并给出了代码实例,需要的朋友可以参考下
  • 几种常见的数据变换方法

    千次阅读 2021-01-30 17:16:14
    如果我们把从这两个渠道收集上来的数据进行集成、挖掘。无论使用什么算法,结果也不是正确的。因为这两个分数,代表的含义完全不同。所以说,有时候数据变换比算法选择更重要。数据错了,算法再正确也是错的。那么,...
  • 共101页,包括:数据采集卡的分类、常用数据采集卡、数据采集卡的选择及应用、数据采集卡编程控制、案例分析、开发步骤,内容详实,通俗易懂,适用于工程技术人员、高校教师及在读学生。
  • 12种文本数据采集方法

    千次阅读 2021-05-18 14:39:50
    10种AI训练数据采集工具排行榜12种文本数据采集方法1、目前常用的12种数据网站2、如何写Python爬虫:3、人生第一个 爬虫代码示例:另外: 12种文本数据采集方法 如何收集文本数据,来实现数据分析、数据训练、数据...
  • 大数据的来源多种多样,在大数据时代背景下,如何从大数据中采集出有用的信息是大数据发展的最关键因素。大数据采集是大数据产业的基石,大数据采集阶段的工作是大数据的核心技术之一。为了高效采集大数...
  • 统计分析工具之常用数 据分析方法 有一些统计分析工具可供公司用来解决经营问题,它们有助于收集 和分析数据以便为决策提供依据 对帐单(检查表; 冷流程图; 散布图; 冷直方图; 令排列图; 控制图; 令因果分析图; 统计...
  • spss数据分析常用数据集:lx12.xls 统计分析及模型构建中常用的数据集; 学习软件的时候,会苦于没有数据进行实操,而其实一般分析软件都会自带数据,现在介绍如何获取SPSS软件自带的数据。 纽约时报的一篇文章报道...
  • 大家好,我是小五电商数据分析中,常见的数据采集工具及方法有下面几种:火车采集器:可以做数据抓取,数据清洗、分析、挖掘、可视化等。搜集客:采集数据,所有爬虫需要在自己电脑上跑。八爪鱼:免费...
  • 有很多公司或者平台是专门做数据收集和分析的,企业会直接从那里购买数据或者相关服务给数据分析师,这是一种常见的获取数据的方式之一。 方式2、网络爬取数据 除了购买数据以外,数据分析师还可以通过网络爬虫从...
  • spss数据分析常用数据集:missing0.sav 统计分析及模型构建中常用的数据集; 学习软件的时候,会苦于没有数据进行实操,而其实一般分析软件都会自带数据,现在介绍如何获取SPSS软件自带的数据。 纽约时报的一篇文章...
  • Satisfy 常用数据分析方法 培训主要内容 1了解数据总体本的含义及随机抽样的一般方法; 2掌握排列图因果分析图的作图方法和应用; 3掌握分层法统计图表法的应用 4了解直方图的原理作用作图方法及应用 培训要求 好学习...
  • 常用网页数据采集软件对比推荐.pdf
  • spss数据分析常用数据集:drug.sav 统计分析及模型构建中常用的数据集; 学习软件的时候,会苦于没有数据进行实操,而其实一般分析软件都会自带数据,现在介绍如何获取SPSS软件自带的数据。 纽约时报的一篇文章报道...
  • 最全的大数据采集方法分类

    万次阅读 2019-10-18 17:10:19
    数据采集的设计,几乎完全取决于数据源的特性,毕竟数据源是整个大数据平台蓄水的上游,数据采集不过是获取水源的管道罢了。一、大数据环境下的数据处理需求大数据环境下数据来源非常丰富且数据类型多...
  • 电商数据采集的10个经典方法

    千次阅读 2021-07-21 17:11:29
    那么电商数据采集方法有哪些呢?我给大家分享一下,我爬虫的个人经验,我们在采集类似电商数据网站的时候会遇到什么技术问题,然后再根据这些问题给大家分享采集方案. 一、写爬虫采集网站之前: 为什么经常听到...
  • MES系统中常见的数据采集方法

    千次阅读 2022-01-05 11:14:14
    本文介绍MES系统中常见的数据采集方法
  • 数据分析常用方法 健雄杀袋 培训主要内容: 1了解数据总体样本的含义及随机抽样的一般方法; 2掌握排列图因果分析图的作图方法和应用; 3掌握分层法统计图表法的应用; 4了解直方图的原理作用作图方法及应用; 培训要求 ...
  • 简单的数据采集插值方法
  • 10种常用数据分析方法

    万次阅读 2018-12-07 16:15:57
    道家强调四个字,叫“道、法、术、器”。   层次区别:   “器”是指物品或工具,在数据分析...“法”是指选择的方法,有句话说“选择比努力重要”;   “道”是指方向,是指导思想,是战略。   在数...
  • 采集程序的优点有:无须维护网站,因为采集程序中的数据来自其他网站,它将随着该网站的更新而更新;可以节省服务器资源,一般采集程序就几个文件,所有网页内容都是来自其他网站。缺点有:不稳定,如果目标网站...
  • 数据分析常用数据集:abiraterone.xlsx 统计分析及模型构建中常用的数据集、使用数据集可以对模型和算法进行快速验证,而且如果能够得到经典测试数据有助于我们复现大佬(巨佬)们提供的算法模型、达到实战联系的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 306,582
精华内容 122,632
关键字:

常用数据收集方法