数据仓库建模之雪花模型和星形模型

(星型、雪花、星座、交叉连接)多维数据模型各种类型优劣分析 在数据仓库的建设中,一般都会围绕着星型模型和雪花模型来设计表关系或者结构,同时从模型中又衍生出星座模型和交叉模型。下面我们先来理解这几种模型的概念和比较。 阅读详情

数据仓库是用来分析数据并且从现有数据中发现新的价值,主要是用来预测未来的情况。数据仓库并不是解决所有问题的通用结构。它必须集中于某一问题领域,例如航空服务、顾客收益等。

数据仓库也有有趣的一面,那就是数据库本身是稳定增长的。数据没有被删除,也不发生变更。我们不需要将冗余数据置于数据库之外(因为加入仓库中的数据经过了数据净化的过程,该过程检查了数据的正确性)来减少复杂性同时增强读取操作的性能。

为了能够对数据仓库中的数据进行分析,数据存储于一个多维结构中,叫做星型模式。如果将星型模式扩展,就会得到雪花模式。本文将会阐述如何使用IBM Rational Rose进行星型模式建模和雪花模式建模。

飞行服务数据集市的例子

为了更好地解释如何对数据仓库建模,使用一个简单数据集市的的例子(即一个数据仓库或者数据仓库的一部分),来分析旅客乘坐航班 Happy Flying and Landing(愉快飞行平安降落)的行为和满意程度。

我们将存储乘客信息和每个航班的的相关数据、选择的菜单以及乘客对飞行的满意程度。

=======预备知识

数据仓库,数据仓库是一个支持管理决策的数据集合。数据是面向主题的、集成的、不易丢失的并且是时间变量。数据仓库是所有操作环境和外部数据源的快照集合。它并不需要非常精确,因为它必须在特定的时间基础上从操作环境中提取出来。

数据集市,数据仓库只限于单个主题的区域,例如顾客、部门、地点等。数据集市在从数据仓库获取数据时可以依赖于数据仓库,或者当它们从操作系统中获取数据时就不依赖于数据仓库。

事实,事实是数据仓库中的信息单元,也是多维空间中的一个单元,受分析单元的限制。事实存储于一张表中(当使用关系数据库时)或者是多维数据库中的一个单元。每个事实包括关于事实(收入、价值、满意记录等)的基本信息,并且与维度相关。

维度,维度是绑定由坐标系定义的空间的坐标系的轴线。数据仓库中的坐标系定义了数据单元,其中包含事实。坐标系的一个例子就是带有 x 维度和 y 维度的 Cartesian(笛卡尔)坐标系。在数据仓库中,时间总是维度之一。

数据挖掘,在数据仓库的数据中发现新的有价值的信息的过程被称为数据挖掘,这些新信息不会从操作系统中获得。

分析空间,分析空间是数据仓库中一定量的数据,用于进行数据挖掘以发现新信息同时支持管理决策。

切片,一种用来在数据仓库中将一个维度中的分析空间限制为数据子集的技术。

切块,一种用来在数据仓库中将多个维度中的分析空间限制为数据子集的技术。

星型模式,一种使用关系数据库实现多维分析空间的模式,称为星型模式。

雪花模式,不管什么原因,当星型模式的维度需要进行规范化时,星型模式就演进为雪花模式。

----------------------------------------------------------------------------------------------------------------------

使用 IBM Rational Rose 进行星型模式建模

星型模式的基本形式必须实现多维空间(常常被称为方块),以使用关系数据库的基本功能。

首先,我们需要理解多维空间。

多维分析空间,几何学中的方块是指一个三维空间,其中每个维度的尺寸都相同。想象一个立方体,每个维度都有三个单元,我们即得到相同结构的33=27个单元。


图1 一个具有 x、y、z 维度的方块
图1 一个具有 x、y、z 维度的方块 

多维分析空间(或者数据仓库方块)与几何空间中的方块仅仅存在细节上的差异。维度不仅限于 3 维。不过,处理很多维度的立方体也不是件轻松的事情,这会导致大多数的实现被限制于 6 或者 7 维。不要期盼使用图形可以很好地表示超过 4 的维度

维度并不具有相同的规模和单元。规模从几个单元到几百万个单元,差别巨大。单元可以是一天、一位顾客、部门等。
单元,相当于子方块(1×1×1等),包含事实。图2 一个三维数据立方体(顾客,时间,收益)
图2 一个三维数据立方体 

数据立方体需要很大的内存以存储所有事实。无论是否包含事实,都必须要预留单元。这就是为什么使用关系数据库和星型模式的原因。使用它们能够优化存储并且保持数据结构的灵活性。

星型模式:星型模式的基本思想就是保持立方体的多维功能,同时也增加了小规模数据存储的灵活性。


图3 一个星型模式 (乘客信息,飞行的菜单,航班信息,时间)
图3 一个星型模式 

在图3中,星型模式使用事实 Flight 表示了一个 4 维方块(Passenger、Menu、Flight Schedulet 和 Time)。基本上,事实必须指定一个维度,以将其放入立方体的单元中。

我们的例子中的维度是:
1.Passenger,描述了飞行航程中的每位乘客,由经常飞行号(frequent flyer number)指定。不是经常乘坐飞机的乘客不是数据仓库的一部分。
2. Flight Schedule,是指所有常规飞行的日程。
3. Menu,是用于飞行的菜单。只有对菜单进行基本的分类才会对数据挖掘有重要意义。
4. Time,是指飞行的时间。
       事实 Flight 描述了乘客在唯一的 Time 的单程飞行上选择 Menu。

分析空间可以是完整的方块,或者我们可以根据维度将分析空间分割成小片。

每个维度根据一个对象进行描述,对象可以用类表示,这些类就是有关业务主题的名称。这一点对于成功建立数据仓库来说是很重要的,因为仓库的用户(经理、分析员、市场)对于信息技术的术语并不是很熟悉。

事实本身就是商业智能的另一个对象,仍然通过类进行表示。

事实指每个维度。事实与维度的关联常常是一对任意(一个事实对应多个维度),这也就意味着每个事实都与单个维度的一个单元准确对应,而维度的每个单元(每个Passenger、Time等)可以与任意数量的事实发生关联(包括0个事实)。

使用 Rational Rose 将对象模型转换为数据模型即完成了星型模式的实现。这里我们可以看到转换后的结果。


图4 使用Rational Rose实现星型模式
图4 使用Rational Rose实现星型模式 

在图4中,没有显示自动创建的主键和外键约束。

星型模式的维度是独立的表。当对象模型转换为数据模型时,Rational Rose 可以生成维度的主键。

事实表指从维度表中使用键迁移的维度,当生成数据模型时 Rational Rose 可以生成外键。

在星型模式中切片和切块是对维度的限制(选择)。这是一个运行时问题,而不是建模问题,但是模型必须分辨其需要。

雪花模式

基本的星型模式并不能满足数据挖掘的所有需要。我们需要更复杂的维度,例如时间。分析员希望根据周、月、季度等识别模式。维度必须进行规范化。我们不需要冗余的维度表,这只会使数据切片变得更加复杂。这种过程中我们得到的模式被称为雪花模式。

我们来看一个简单的雪花模式例子。我们将时间维度规范化为:周、月和季度。


图5 规范化的 Time 维度
图5 规范化的 Time 维度 

我们希望能够使用附加的规范化维度将立方体切片:周、月和季度。在本例中,我们假定季度是月的平行层次,这也就意味着我们不能将季度假定为若干月的聚合。由于这个原因,我们将使用一张范化表(是对 OLAP 查询的一项简单附加)预先选择时间维度。

最终雪花模式添加了规范化维度。


图6 带有范化维度的 Time 和事实 Flight 的雪花模式
图6 带有范化维度的 Time 和事实 Flight 的雪花模式 

当然,所有的维度都可以像时间例子那样进行规范化,这就导致了比较复杂的数据集市模式的出现。

由 Rational Rose 从雪花模式中开发的实现模式(数据模型)是完善的。


图7 带有范化 Time 维度的雪花模式的数据模型
图7 带有范化 Time 维度的雪花模式的数据模型 

雪花模式中可以存在切片,不仅仅在基本的 Time 维度上,也可以在规范化的 Week、Month 和 Quarter 维度上。

多对多关系

在一次飞行中,我们不仅仅只吃一顿饭。在长途飞行中可能要多次用餐。在这种情况下,我们认为事实 Flight 和 Menu 维度不是一对多的关联。我们必须使用多对多关联。不过,这种关联不可能在星型模式中实现。

雪花模式的一种特殊形式是使用一种必要的数据结构以满足这项要求。

首先,我们将模型变更为事实和维度间的多对多关联。使用 Rational Rose,这只是关联基数的变更。
图8 Menu 的多对多维度的星型模式
图8 Menu 的多对多维度的星型模式 

我们无法在关系数据库中实现多对多关联。实现多对多关联需要使用另一种雪花模式。

在下图中,我们关注一下已经开发的雪花模式的一部分,该部分处理多对多维度。


图9 雪花模式解决了 Menu 的多维度
图9 雪花模式解决了 Menu 的多维度 

Rational Rose 生成了附加的维度表 FlightMenu,它是指 Menu 维度和 Flight 事实。

确定关系用于解决多对多关联。对于雪花模式的架构师来说,最重要的一点就是识别多对多关系。简单对象视图可能会使设计员理解概念,而生成的数据视图有助于进一步深入有关实现的问题。

层次

数据挖掘可以从隐藏在操作系统表面下的数据中发现信息。我们想了解的一个问题就是选定菜单与乘客统计资料之间的依赖关系。

乘客统计资料数据可以在 Passenger 维度的层次上构建。乘客可以根据邮政编码分组,然后再按国家进行分组。


图10 乘客的层次
图10 乘客的层次 

层次通过使用聚合来指定。聚合定义了所包括的内容。Country 包含了 ZIP 编码,ZIP 编码包含了多名 Passenger 信息。

最终通过使用外键实现了聚合。


图11 雪花模式实现了 Passenger 维度的聚合
图11 雪花模式实现了 Passenger 维度的聚合 

生成的约束仍然没有在图中表示出来。

使用聚合,维度可以在任何定义的级别上使用。分析空间可以通过 Passenger、ZIP Code或者 Country 进行切片。

一致的维度

随着数据仓库架构师不断地添加细节内容,雪花模式变得越来越复杂。因此设计过程必须在到达某种程度后停止以保持数据仓库运行良好。

星型或者雪花模式仍然仅仅关注于一个事实--在本例中就是Flight。那么复杂关系又是什么情况呢?

对于每个事实我们都必须设计其各自的模式。如果我们想要进行复杂查询的话,它们就必须具有共同的维度--我们称其为一致的维度。

让我们使用 Pilot 作为一个维度,PilotFlight 作为一个事实来定义第二个星型模式。我们还要使用附加的 Flight Schedule 维度和 Time 维度。


图12 Pilot 星型模式
图12 Pilot 星型模式 

第二个模式可以单独使用或者与 Passenger 模式结合使用,从而根据使用一致维度的飞行员维度来查询 Passenger 的满意程度。


图13 一致维度Time 和 Flight Schedule
图13 一致维度Time 和 Flight Schedule 

即使在使用一致维度的数据仓库的简单结构中,Pilot 与 Passenger 之间的关系也是简单的。

在开发数据模型时,数据仓库将大量小型星型模式与雪花模式相结合形成了大型的数据仓库模式。

事实与维度的数据

我们想要评估乘客对于飞行的满意率。可以使用不满意到很满意几个级别进行评定。评定记录存放在事实表 Flight 中作为一个属性(列)。

如果我们想要得出一个平均记录,那么就必须为记录定义值以进行计算。我们可以将记录分为 0 到 10 级。这样就可以得到一个平均记录。平均值应该存储在维度表中,以用于简单的切片,其中我们只想进行一维切片。

Rational Rose 根据目标数据库的数据类型生成了实现属性。对象模型是用来定义数据库的数据源的。

[hive]维度模型分类:星型模型,雪花模型,星座模型|范式 z=f(x,y)当给定x,y则能计算出z,当给x,y,n时,也能计算出z,此时z部分函数依赖于z,y,n。比如通过(学号,课程)推出姓名,因为可以直接通过学号退出姓名,所以:姓名部分依赖于(学号,课程)。星型模型中只有一张事实表,以及0张或多张维度表,事实与纬度表通过主键外键相关联,维度之间不存在关联关系,当所有纬度都关联到事实表时,整个图形非常像一种星型的结构,所以称之为“星型模型”。主键为:"学号"+"课名"。"分数”完全依赖于(学号,课名),但是姓名并不完全依赖于(学号,课名),姓名只依赖于学号。 阅读详情

相关推荐

雪花模型(Snowflake Schema):详解与案例

雪花模型是一种通过规范化减少数据冗余的建模方法,适用于对存储空间和数据一致性有较高要求的场景。在雪花模型中,维度表被进一步拆分成多个子表,虽然减少了数据冗余,但也增加了查询的复杂度和性能成本。在本文的案例中,我们展示了如何将客户维度、产品维度等拆分为多个子表,最终构建出一个雪花模型的数据仓库。这种模型能够有效减少冗余,确保数据一致性,但查询时需要连接多个表,因此在设计和使用时需要权衡查询性能与数据规范化之间的关系。少了数据冗余,但也增加了查询的复杂度和性能成本。

HandsomeBoy 3291

数仓建模(四)大数据分析的基础结构:星型模型与雪花模型

在大数据分析和数据仓库设计中,星型模型和雪花模型是两种常用的建模方法,它们各有优缺点,适合不同的业务场景。从结构特点到实际应用,从查询性能到存储优化,如何选择合适的模型对提升数据处理效率至关重要。本篇文章将以详细的表格、实例和SQL示例,全面解析星型模型与雪花模型的核心概念、结构对比和应用场景,帮助读者掌握数据建模的关键技术。

引用原创内容标明出处即可 4814

星形和雪花模型_数据仓库多维数据模型设计

建设数据模型既然是整个数据仓库建设中一个非常重要的关键部分,那么,怎么建设我们的数据仓库模型就是我们需要解决的一个问题。这里我们将要详细介绍如何创建适合自己的数据模型。数据仓库建模方法大千世界,表面看五彩缤纷,实质上,万物都遵循其自有的法则。数据仓库的建模方法同样也有很多种,每一种建模方法其实代表了哲学上的一个观点,代表了一种归纳,概括世界的一种方法。目前业界较为流行的数据仓库的建模方法...

weixin_33435461的博客 1130

什么是雪花模型

1.什么是雪花模型 Snowflake schema 雪花模型是多维数据库中的表的逻辑排列方式,使得实体关系图类似于雪花形状。雪花模型由连接到多个维度的集中式事实表组成。“Snowflaking”是一种在星型模型中规范化维度表的方法。 当它沿着所有维度表完全标准化时,结果结构类似于雪花,其中事实表位于中间。雪花背后的原理是通过删除低基数属性和形成单独的表来对维度表进行规范化。 雪花模型类似于星型模...

王小雷-多面手 1万+

大数据面试通关手册|数据仓库面试题(四)

⭐⭐欢迎关注博客主页:https://blog.youkuaiyun.com/u013411339 ⭐⭐欢迎点赞 👍 收藏 ⭐留言 📝 ,欢迎留言交流! ⭐⭐本文由【王知无】原创,首发于 优快云博客! ⭐⭐本文首发优快云论坛,未经过官方和本人允许,严禁转载! 数据仓库的定义? 首先,用于支持决策,面向分析型数据处理;其次,对多个异构的数据源有效集成,集成后按照主题进行重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。 数据仓库(Data Warehouse)是一个面向主题的(subject o..

微信搜:import_bigdata,大数据领域硬核原创作者 1055

2.设置Salesforce开发环境

Salesforce DX:salesforce Developer Experience (salesforce开发人员体验)LWC:Lightning Web Component(注意首字母是大写的,是一个概念,小写的话有组件本身的含义)CLI:Command Line Interface(命令行界面)version control system (VCS):版本控制系统。

nihaixiao的博客 2197

数据仓库

1. 什么叫数据仓库?数据仓库的特点? (相信inmon的数据仓库概念的四个特点是最基本的吧,当然需要加上自己的理解) 首先,用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库; 其次,对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。 数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或

qq_39736759的博客 469

目标检测技术的发展:从R-CNN、YOLO到DETR、DINO

OV-DINO的出现标志着在开放域目标检测领域的重大进步,其在处理未见过的物体类别时的能力得到了显著提升。这项技术对于需要适应未知或变化环境的应用具有重要意义,如自动驾驶、机器人视觉、安防监控等。

DeepAIedu的博客 2630

数据仓库是如何建模的?

写在前面 本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见100个问题搞定大数据理论体系 解答 数据仓库建模目前业界较为流行的数据仓库的建模方法非常多,常用的有范式建模法,维度建模法,实体建模法等几种方法。 每种方法其实从本质上讲就是从不同的角度看我们业务中的问题,不管从技术层面还是业务层面,其实代表的是哲学上的一种世界观。 其中维度建模法最常用,基于事实表和维表可以构建出多种多维模型,包括星形模型

Shockang的博客 1万+

SVDD和OCSVM的比较

OCSVM(one class support vector machine)即单类支持向量机,最先提出的文献为:Estimating the support of a high-dimensional distribution.该模型 将数据样本通过核函数映射到高维特征空间,使其具有更良好的聚集性,在特征空间中求解一个最优超平面实现目标数据与坐标原点的最大分离,如图1: 坐标原...

qq_33880788的博客 1万+

MCAL配置之CAN模块及源码分析

该文章详细解析了Autosar中MCAL配置里的CAN模块,详细分析了重要的配置选项,并对CAN的发送和接收函数进行了剖析。

u013624141的博客 1418

漫谈数据仓库之基本概念总结(不断更新)

0x00 前言 整理一些数据仓库中的常用概念。大部分概念不是照搬书上的准确定义,会加入很多自己的理解。 0x01 概念数据仓库(Data Warehouse) 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。 个人理解,数据仓库不单单是一个概念,其实算是对数据管理和使用的一种方法论,它包括了如何

木东居士 3878

二维矩形件排样算法之最低水平线算法实现

最低水平线算法的简单实现(Python) 1、二维矩形排样算法众多,最早的有BL算法、下台阶算法、最低水平线算法等,其中最低水平线算法及其优化算法应用较多,是与智能优化算法(遗传算法、模拟退火算法等)结合的最多的算法,本文利用python对最低水平线算法做了实现...

峰爸的博客 1万+

数据仓库构建方法论和简单实践

数据仓库的价值构思一个主题讨论数据仓库的构建方法论,包括数据仓库的价值、选型、构建思路,随着数据规模膨胀和业务复杂度的提升,大型企业需要构建企业级的数据仓库(数据湖)来快速支撑业务的数...

huzechen的博客 1238

YOLOv8与Swin Transformer的完美结合:如何提升目标检测的精度与速度

Swin Transformer(Shifted Window Transformer)是一种新型的视觉Transformer架构,采用了局部窗口(Window)和局部窗口偏移(Shifted Window)的策略,极大减少了计算复杂度,同时保持了全局感知能力。局部窗口注意力:每个窗口内的元素进行自注意力计算,减少计算量。窗口偏移:通过在不同层次引入窗口偏移,增强了全局信息的交互。层级设计:通过堆叠多个层次的模块,逐渐捕捉不同尺度的特征。

shrgegrb的博客 2151

Google Earth Engine(GEE)——将sentinel - 2影像所有波段重采样到10m分辨率 (resample 和 projection的使用)

影像重投影是将一个影像从一个坐标系投影到另一个坐标系的过程。这通常涉及到将像素从一个平面坐标系变换到另一个平面坐标系。这可以用于许多应用中,例如建立数字高程模型(DEM)和地图制图。影像重投影通常需要进行数学计算,包括转换矩阵和插值算法,以确保像素值的准确性和精度。这次我们将对哨兵2好数据中20m分辨率的波段,重采样到10m分辨率中,然后同一参与计算。

此星光明博客 3107

数仓之基础概念汇集1

数仓概念汇集 1、什么叫数据仓库? 数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。 数据仓库是为了便于多维分析和多角度展现而将数据按特定的模式进行存储所建立起来的关系型数据库,它的数据基于OLTP源系统。 首先,用于支持决策,...

zll_1234的博客 618

Qwen-Image(阿里通义千问)技术浅析(一)

Qwen-Image(阿里通义千问多模态模型)是阿里巴巴推出的视觉-语言多模态大模型,能够理解图像内容并完成复杂的跨模态任务。

m0_75253143的博客 678

数据仓库课程笔记

数据仓库概述 数据仓库是一个面向主题的、集成的、稳定的、随时间变化的数据的几何,以用于支持管理决策过程。 数据仓库的特征 面向主题 集成 稳定性即非易失的 随时间而变化即时变的 数据仓库系统分为源数据层,数据存储与管理层,OLAP 服务器层和前端分析工具层。 ETL 分别是 Extract、Transform、Load 三个单词首字母的缩写,也就是抽取、转换和装在,ETL 通常简称为数据抽...

algzjh的博客 1136

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

深度学习工具包 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")

解决方案_数据仓库解决方案

随着社会的快速发展,数字分析的重要性也日益突显。市场上也涌现更多数字化系统或产品,帮助人们更好地管理工作,提高工作效率。下面,我们就来了解一下数据仓库解决方案吧!数据仓库解决方案一、数据仓库介绍数据仓库是集成的、面向主题的、反应历史的数据的集合。它需要具有高效查询、高质量的、可扩展的的特性。数据仓库是协助运营及管理人员及时做出策略调整的最有效的依据。二、数据仓库简单架构通常情况下,数据仓库可大体分...

weixin_42413624的博客 624

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数据仓库ods层是啥意思_数据仓库进阶

本文主要围绕架构、分层、建模三个方面,进一步加深对数仓的了解。1 数据仓库的架构从整体上来看,数据仓库体系架构可分为:数据采集层、数据计算层、数据服务层和数据应用层,如下图。数据仓库架构1. 数据采集层数据采集层的任务就是把数据从各种数据源中采集和存储到数据库上,期间有可能会做一些 ETL(即抽取、转换、装载)操作。其中,日志所占份额最大,存储在备份服务器上的业务数据库中,如 Mysql 中的数据...

weixin_39520199的博客 921

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

典型的数据仓库建模方法论有: ER 模型 维度模型 Anchor 模型 Data Vault 模型

Shockang的博客 1177

数仓如何划分主题_大数据面试必问之一数仓架构和建模基础

数仓架构和建模基础数据仓库定义:目的:支持决策分析应用: 离线数据报表、数据挖掘、即席查询四个特征:面向主题: 数据归类集成:多种类型数据,来源多,格式多, 集成代表最终统一非易失的, 写入后一般不修改和删除,多为查询(读)操作时变性: 一定时间范围内,记录数据变化和其对应的时间发展阶段:数据仓库的发展大致经历了这样的三个过程:简单报表阶段:这个阶段,系统的主要目标是解决一些日常的工作中业务人员需...

weixin_29940495的博客 1317

2024年大数据最新数据仓库面试题资料_按主题存储 数据仓库(2),2024年最新大厂面试题汇总

用来描述事实表的某个重要方面,维度表中包含事实表中事实记录的特性:有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析的依据。1.星星的中心是一个大的事实表,发散出来的是维度表,每一个维度表用一个PK-FK连接到事实表,维度表之间彼此并不关联。按照事实表,维表来构建数据仓库,数据集市。

2401_84615524的博客 807
上一篇: ElasticSearch中Cluster,Node,Shard,Indices,replicas的基本概念与关系
下一篇: spark-submit工具参数说明
selectgoodboy
博客等级 码龄16年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值