数据模型 – 庄闲棋牌官网官方版 -199IT //www.otias-ub.com 发现数据的价值-199IT Mon, 24 Aug 2020 04:30:02 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.4.2 连载:阿里巴巴大数据实践—数据建模综述 //www.otias-ub.com/archives/1106618.html Mon, 24 Aug 2020 04:30:02 +0000 //www.otias-ub.com/?p=1106618
本文来源:数智化转型俱乐部
摘要
数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。

随着DT时代互联网、智能设备及其他信息技术的发展,数据爆发式增长,如何将这些数据进行有序、有结构地分类组织和存储是我们面临的一个挑战。

如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。Linux的创始人Torvalds有一段关于“什么才是优秀程序员”的话:“烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系”,其阐述了数据模型的重要性。有了适合业务和基础数据存储环境的模型,那么大数据就能获得以下好处。

  • 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐。
  • 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本。
  • 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。
  • 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。

因此,毋庸置疑,大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。

1.关系数据库系统和数据仓库

E .F .Codd是关系数据库的鼻祖,他首次提出了数据库系统的关系模型,开创了数据库关系方法和关系数据理论的研究。随着一大批大型关系数据库商业软件(如Oracle、Informix、DB2等)的兴起,现代企业信息系统几乎都使用关系数据库来存储、加工和处理数据。数据仓库系统也不例外,大量的数据仓库系统依托强大的关系数据库能力存储和处理数据,其采用的数据模型方法也是基于关系数据库理论的。

虽然近年来大数据的存储和计算基础设施在分布式方面有了飞速的发展,NoSQL技术也曾流行一时,但是不管是Hadoop、Spark还是阿里巴巴集团的MaxCompute系统,仍然在大规模使用SQL进行数据的加工和处理,仍然在用Table存储数据,仍然在使用关系理论描述数据之间的关系,只是在大数据领域,基于其数据存取的特点在关系数据模型的范式上有了不同的选择而已。关于范式的详细说明和定义,以及其他一些关系数据库的理论是大数据领域建模的基础,有兴趣的读者可以参考相关的经典数据库理论书籍,如《数据库系统概念》。

2.从OLTP和OLAP系统的区别看模型方法论的选择

OLTP系统通常面向的主要数据操作是随机读写,主要采用满足3NF的实体关系模型存储数据,从而在事务处理中解决数据的冗余和一致性问题;而OLAP系统面向的主要数据操作是批量读写,事务处理中的一致性不是OLAP所关注的,其主要关注数据的整合,以及在一次性的复杂大数据查询和处理中的性能,因此它需要采用一些不同的数据建模方法。

3.典型的数据仓库建模方法论

  • ER模型

数据仓库之父Bill Inmon提出的建模方法是从全企业的高度设计一个3NF模型,用实体关系(Entity Relationship,ER)模型描述企业业务,在范式理论上符合3NF。数据仓库中的3NF与OLTP系统中的3NF的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。其具有以下几个特点:

1)需要全面了解企业业务和数据;

2)实施周期非常长;

3)对建模人员的能力要求非常高;

采用ER模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。其建模步骤分为三个阶段:

1)高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述企业的业务总体概况。

2)中层模型:在高层模型的基础上,细化主题的数据项。

3)物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。

ER模型在实践中最典型的代表是Teradata公司基于金融业务发布的FS-LDM(Financial Services Logical Data Model),它通过对金融业务的高度抽象和总结,将金融业务划分为10大主题,并以设计面向金融仓库模型的核心为基础,企业基于此模型做适当调整和扩展就能快速落地实施。

  • 维度模型

维度模型是数据仓库领域的Ralph Kimball大师所倡导的,他的The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling是数据仓库工程领域最流行的数据仓库建模的经典。

维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。其设计分为以下几个步骤。

选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;还可以是一系列相关业务事件组成的业务流程,具体需要看我们分析的是某些事件发生情况,还是当前状态,或是事件流转效率。

1)选择粒度:在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。

2)识别维表:选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。

3)选择事实:确定分析需要衡量的指标。

  • Data Vault模型

Data Vault是Dan Linstedt发起创建的一种模型,它是ER模型的衍生,其设计的出发点也是为了实现数据的整合,但不能直接用于数据分析决策。它强调建立一个可审计的基础数据层,也就是强调数据的历史性、可追溯性和原子性,而不要求对数据进行过度的一致性处理和整合;同时它基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型,以应对源系统变更的扩展性。Data Vault模型由以下几部分组成。

1)Hub:是企业的核心业务实体,由实体key、数据仓库序列代理键、装载时间、数据来源组成。

2)Link:代表Hub之间的关系。这里与ER模型最大的区别是将关系作为一个独立的单元抽象,可以提升模型的扩展性。它可以直接描述1:1、1:n和n:n的关系,而不需要做任何变更。它由Hub的代理键、装载时间、数据来源组成。

3)Satellite:是Hub的详细描述内容,一个Hub可以有多个Satellite。它由Hub的代理键、装载时间、来源类型、详细的Hub描述信息组成。

Data Vault模型比ER模型更容易设计和产出,它的ETL加工可实现配置化。通过Dan Linstedt的比喻更能理解Data Vault的核心思想:Hub可以想象成人的骨架,那么Link就是连接骨架的韧带,而Satellite就是骨架上面的血肉。看如下实例(来自Data Vault Modeling Guide,作者Hans Hultgren),如图所示。

Data Vault模型实例

  • Anchor模型

Anchor对Data Vault模型做了进一步规范化处理,Lars. Rönnbäck的初衷是设计一个高度可扩展的模型,其核心思想是所有的扩展只是添加而不是修改,因此将模型规范到6NF,基本变成了k-v结构化模型。我们看一下Anchor模型的组成。

1)Anchors:类似于Data Vault的Hub,代表业务实体,且只有主键。

2)Attributes:功能类似于Data Vault的Satellite,但是它更加规范化,将其全部k-v结构化,一个表只有一个Anchors的属性描述。

3)Ties:就是Anchors之间的关系,单独用表来描述,类似于Data Vault的Link,可以提升整体模型关系的扩展能力。

4)Knots:代表那些可能会在多个Anchors中公用的属性的提炼,比如性别、状态等这种枚举类型且被公用的属性。

在上述四个基本对象的基础上,又可以细划分为历史的和非历史的,其中历史的会以时间戳加多条记录的方式记录数据的变迁历史。

Anchor模型的创建者以此方式来获取极大的可扩展性,但是也会增加非常多的查询join操作。创建者的观点是,数据仓库中的分析查询只是基于一小部分字段进行的,类似于列存储结构,可以大大减少数据扫描,从而对查询性能影响较小。一些有数据表裁剪(Table Elimination)特性的数据库如MariaDB的出现,还会大量减少join操作。但是实际情况是不是如此,还有待商榷。下面是一个Anchor模型图(来自Anchor Modeling-Agile Information Modeling in Evolving Data Environments,作者Lars. Rönnbäck),如图所示。

Anchor模型图

注:本书中出现的部分专有名词、专业术语、产品名称、软件项目名称、工具名称等,是淘宝(中国)软件有限公司内部项目的惯用词语,如与第三方名称雷同,实属巧合。

  • 节选自《大数据之路:阿里巴巴大数据实践》

]]>
数据模型需要多少训练数据? //www.otias-ub.com/archives/420966.html Wed, 23 Dec 2015 14:25:08 +0000 //www.otias-ub.com/?p=420966 毫无疑问机器学习是大数据分析不可或缺的一部分,在使用机器学习技术的时候工程师除了要选择合适的算法之外还需要选择合适的样本数据。那么工程师到底应该选择哪些样本数据、选择多少样本数据才最合适呢?来自于Google的软件工程师Malay Haldar最近发表了一篇题为《数据模型需要多少训练数据》的文章对此进行了介绍。

训练数据的质量和数量通常是决定一个模型性能的最关键因素。一旦训练数据准备好,其他的事情就顺理成章了。但是到底应该准备多少训练数据呢?答案是这取决于要执行的任务,要满足的性能,所拥有的输入特征、训练数据中的噪音、提取特征中的噪音以及模型的复杂程度等因素。而找出这些变量之间相互关系的方法就是在不同数据量的训练数据上训练模型并绘制学习曲线。但是这仅仅适合于已经有一定数量的训练数据的情况,如果是最开始的时候,或者说只有很少一点训练数据的情况,那应该怎么办呢?

与死板地给出所谓精确的“正确”答案相比,更靠谱的方法是通过估算和具体的经验法则。例如本文将要介绍的实证方法:首先自动生成很多逻辑回归问题。然后对生成的每一个问题,研究训练数据的数量与训练模型的性能之间的关系。最后通过观察这两者在这一系列问题上的关系总结出一个简单的规则。

1-2

生成一系列逻辑回归问题并研究不同数据量的训练数据所造成的影响的代码可以从GitHub上获取。相关代码是基于Tensorflow实现的,运行这些代码不需要任何特殊的软件或者硬件,用户可以在自己的笔记本上运行整个实验。代码运行之后生成的图表如下:

2-2

其中,X轴是训练样本的数量与模型参数数量的比率。Y轴是训练模型的得分(f-score)。不同颜色的曲线表示不同参数数量的模型。例如,红色曲线代表模型有128个参数,曲线的轨迹表明了随着训练样本从128 x 1到 128 x 2并不断增长的过程中该模型的得分变化。

通过该图表,我们能够发现模型得分并不会随着参数规模的变化而变化。但是这是针对线性模型而言,对于一些隐藏的非线性模型并不适合。当然,更大的模型需要更多的训练数据,但是对于一个给定的训练模型数量与模型参数数量比率其性能是一样的。该图表还显示,当训练样本的数量与模型参数数量的比率达到10:1之后,模型得分基本稳定在0.85,该比率便可以作为良好性能模型的一种定义。根据该图表我们可以总结出10X规则,也就是说一个优秀的性能模型需要训练数据的数量10倍于该模型中参数的数量。

10X规则将估计训练数据数量的问题转换成了需要知道模型参数数量的问题。对于逻辑回归这样的线性模型,参数的数量与输入特征的数量相等,因为模型会为每一个特征分派一个相关的参数。但是这样做可能会有一些问题:

  • 特征可能是稀疏的,因而可能会无法直接计算出特征的数量。
  • 由于正则化和特征选择技术,很多特征可能会被抛弃,因而与原始的特征数相比,真正输入到模型中的特征数会非常少。

避免这些问题的一种方法是:必须认识到估算特征的数量时并不是必须使用标记的数据,通过未标记的样本数据也能够实现目标。例如,对于一个给定的大文本语料库,可以在标记数据进行训练之前通过生成单词频率的历史图表来理解特征空间,通过历史图表废弃长尾单词进而估计真正的特征数,然后应用10X规则来估算模型需要的训练数据的数据量。

需要注意的是,神经网络构成的问题集与逻辑回归这样的线性模型并不相同。为了估算神经网络所需要的参数数量,你需要:

  • 如果输入是稀疏的,那么需要计算嵌套层使用的参数的数量。参照word2vec的Tensorflow教程示例。
  • 计算神经网络中边的数量

由于神经网络中参数之间的关系并不是线性的,所以本文基于逻辑回归所做的实证研究并不适合神经网络。但是在这种情况下,可以将10X规则作为训练数据所需数据量的下限。

尽管有上面的问题,根据Malay Haldar的经验,10X规则对于大部分问题还是适用的,包括浅神经网络。如果有疑问,可以在Tensorflow的代码中插入自己的模型和假设,然后运行代码进行验证研究。

via:InfoQ中文站

]]>
数据模型在电商CRM中的应用 //www.otias-ub.com/archives/52221.html Wed, 20 Jun 2012 14:54:49 +0000 //www.otias-ub.com/?p=52221

随着电子商务付费推广流量的上涨,越来越多大卖家开始关注以往高速发展背景下“潜在水底的隐形冰山”——老客户。

目前我所知道的电商的一些情况是:

1.一个新客户引入的成本30~50,独立B2C更高;

2.淘宝付费推广流量大概1UV=1元钱,直通车的出价机会都上1块钱了;

3.首焦+硬广虽然贵,但是依然很多人会投,ROI1.5是均值,能到3已经是超神了;

4.淘客越来越趋向于大卖家和爆款的推广,中小卖家流量来源越来越有限;

5.自然搜索仍然是大家努力的方向,天天想着打造爆款。

 因此,越来越多卖家关注和开始建立品牌/店铺的CRM体系。原因如下:

1.维系一个老客户复购的成本,是引入一个新客户的10分之1;

2.老客户客单价显着高于新客户,我对大部分店铺的诊断都证明这一点;

3.老客户更多的选择静默下单,客服压力小(这个卖家心理有数);

4.老客户了解店铺产品,退换货率更低,DSR评分和评价给得更好;

但是,这当中存在哪些问题呢?

1.大部分卖家CRM没有经过完整的数据分析,甚至初步的也没有;

2.大家的CRM仍停留在促销发短信,大促发多几条短信的阶段;

3.普遍没有对客户进行细分,不知道客户生命周期的重要性和不知道如何细分;

4.没有对客户价值进行划分,高中低价值客户同一而论;

5.没有用心思考是否有比打折和优惠券更好的复购刺激方案;

怎么解决呢?以下内容可以帮助大家把CRM策略由粗放转为精细。

另外,本文很多地方是结合数据分析与数据模型基础上的,可能需要你花点时间百度、谷歌,所有的CRM策略都应该建立在数据分析的基础上,这样才能获取最大的效益。

1.随着客户购买次数的增加,客单价与客单件都有逐渐提升,这个是有价值的规律,意味着你客户粘性做得越好,客户的回报给你越多;

2.唤醒一个回头客户比新客户创造更多的盈余,这个是从成本角度考虑的,已倍行业证明;

3.客户每增加一次购买,复购率显着提升,买得越多,越回来买。这个就跟吸毒一样,第一次吸毒,很容易就戒了,很少会吸第二次,吸第二次就很大可能继续吸下去;

4.1次购买到2次的回头,是最需要提升的环节。这个大部分卖家的情况是一致的,就是新客户2次回购率非常低,但是2次到3次就比较高了,这个是我们称为“洗客户”的过程,不断把忠诚客户洗下来。出现这个问题其实很简单,因为在淘宝做是需要自然流量的,自然流量是需要爆款的,爆款是需要打折的,那么大部分够买爆款的客户(包括聚划算、淘金币、天天特价,几乎还有其他所有的淘宝活动来的客户)是因为价格因素来购买的,对频道和活动(例如聚划算)的依赖性远比店铺要高,所以他们最喜欢的店铺是“聚划算”和“淘金币”,并不是你们的“XX旗舰店”和“XX专营店”。这个问题的解法下下面会说到,就是划分客户价值。

1.这个图很好理解吧,把说有购买过2次的客户拉出来,然后计算他们购买第二次时距离第一次购买的时间间隔,然后把这些时间间隔做一个图。我们发现,30%的客户在首次购买后的26天内进行复购,27天-133天的也占30%,134天到404的占30%,405天以上的占10%。说明什么问题呢?说明距离首次购买的时间越长,复购的可能性越少。这个做CRM的都知道,是废话来的,有价值的是如何按照这个购买间隔划分出不同生命周期。

2.按照3(30%)331的方法,把购买间隔以划分,得出4个生命周期,不同生命周期的策略如下:

    活跃期:保证接触频次,但不是促销和折扣刺激为主;

    沉默期:保证接触频次,进行少量的营销刺激;

    睡眠期:控制有限接触,通过大折扣活动挽回;

    流失期:屏蔽接触,只在大促时备用;

1.在划分生命周期的基础上,我们已经解决了大部分客户细分的问题,如果店铺客户数不是很多的话,划分到生命周期已经ok了,但是如果店铺的客户数很多,产品线和价格带够长的话,则还可以根据首次购买客单价进一步对不同生命周期的新客户进行细分;

2.这个细分我是用SAS跑决策树得出来的,方法大家也不要纠结,统计软件的使用我也没办法一次性的教会大家,但是这个规则派友们是可以借鉴的,对客户进行划分只要方向是对的,数值差个几十块其实是无伤大雅的。

3.对于购买1次的客户,总体复购率是19.3%,通过“决策树”对首次购买金额进行细分;

4.其中首次客单价412元的客户,复购率为26.2%,显着高于总体客户,应重点维系;

5.149元首次客单价<412元,复购率稍高于总体客户,应次优先维系;

6.首次客单价149的客户,复购率仅为12.4%,属于低价值客户,作为后备维系对象;

1.根据上面的分析,按照首次客单价区分优先级对客户进行维系的复购率显着高于没有规则随机筛选客户的复购率;

2.根据首次客单价进行精确营销,可以确保“用最小的营销成本,挖掘最大的老客户价”

]]>