数仓概念

数据仓库建模(三):事实表的设计 数据仓库建模(三):事实表的设计事实表结构可加、半可加、不可加事实事实表中的空值一致性事实(事实表中字段命名尽量保持统一)事务事实、周期性快照事实表、累计快照事实表、无事实的事实表 事实表结构 事实表中每一行对应一个度量事件,反之亦然,比如订单表,每一行对应一个用户下单的事件,此时如果下单送积分的话,那么积分应该对应一个新的积分表,因为积分和下单是不同的事件,不要把这两个事件混在同一个表中。 每个事件都对应一个度量,一般情况下是数字度量,比如用户下单事件对应的数字度量应该是订单金额。 事实表一般包含外键,用 阅读详情

数仓
事实表:
指向各个维度的外键,和一些相应的测量数据,事实表中数据很多,维表记录这一维的属性

维度表
每一个维度表利用维度关键字通过事实表中的外键 约束于事实表中的某一行,实现与事实表的关联, 这就要求事实表中的外键不能为空,这与一般数据库中外键允许为空是不同的。

雪花模型与星型模型不同地方:
雪花模型是对星形模型的扩展,每一个维 度都可以向外连接多个详细类别表。
在这种模式中,维度表除了具有星形模型 中维度表的功能外,还连接对事实表进行
详细描述的详细类别表,详细类别表通过对事实表在有关维上的详细描述达到了缩小事实表和提高查询效率的目的。

粒度
是指保存数据的细化或综合程度的级别
根据业务处理流程来确定粒度,粒度影响数据仓库中的数据量大小

粒度可以分为两种形式:
1.按时间段综合数据的粒度
2.按采样率高低划分的样本数据库
建模过程
inmon架构和kimball架构
1.外部数据,业务数据库,文档组成操作型数据库
2.抽取数据到数据过滤区,对数据进行处理清洗,去重重构;
3.经过处理后的数据装载到数据仓库
4.数据仓库会装载到数据集市中(inmon架构的数据仓库是三范式企业级的数据仓库,kimball的数据库是多维企业级的数据仓库) 这一步kimball没有
5.最终提供给最总用户接口(数据挖掘,可视化等)

多维数据模型及建模过程
选择业务流程: 确认哪些业务处理流程是数据仓库应该覆盖的,是维度的基础
声明粒度: 确定事实中表示的是什么
确认维度: 说明了事实表的数据是从哪里采集来的,是实施表的基础
确认事实: 识别数字化的度量,构成事实表的记录

Data Vault模型及建模过程
综合了第三范式(3NF)和星型模型优点的建模方法,设计理念是要满足企业对灵活性、可扩展性、一致性和对需求的适应性要求,是一种专为企业级数据仓库量身定制的建模方式。
1.设计中心表: 企业级数据仓库要涵盖的业务范围,将各个业务主体中抽象出能够唯一标识实体的主键,该主键不变化 例:客户,产品
2.设计链接表: 体现中心表之间的业务联系
3.设计附属表: 各个业务实体和业务之间关联的详细信息 例:客户住址,产品价格
4.设计必要的PIT表 (point-In-Time) 为了访问数据方便
建立Data Vault模型时应该参照如下的原则:
(1)关于中心表的原则
中心表的主键不能够直接“伸入”到其他中心表里面。就是说,不存在父子关系的中心表。各个中心表之间的关系是平等的,这也正是Data Vault模型灵活性与扩展性
之所在。
中心表之间必须通过链接表相关联,通过链接表可以连接两个以上的中心表。
必须至少有两个中心表才能产生一个有意义的链接表。
中心表的主键总是“伸出去”的(到链接表或者附属表)。
(2)关于链接表的原则
链接表可以跟其他链接表相连。
中心表和链接表都可以使用代理键。
业务主键从来不会改变,就是说中心表的主键也即链接表的外键不会改变。
(3)关于附属表的原则
附属表必须是连接到中心表或者链接表上才会有确定的含义。
附属表总是包含装载时间和失效时间,从而包含历史数据,并且没有重复的数据。
由于数据信息的类型或者变化频率快慢的差别,描述信息的数据可能会被分隔到多个附属表中去。

项目的开发流程
需求分析 参见《数据仓库项目需求分析.doc》

开发计划: 设置进度节点,制定项目计划–>更详细规划《数据仓库项目计划.xls》

概念模型设计

逻辑设计: 概念模型就是在了解了用户的需求,用户的业务领域工作情况以后,经过分析和总结,提炼出来的用以描述用户业务需求的一些概念的东西。如销售业务中的“客户”和“定单”,还有就是“商品”,“业务员”。

物理设计: 物理模型就可以直接生成数据库的创建脚本,以及数据库设计文档

详细设计: 见《数据仓库系统设计文档.doc》和《ETL设计说明书.doc》

项目管理:

部署实施: 见《数据仓库建设项目实施方案建议书.doc》

数仓的概念
数仓是建立在hive上,有两层(ODS层rds库)和DW层(tds库),存储格式日期维度textfile,其他orc。
是一个面向主题的、集成的、非易失的和时变的数据集合,用于支持管理者的决策过程

数据的四大特性
面向主题的:为特定的数据分析领域提供数据支持。
集成的: 集成性是指数据仓库中数据必须是一致的
非易失的,时变
数据仓库和数据库关系
数据库面向事务属于操作型,数据仓库面向分析,属于分析型
数据库是数据仓库的基础,数据库较小,而数据仓库较大
数据不一样

数仓的分层
ODS: Operate data store,操作数据存储
存储源数据
DW: Data warehouse,数据仓库层
数据建模,存储历史数据,冗余数据
DM:数据集市 分析统计

ETL过程
1.Extract数据抽取
建立逻辑映射的步骤
抽取方式2种
从源数据拉取数据(pull)和请求源数据推送到数据仓库(push)
导出为文本方式
使用sqoop抽取数据
抽取类型类型2种
全量抽取还是增量抽取
2.Transform数据转换
数据转换是将数据进行重构以及标准化,消除数据的不一致,处理缺失数据,转换最主要的任务就是数据清洗。
预处理 - 标准化处理 - 去重处理 - 错误值 - 缺失值 - 格式内容清洗 - 逻辑错误清洗 - 修正矛盾内容 - 非需求数据清洗 - 关联性验证

3.Load 数据装载
预加载
不会改变的维度数据
初始装载
历史数据的加载
定期装载
增量数据
ETL自动化

逻辑数据映射
1 识别数据源,有时候业务系统会经过很多次的迭代,有很多遗留系统,标识数据源就会变的非常复杂,需要去找各个系统的接口人共同确定。
2 收集源系统的文档,从文档中找所需的列含义说明,确保数据源正确无误
3 建立源系统跟踪报告,报告应显示每个数据源的负责人、开发人员和使用者。还要包含数据源的特性:所属主题域,接口名称,业务名称,业务部门,接口人,数据库管理系统,生产服务器,数据大小,数据复杂度,每天事务数,优先级,日常使用数量,使用情况,系统平台和其他说明等。
4 建立目标数据仓库的实体关系图。实体关系统表示实体(表)之间的相互关系,通过连线表示,每个实体应有唯一标识,每个列的数据类型,实体之间的关系,这是非常重要的,会影响的数据抽取的顺序,也就是数据流转的过程。
5 建立模型映射,不同的映射类型所做的处理不一样。

数据清洗的一般流程
预处理 - 标准化处理 - 去重处理 - 错误值 - 缺失值 - 格式内容清洗 - 逻辑错误清洗 - 修正矛盾内容 - 非需求数据清洗 - 关联性验证

预处理:对于大的数据文件的加载,特别是新的文件,要进行预先诊断,不能直接加载。
标准化处理:建立标准化对照表,将不一致的数据进行统一,一般需要建立标准码表,建立与标准值转化有关的函数和子程序,建立标准值与非标准值对照的映像表

去重处理:一种是整行数据完全重复,这种可以通过SQL语句达到去重,使用distinct或者group by 进行处理,还有一种是有重复的字段,这种一般需要子查询来进行处理,但是需要跟业务方进行确认如何保留去重数据的规则,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要业务方确认。
错误值:错误值产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,通过转换进行处理,对于值的格式不正确或n

1、确定缺失值范围:对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略,可用下图表示:

2、去除不需要的字段:这一步很简单,直接删掉即可,但强烈建议清洗每做一步都备份一下,或者在小规模数据上试验成功再处理全量数据,不然删错了会追悔莫及(多说一句,写SQL的时候delete一定要配where!)。
3、填充缺失内容:某些缺失值可以进行填充,方法有以下三种:
以业务知识或经验推测填充缺失值
以同一指标的计算结果(均值、中位数、众数等)填充缺失值
以不同指标的计算结果填充缺失值
前两种方法比较好理解。关于第三种方法,举个最简单的例子:年龄字段缺失,但是有身份证号,可以通过截取身份证号来获取年龄
4、重新取数:如果某些指标非常重要又缺失率高,那就需要和取数人员或业务人员了解,是否有其他渠道可以取到相关数据。
格式内容清洗
如果数据是由系统日志而来,那么通常在格式和内容方面,会与元数据的描述一致。而如果数据是由人工收集或用户填写而来,则有很大可能性在格式和内容上存在一些问题,简单来说,格式内容问题有以下几类:
1、时间、日期、数值、全半角等显示格式不一致
这种问题通常与输入端有关,在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可。
2、内容中有不该存在的字符
某些内容可能只包括一部分字符,比如身份证号是数字+字母,中国人姓名是汉字(赵C这种情况还是少数)。最典型的就是头、尾、中间的空格,也可能出现姓名中存在数字符号、身份证号中出现汉字等问题。这种情况下,需要以半自动校验半人工方式来找出可能存在的问题,并去除不需要的字符。
3、内容与该字段应有内容不符
姓名写了性别,身份证号写了手机号等等,均属这种问题。 但该问题特殊性在于:并不能简单的以删除来处理,因为成因有可能是人工填写错误,也有可能是前端没有校验,还有可能是导入数据时部分或全部存在列没有对齐的问题,因此要详细识别问题类型。
格式内容问题是比较细节的问题,比如同一个值,有空格和没空格统计出来结果就不正确了、统计值不全(数字里掺个字母当然求和时结果有问题)、模型输出失败或效果不好(数据对错列了,把日期和年龄混了等)。因此,在处理的数据是人工收集而来,或者产品前端校验设计不太好的时候,就需要找数据的特征,针对性的进行处理
逻辑错误清洗
这部分的工作是去掉一些使用简单逻辑推理就可以直接发现问题的数据,防止分析结果走偏。主要包含以下几个步骤:
去除不合理值,比如年龄超过200岁,日期越界,这种的就要么删掉,要么按缺失值处理。
修正矛盾内容
有些字段是可以互相验证的,比如身份证号和年龄,当年龄跟身份证号上的出生日期不匹配的时候,在这种时候,需要根据字段的数据来源,来判定哪个字段提供的信息更为可靠,去除或重构不可靠的字段。逻辑错误除了以上列举的情况,还有很多未列举的情况,在实际操作中要酌情处理。另外,这一步骤在之后的数据分析建模过程中有可能重复,因为即使问题很简单,也并非所有问题都能够一次找出,我们能做的是使用工具和方法,尽量减少问题出现的可能性,使分析过程更为高效。
非需求数据清洗
这一步说起来非常简单:把不要的字段删了。但实际操作起来,有很多问题,把看上去不需要但实际上对业务很重要的字段删了;某个字段觉得有用,但又没想好怎么用,不知道是否该删; 如果数据量没有大到不删字段就没办法处理的程度,那么能不删的字段尽量不删,另外必须要删的时候,一定要做好数据的备份。
关联性验证
如果你的数据有多个来源,那么有必要进行关联性验证。发现这种不一致,需要跟业务方确认,如何需要调整或去除数据。多个来源的数据整合是非常复杂的工作,一定要注意数据之间的关联性,尽量在分析过程中不要出现数据之间互相矛盾,而你却毫无察觉的情况,数据是数据仓库的基础,如果数据不准确,最后数据仓库中建立的数据模型也是无效的,这个数据仓库的项目就失败了,所以数据清洗特别重要,要反复验证。

大数据篇--数仓概念总结 文章目录一、数据仓库1.什么是数据仓库:2.技术发展历程:3.数据仓库特点:4.OLAP和OLTP的区别: 参考:数仓基础概念 一、数据仓库 1.什么是数据仓库:   数据仓库,英文名称为Data Warehouse,关于数据仓库概念的标准定义业内认可度比较高的,是由数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的“Building the Data Warehouse”(《建立数据仓库》)一书中所提出:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriente 阅读详情

相关推荐

数仓:核心概念,数仓系统(ETL,数仓分层,数仓建模),数仓建模方法(星型模型,雪花模型,星座模型)和步骤

ODS层是数据源层,主要用于存储从各个业务系统(如CRM、ERP等)抽取的原始数据。分为5层时,把数据仓库层细分为: 明细数据层, 基础数据层, 服务数据层。即: 数据源层, 明细数据层, 基础数据层, 服务数据层, 数据集市层。数据仓库层: 是核心的数据存储层,负责存储经过清洗、转换和集成的数据。定义事实表中每一行数据的详细程度(如按天、按订单、按交易等)。分3层是: 数据源层, 数据仓库层, 数据集市层。:数据集市层,存储面向特定部门或业务线的数据。确定数据来源(如业务系统、日志、外部数据等)。

weixin_40121264的博客 1261

谈笑间学会数仓—维度表概念及设计案例

维度表 维度定义 从某个角度观察事实数据的窗口,存储的数据用来从某个角度描述事实。维度表可以看成是用户用来分析一个事实的窗口,它里面的数据应该是对事实的各个方面描述,比如时间维度表,它里面的数据就是一些日,周,月,季,年,日期等数据,维度表只能是事实表的一个分析角度。换句话说 维度表可以看作是用户来分析数据的窗口,维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。 维度的构成 维度的元素:维

阿尼古 2955

数仓-概念模型、逻辑模型、物理模型介绍

概念模型:抽象描述现实世界,如ER图。逻辑模型:转化为具体的数据表结构,如MySQL的表定义。物理模型:优化存储和性能,如索引和数据类型的选择。

认真学代码的shell 1090

事实表的基本概念

什么是事实表 事实表的结构 事实数据表是包含描述业务内特定事件的数据。是发生在现实世界中的操作型事件所产生的可度量数据,通常包含大量的行。日常查询请求的主要目标就是基于事实表展开计算和聚合操作。 从最低粒度级别来看,事实表行对应一个度量事件,也可以说,一个度量事件必然对应一个最低粒度的事实行为。因此,事实表的设计完全依赖物理活动,不受可能产生的最终报表的影响。 事实表一般会包含数字度量,也总会包含外键,用来与相关的维表做关联。 常用的事实表经常会包含日期/时间戳,退化维度键(退化维度键的解释不再展开,想了解

Piepis的博客 6345

数仓、画像和推荐系统(1):数仓的基本概念

数仓、画像和推荐系统(1)什么是数仓?数据分层(ods->dwd->dws->ads)标配技能 什么是数仓? 概念:一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合 目的:支持决策分析 应用: 离线数据报表、数据挖掘、即席查询 数据分层(ods->...

正趣果上果 550

从C-EPS到DP-EPS:手把手图解不同EPS类型怎么选,对你的车操控感影响有多大?

方向盘转动时那股细腻的阻尼感,高速过弯时令人安心的沉稳,或是狭窄车位里一根手指就能拨动的轻盈——这些看似微妙的差异,其实都源自转向系统电机那几厘米的安装位置变化。当我们谈论驾驶乐趣时,发动机参数和悬架调校总是占据C位,但真正连接驾驶者与车辆的神经末梢,恰恰是那套默默工作的电动助力转向系统(EPS)。不同EPS类型带来的操控特性差异,可能比马力数字更能定义一辆车的性格。

weixin_30920513的博客 531

数仓常用工具和方法

数仓常用工具和方法

大数据知识梳理 8340

一文读懂AI协同办公领域发展和趋势

协同办公,又称OA,是指企业内部或外部各类人员之间利用信息技术来进行协作工作的一种形式。这种协作工作既可以由直接员工进行,也可以来自外部的咨询机构、合作伙伴或联营企业。协同办公的优势在于可以对资源进行有效管理和配置,各部门之间可以建立良好的协作关系,跨部门更好地实现资源共享。

女王の专属领地 2363

数仓分层概念

weixin_45751589的博客 625

把慢点掰开看:在 SAP HANA 中启用 SQL 优化耗时跟踪 SqlOptTime 的实战指南

摘要:SAP HANA 性能排查中,常出现SQL查询时快时慢的现象,表面看似执行问题,实则是编译阶段耗时过长。通过SQL优化跟踪工具SqlOptStep和SqlOptTime,可精准区分编译与执行时间。SqlOptStep展示优化树变化过程,而SqlOptTime则记录各阶段耗时,帮助定位问题根源。启用SqlOptTime需配置traceprofile,建议限定特定用户以减少系统负载。实际案例显示,报表响应慢常由计算视图编译(CeQo)导致,而非执行阶段问题。解决方案包括调整计算视图展开方式或优化基础视图结

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1009

YOLO26改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头

本文记录的是基于移动倒置瓶颈 MBConv 的 YOLO26 的检测头轻量化改进方法研究。采用了独特的倒置瓶颈结构,通过的操作以及,在高效提取特征的同时极大地降低了计算量。本文将的设计优势融入j检测头中,使其在目标检测任务中不仅能够更精准地识别各类目标,还能在计算资源有限的情况下快速响应,展现出更为卓越的实时检测能力。EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks的实现代码如下: 首先在代码中加入如下代码: 其

Limiiiing的博客 287

数仓的概念及架构

数仓概念及架构

weixin_46646680的博客 3599

在claude code中使用glm模型出现Unable to connect to Anthropic services的解决方案

本文主要介绍了在claude code中使用glm模型出现Unable to connect to Anthropic services的解决方案,希望能对使用claude code的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 13万+

数仓中概念术语解析

比如最近七天的订单量,一个促销活动的购买转化率等。一个指标具体到计算实施,主要有以下几部分组成指标加工逻辑,比如count,sum,avg维度,比如按部门、地域进行指标统计,对应sql中的groupby业务限定/修饰词,比如以不同的支付渠道来算对应的指标,微信支付的订单退款率,支付宝支付的订单退款率。对应sql中的where。除此之外,指标本身还可以衍生、派生出更多的指标,基于这些特点,可以将指标进行分类。...

ths512的博客 2287

【00】虹软2023届校招专场 ,计算机类笔试攻略(笔试考试时间、考察范围、笔试难度 等说明)

虹软科技2023校招笔试攻略:三大岗位类别(算法、算法优化、开发)分别于7月24日进行。题型包括选择题、编程题和问答题,其中算法类题目降低难度,编程题改为LeetCode模式。重点考察数学基础、机器学习、编程能力(C/C++/Python)、数据结构和算法优化等。建议根据投递岗位选择问答题,算法优化类注重系统知识和SIMD优化,开发类侧重多线程等实际应用能力。笔试结果将作为校招offer的重要参考。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 276

控制科学与工程(自动化)保研经验【2】——南开、同济篇

禁止转载 1、南开人工智能学院夏令营   保研之旅第一个夏令营就是南开,南开夏令营非常早(6月份),当时我们专业仅有两人入营。夏令营前一天我们两个坐高铁来到了天津,几经辗转来到了南开的津南校区,非常偏僻。在自己找的酒店住了一晚,第二天一早去学院报到,资格审查、报销路费等等,然后开营仪式,吃饭,入住酒店,实验室参观。   开营仪式和实验室参观了解到,南开人工智能学院是国内第一批人工智能学院,和很多高...

Control Everything 6532

【数仓】基本概念、知识普及、核心技术

数仓的定义:数仓的特点:数仓与数据库的区别:数仓的架构:数仓的应用:数仓的发展趋势:数据建模:数据抽取、转换和加载(ETL):数据质量管理:数据安全与隐私:元数据管理:数据仓库的性能优化:数据仓库与数据湖:实时数据仓库:数据仓库的维护和升级:数仓,即数据仓库(Data Warehouse),是一个大型、集中式的存储和处理数据的系统,通常用于支持企业或组织的决策分析处理。数仓的主要目标是提供决策支持,它整合来自不同业务系统的数据,并进行清洗、转换和加载,以提供一致、准确、及时的数据视图。

不积跬步无以至千里,不积小流无以成江海。一个喜欢学习分享的程序员 6417

新系统申请软件著作权详细操作说明

今年八月底版权中心系统升级,新系统相对好用一些,至少不用再拿IE访问了,但是多了一项实名认证。下面介绍新系统的操作流程。 目录注册、登录和实名认证注册登录实名认证软件登记申请申请表填写鉴别材料身份证明文件权利归属证明文件其他材料提交材料变更登记 注册、登录和实名认证 首先访问版权中心系统:https://register.ccopyright.com.cn/login.html,如果老系统有账号直接登录即可,没有的话需要注册。 注册 点击注册按钮进入注册。 根据实际情况选择个人或单位,每个个人或单位只能在

Programming Talk 1万+

【数仓建设系列之二】数仓基本概念介绍

OLTP和OLAP是我们常见的两种数仓解决方案。从功能定位来看,OLTP数据库是一种严格意义上的事务性和关系型数据库(MySQL就是典型的OLTP之一),它更多的是支持业务侧的更新操作(CRUD),要求能够提供实时在线处理事务的能力,更加注重操作的上的ACID(一致性,原子性,隔离性和持久性)。OLAP数据仓库则更加注重复杂场景下数据整合能力和查询分析能力,它是解决数据孤岛和提供多维分析的主要保障之一

weixin_43914798的博客 310

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数仓一些基本概念的分享

避免重复抽取大量未变化的数据减少数据量的处理和资源消耗,提高数据抽取和集成效率,实现方式:时间戳,基于日志,基于标志位,数据仓库更新,实现数据同步,数据迁移和整合。将作为维度表中的属性直接放在事实表中作为普通列来处理,提高查询性能,简化数据模型。适合维度表中变化少,且事实表常用的情况。Kafka(日志)、Sqoop(MySQL同步)维度表进一步规范化(减少冗余),但关联复杂度高。单事实表+多维度表,无规范化维度表,查询高效。面向业务场景的高度汇总(如报表、API接口)多事实表共享维度表,支持复杂分析。

2301_76623283的博客 1713

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【数仓概念】

数仓,hive,分层

pblh123的专栏 1400

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数仓01-概念的理解和方法论

数仓分层 计算逻辑、计算结果复用。提取公共逻辑 解耦, 方便表的管理 降低sql复杂度,比如bds中的宽表,减少join 模型 模型,在数仓中就是表结构 建模:建表和表之间关系 1. 星型 不完全星型模型 事实表中,不是所有维度都按维度主键信息存储(维度退化) 地域维度信息:年月日周等时间维度信息,这些维度信息,基本不会发生任何改变,并且在大部分主题分析场景中,都需要使用,直接在事实表中存储维度值 页面信息:页面类别信息,频道信息,业务活动信息,会员等级信息等,可能发生缓慢变化

DCHAO的博客 4556

数据开发/数仓工程师上手指南(二)数仓构建分层概念

度量是用于量化业务活动的关键数据点,通常是数值型的,可以进行汇总和分析。度量回答了业务过程中的“多少”或“多少次”的问题,如销售金额、订单数量、库存水平等。比如。

master_hunter的博客 1305

数仓概念梳理

数仓概念梳理 数仓分层 常见分层思路、案例 案例1:互联网金融 ODL层 (Operational Data Layer):操作数据层 ​ 外部数据什么样,该层数据就是什么样(关系型数据库、JSON格式等),部分关系型数据可以直接转IDL层 BDL层 (Base Data Layer):基础数据层 ​ ODL层经过简单格式化解析后存储到BDL层,常见于JSON日志格式的解析。 IDL层 (Interface Data Layer):接口层,也称主题表,宽表 ​ 由BDL层经过去重、去噪、字典翻译、空

wt334502157的博客 2082

数仓的基本概念【精】

一、数仓基本概念 1. 数据仓库概念 英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。它出于分析性报告和决策支持目的而创建。 数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因 1) 基本特征 数据仓库是面向主题的、集成的、非易失的和时变的数据集合,用以支持管理决策。 面向主题: 传统数据库中,

IDE 1387
上一篇: Linux的常用符号、磁盘管理 、 Linux shell (重点) 变量
下一篇: 窗口函数
码上发财V
博客等级 码龄11年 4粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值