第2章 数据仓库原理
作业题
1、设数据集 A = { 1 , 1 , 3 , 3 , 4 , 5 , 5 , 5 , 6 , 7 , 7 , 7 , 9 , 10 , 12 , 15 } A = \{1, 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 9, 10, 12, 15\} A={1,1,3,3,4,5,5,5,6,7,7,7,9,10,12,15},请用等深分箱法将其分成 k = 4 k=4 k=4 个箱子。
(1)首先,将数据集
A
A
A 按照从小到大的顺序排序:
{
1
,
1
,
3
,
3
,
4
,
5
,
5
,
5
,
6
,
7
,
7
,
7
,
9
,
10
,
12
,
15
}
\{1, 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 9, 10, 12, 15\}
{1,1,3,3,4,5,5,5,6,7,7,7,9,10,12,15}。
(2)计算数据集的观测值总数
n
n
n,这里
n
=
16
n=16
n=16。
(3)计算每个箱子中观测值的数量,记作
m
m
m,根据等深分箱法,
m
=
n
/
k
m=n/k
m=n/k,这里
k
=
4
k=4
k=4,所以
m
=
16
/
4
=
4
m=16/4=4
m=16/4=4。
(4)从排序后的数据集中选择第
m
m
m 个观测值作为一个分箱点(即第
4
、
8
、
12
4、8、12
4、8、12 个观测值),并将它们作为分箱的边界。
(5)将数据集中的观测值分配到相应的箱子中。对于每个观测值,找到它所属的区间,即与分箱点进行比较,然后将其放入对应的箱子中。
根据上述步骤,我们可以将数据集
A
A
A 分成以下
4
4
4 个箱子:
箱子1:
{
1
,
1
,
3
,
3
}
\{1, 1, 3, 3\}
{1,1,3,3}
箱子2:
{
4
,
5
,
5
,
5
}
\{4, 5, 5, 5\}
{4,5,5,5}
箱子3:
{
6
,
7
,
7
,
7
}
\{6, 7, 7, 7\}
{6,7,7,7}
箱子4:
{
9
,
10
,
12
,
15
}
\{9, 10, 12, 15\}
{9,10,12,15}
2、设数据集 A = { 1 , 1 , 3 , 3 , 4 , 5 , 5 , 5 , 6 , 7 , 7 , 7 , 9 , 10 , 12 , 15 } A = \{1, 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 9, 10, 12, 15\} A={1,1,3,3,4,5,5,5,6,7,7,7,9,10,12,15},请用等宽分箱法将其分成 k = 4 k=4 k=4 个箱子。
(1)首先,找出数据集
A
A
A 中的最小值和最大值,即
m
i
n
=
1
min = 1
min=1,
m
a
x
=
15
max = 15
max=15。
(2)计算每个箱子的宽度,记作
w
w
w,
w
=
(
m
a
x
−
m
i
n
)
/
k
w = (max - min) / k
w=(max−min)/k,这里
k
=
4
k=4
k=4,所以
w
=
(
15
−
1
)
/
4
=
3.5
w = (15 - 1) / 4 = 3.5
w=(15−1)/4=3.5。
(3)根据计算得到的箱子宽度,确定每个箱子的区间范围。在本例中,箱子的宽度为
3.5
3.5
3.5,我们可以选择以下箱子范围:
箱子1:
[
1
,
4.5
)
[1, 4.5)
[1,4.5)
箱子2:
[
4.5
,
8
)
[4.5, 8)
[4.5,8)
箱子3:
[
8
,
11.5
)
[8, 11.5)
[8,11.5)
箱子4:
[
11.5
,
15
]
[11.5, 15]
[11.5,15]
(4)将数据集中的观测值分配到相应的箱子中。对于每个观测值,找到它所属的区间,然后将其放入对应的箱子中。
根据上述步骤,我们可以将数据集
A
A
A 分成以下
4
4
4 个箱子:
箱子1:
{
1
,
1
,
3
,
3
,
4
}
\{1, 1, 3, 3, 4\}
{1,1,3,3,4}
箱子2:
{
5
,
5
,
5
,
6
,
7
,
7
,
7
}
\{5, 5, 5, 6, 7, 7, 7\}
{5,5,5,6,7,7,7}
箱子3:
{
9
,
10
}
\{9, 10\}
{9,10}
箱子4:
{
12
,
15
}
\{12, 15\}
{12,15}
3、设数据集 A = { 1 , 1 , 3 , 3 , 4 , 5 , 5 , 5 , 6 , 7 , 7 , 7 , 9 , 10 , 12 , 15 } A = \{1, 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 9, 10, 12, 15\} A={1,1,3,3,4,5,5,5,6,7,7,7,9,10,12,15},用户希望的 4 4 4 个数据子区间分别为 I 1 = [ 0 , 4 ) , I 2 = [ 4 , 8 ) , I 3 = [ 8 , 11 ) , I 4 = [ 11 , 15 ] I_1=[0, 4),I_2=[4, 8),I_3=[8, 11),I_4=[11, 15] I1=[0,4),I2=[4,8),I3=[8,11),I4=[11,15],试求出每个箱子包含的数据。
(1)将数据集
A
A
A 按照从小到大的顺序排序:
{
1
,
1
,
3
,
3
,
4
,
5
,
5
,
5
,
6
,
7
,
7
,
7
,
9
,
10
,
12
,
15
}
\{1, 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 9, 10, 12, 15\}
{1,1,3,3,4,5,5,5,6,7,7,7,9,10,12,15}。
(2)根据子区间
I
1
=
[
0
,
4
)
,
I
2
=
[
4
,
8
)
,
I
3
=
[
8
,
11
)
,
I
4
=
[
11
,
15
]
I_1=[0,4),I_2=[4,8),I_3=[8,11),I_4=[11,15]
I1=[0,4),I2=[4,8),I3=[8,11),I4=[11,15],将每个数据点映射到对应的箱子中。
箱子1(
I
1
I_1
I1):
{
1
,
1
,
3
,
3
}
\{1, 1, 3, 3\}
{1,1,3,3}
箱子2(
I
2
I_2
I2):
{
4
,
5
,
5
,
5
,
6
,
7
,
7
,
7
}
\{4, 5, 5, 5, 6, 7, 7, 7\}
{4,5,5,5,6,7,7,7}
箱子3(
I
3
I_3
I3):
{
9
,
10
}
\{9, 10\}
{9,10}
箱子4(
I
4
I_4
I4):
{
12
,
15
}
\{12, 15\}
{12,15}
4、设有实数区间 [ 15 , 30 ] [15, 30] [15,30],请用最小-最大规范化方法将 x = 22 ∈ [ 15 , 30 ] x=22\in[15,30] x=22∈[15,30] 变换为 x ’ ∈ [ 50 , 95 ] x’\in[50,95] x’∈[50,95]。
最小-最大规范化方法是将原始数据进行线性变换,使得变换后的数据值落在一个指定的区间中。
最小-最大规范化的公式如下:
x ′ = ( x − m i n ) × n e w m a x − n e w m i n m a x − m i n + n e w m i n x' = (x - min) \times \frac{{new_{max} - new_{min}}}{{max - min}} + new_{min} x′=(x−min)×max−minnewmax−newmin+newmin
设原始数据的取值范围为 [ a , b ] [a, b] [a,b],希望将 x ∈ [ a , b ] x\in[a, b] x∈[a,b] 变换为 x ′ ∈ [ c , d ] x'\in[c, d] x′∈[c,d],则变换公式为:
x ′ = ( d − c ) x − a b − a + c x'=(d-c)\frac{x-a}{b-a}+c x′=(d−c)b−ax−a+c
由题可知,将 x = 22 ∈ [ 15 , 30 ] x=22\in[15,30] x=22∈[15,30] 变换为 x ’ ∈ [ 50 , 95 ] x’\in[50,95] x’∈[50,95],则:
x ′ = ( 95 − 50 ) × 22 − 15 30 − 15 + 50 = 71 x'=(95-50)\times\frac{22-15}{30-15}+50=71 x′=(95−50)×30−1522−15+50=71
5、设有数据集 A = { 1 , 5 , 6 , 7 , 9 , 10 , 12 , 15 } A = \{1, 5, 6, 7, 9, 10, 12, 15\} A={1,5,6,7,9,10,12,15},试用零-均值规范化方法对其进行规范化。
零-均值规范化(Z-score normalization)是一种常用的数据标准化方法,可以将数据集映射到均值为 0 0 0,标准差为 1 1 1 的分布上。下面是对数据集 A = { 1 , 5 , 6 , 7 , 9 , 10 , 12 , 15 } A = \{1, 5, 6, 7, 9, 10, 12, 15\} A={1,5,6,7,9,10,12,15} 进行零-均值规范化的步骤:
(1)计算数据集 A A A 的均值(mean)和标准差(standard deviation):
均值: μ = ∑ i = 1 8 x i = 65 8 = 8.125 \begin{aligned}μ = \sum_{i=1}^8x_i= \frac{65}{8} = 8.125\end{aligned} μ=i=1∑8xi=865=8.125
标准差: σ = ∑ i = 1 8 ( x i − μ ) 2 8 − 1 = 132.875 7 ≈ 4.36 \begin{aligned}σ &= \sqrt\frac{\sum_{i=1}^8(x_i-μ)^2}{8-1}= \sqrt{\frac{132.875}{7}} \approx 4.36\end{aligned} σ=8−1∑i=18(xi−μ)2=7132.875≈4.36
(2)对每个数据点进行零-均值规范化计算:
x
′
=
x
−
μ
σ
x' = \frac{x - μ}{σ}
x′=σx−μ
(3)对数据集 A A A 中的每个数据进行规范化计算:
对于1: x 1 = 1 − 8.125 4.36 ≈ − 1.63 x_1 = \frac{1 - 8.125}{4.36} \approx -1.63 x1=4.361−8.125≈−1.63
对于5: x 2 = 5 − 8.125 4.36 ≈ − 0.72 x_2 = \frac{5 - 8.125}{4.36} \approx -0.72 x2=4.365−8.125≈−0.72
对于6: x 3 = 6 − 8.125 4.36 ≈ − 0.49 x_3 = \frac{6 - 8.125}{4.36} \approx -0.49 x3=4.366−8.125≈−0.49
对于7: x 4 = 7 − 8.125 4.36 ≈ − 0.26 x_4 = \frac{7 - 8.125}{4.36} \approx -0.26 x4=4.367−8.125≈−0.26
对于9: x 5 = 9 − 8.125 4.36 ≈ 0.19 x_5 = \frac{9 - 8.125}{4.36} \approx 0.19 x5=4.369−8.125≈0.19
对于10: x 6 = 10 − 8.125 4.36 ≈ 0.43 x_6 = \frac{10 - 8.125}{4.36} \approx 0.43 x6=4.3610−8.125≈0.43
对于12: x 7 = 12 − 8.125 4.36 ≈ 0.89 x_7 = \frac{12 - 8.125}{4.36} \approx 0.89 x7=4.3612−8.125≈0.89
对于15: x 8 = 15 − 8.125 4.36 ≈ 1.58 x_8 = \frac{15 - 8.125}{4.36} \approx 1.58 x8=4.3615−8.125≈1.58
因此,经过零-均值规范化后,数据集 A = { 1 , 5 , 6 , 7 , 9 , 10 , 12 , 15 } A = \{1, 5, 6, 7, 9, 10, 12, 15\} A={1,5,6,7,9,10,12,15} 规范化后的结果为:
{ − 1.63 , − 0.72 , − 0.49 , − 0.26 , 0.19 , 0.43 , 0.89 , 1.58 } \{-1.63, -0.72, -0.49, -0.26, 0.19, 0.43, 0.89, 1.58\} {−1.63,−0.72,−0.49,−0.26,0.19,0.43,0.89,1.58}
6、试述多维数据模型的定义。
称 A A A(维度1,维度2,…,维度n;变量1,…,变量k)是一个名称为 A A A 的 n n n 维数组,也称 A A A 为 n n n 维超立方体(Hypercube)或多维数据模型(多维模型)。多维数据模型通常用于描述决策分析的一个主题框架。
(1)变量:决策分析的度量指标,一个描述数据实际意义的名称。它描述数据 “是什么”,即已经发生过的事实(Fact)。
(2)维度:决策分析人员观察数据(度量指标、事实)的一个特定角度称为维度,也简称维。例如,时间、地理就是两个不同的维度。
(3)维的层次:决策分析人员在某个维度上观察数据(度量指标)时需要的细节程度称为维的层次,也称作维的级别。
(4)维成员:维成员就是一个维度在某个维层次上的一个具体取值。
(5)多维数据集:多维数组的每个维度都指定了确定的维成员、且每个变量对应于每个维成员都赋予了具体的数值,就称一个多维数据集。
(6)数据单元(单元格):多维数据集指定维成员后对应变量值的一个存储空间。因此,每个单元格描述了一个确定的事实。
(7)多维数据集的两种结构
① 超立方体结构(Hypercube):描述一个决策主题的三维或更多维数组,且每个维彼此垂直,数据空间的各个单元格都取定了相同层次的维成员。
② 多立方体(Multicube)结构:用若干个较小的超立方体结构表示一个大的超立方体结构。
7、请给出时间维在月层次上的一个维成员。
时间维在月层次上的一个维成员可以是 “2024年3月”。在时间维中,月层次通常用于描述每年的12个月份,因此一个典型的时间维成员可以包括年份和月份信息,以便对数据进行按月的分析和查询。
8、数据仓库有哪几种逻辑模型?
(1)多维模型:若用纯多维数据库管理系统作为 DW 的管理平台,则多维数据模型既是数据仓库的概念模型,又是数据仓库的逻辑模型,而多维数据集都存储在多维数据库中。
(2)星形模型:星形模型由一个事实表和多个维度表的连接表示多维数据模型,其中矩形表示事实表,凹圆角矩形表示维度表,并用直线表示其间的主键-外键联系。星形模型是多维数据模型在关系数据库中的组织和存储结构描述,即它是多维数据模型的关系模型表示方法。因此,星形模型是多维数据模型的一种逻辑模型。
(3)雪花模型:雪花模型是星形模型按照关系数据库规范化理论对维度表进行分解的结果。其目的是消除数据冗余,同时增加更多对事实进行细节描述的信息,提高查询分析的灵活性。但其查询效率通常比星型模型表示的多维数据集要低一些。
9、位图索引是数据仓库的什么模型?
位图索引是数据仓库中的物理模型,用于在数据仓库中进行快速的数据检索和查询。它通过对数据仓库中的某些列或属性建立位图索引表,来描述这些列或属性中的每个取值在数据集合中出现的情况,如存在或不存在,利用位图索引可以快速进行复杂的多条件查询,减少查询时间和资源开销。
在数据仓库中,维度表通常包含了大量的分类属性,如性别、地区、产品类型等。使用传统的索引方式(如B树索引)可能会面临效率低下的问题,因为这些属性的基数(Cardinality)通常较小,而且经常需要进行范围查询、多值查询等操作。
位图索引通过将每个可能取值映射为一个位图(Bitmap),每个位表示该取值是否存在,从而实现对多个取值的快速查询。当需要进行针对维度属性的等值查询时,位图索引可以有效地减少 IO 访问,提高查询效率。
位图索引适用于具有低基数属性的列,并且在数据仓库中经常用于 OLAP(联机分析处理)工作负载,例如在星型模型或雪花模型中的维度表上。通过位图索引,可以加速对维度属性的查询,提高数据仓库的性能和响应速度。