数据挖掘概念与技术(第三版)课后答案——第三章

=============需要原版答案请留言!!==============


3.1 数据质量可以从多方面评估,包括准确性、完整性、一致性问题。 提出其他两个方面的数据质量。

准确性:对于一些需要进行精准营销的商品,比如蛋糕店的生日蛋糕、孕妇必备物品等,以上这些商品则需要数据的准确性。

完整性:如果要对某宝、某东或者某宁的买家信息进行一个数据挖掘,从而用来营销其他东西,比如要对地址进行挖掘,此时详细、完整的地址数据则是一个必备的特性。

一致性问题:由于某些不可抗因素而导致的数据不一致,比如技术问题,在并发量大的情况下,记录数据时出现问题;或者某些数据值是一样的,然而在不同的数据库中其命名却不一样;这些不一致性问题在数据挖掘时则会影响挖掘的结果。

数据质量的其他两个尺度:时效性和可信性。

时效性:数据必须在一定时间范围内可用,以便对决策有用。

可信性:数据值必须在可能结果的范围内,以便对决策有用。

 3.2在实际数据中,某些属性缺少值的元组是常见的情况。 描述解决此问题的各种方法。

处理数据元组中缺少值的问题的各种方法包括:

(a)忽略元组:通常在缺少类标签时执行此操作(假设挖掘任务涉及分类或描述)。除非元组包含缺少值的几个属性,否则此方法不太有效。当每个属性的缺失值的百分比相差很大时,这尤其差劲。

(b)手动填充缺失值:通常,此方法很耗时,对于缺失值很多的大型数据集,这可能不是一个合理的任务,尤其是当填充值不容易确定时。

(c)使用全局常量填充缺失值:用相同的常量替换所有缺失的属性值,例如“ Unknown”或-∞之类的标签。如果将缺失的值替换为“未知”,则挖掘程序可能会错误地认为它们构成了一个有趣的概念,因为它们都具有一个共同的值,即“未知”。因此,尽管此方法很简单,但不建议使用。

(d)将属性均值用于定量(数字)值或将属性模式用于分类(标称)值:例如,假设AllElectronics客户的平均收入为$ 28,000。 使用此值替换任何缺失的收入值。

(e)对于属于与给定元组相同类别的所有样本,使用定量(数值)值的属性均值或分类(名义)值的属性模式:例如,如果根据信用风险对客户进行分类,则替换缺失的 与给定元组处于相同信用风险类别的客户的平均收入值。

(f)使用最可能的值来填补缺失值:这可以通过回归,使用贝叶斯形式主义的基于推理的工具或决策树归纳法来确定。 例如,使用数据集中的其他客户属性,我们可以构建决策树来预测收入的缺失值。

 3.3 在习题2.2中,属性age包括如下值(以递增序) :13、15、16、16、19、20、20、21、22、22、25、25、25、25、30、33、33、35、35 ,35、35、36、40、45、46、52、70。

(a) 使用深度为3的箱,用箱均值光滑以上数据。说明你的步骤,讨论这种技术对给定数据的效果。

(b) 如何确定该数据中的离群点?

(c) 还有什么其他方法可以用来光滑数据

(a) 使用深度为3的箱,用箱均值光滑以上数据。说明你的步骤,讨论这种技术对给定数据的效果:
首先,将以上数据划分为深度为3的箱:(13,15,16),(16,19,20),(20,21,22),(22,25,25),(25,25,30),(33,33,35),(35,35,35),(36,40,45),(46,52,70);

其次,用箱均值光滑:(14.7,14.7,14.7),(18.3,18.3,18.3),(21,21,21), (24,24,24),(26.7,26.7,26.7),(33.7,33.7,33.7), (35,35,35),(40.3,40.3,40.3),(56,56,56)。

对于给定数据,该方法虽然在一定程度上光滑了噪声数据,但是由于箱深度太小,将数据的分布特征也抹去了。
(b) 如何确定该数据中的离群点:
可以通过聚类来检测数据中的异常值,在聚类中,将相似的值组织为组或“集群”。 落在聚类集之外的值可以被认为是离群值。 可替代地,在预定的数据分布被实现以允许计算机识别可能的异常值的情况下,可以使用计算机和人工检查的组合。 然后,可以通过人工检查来验证这些可能的异常值,而所需的误差却比验证整个初始数据集所需的误差小得多。

(c) 还有什么其他方法可以用来光滑数据:
可以用于数据平滑的其他方法包括分箱的其他形式,例如通过箱中值进行平滑或通过箱边界进行平滑。 可替代地,等宽度的箱可用于实现任何形式的分级,其中每个箱中的值的间隔范围是恒定的。 除装仓外,其他方法还包括使用回归技术通过将数据拟合到函数(例如通过线性回归或多元回归)来平滑数据。 分类技术可用于实现概念层次结构,这些概念层次结构可通过将较低级别的概念汇总到较高级别的概念来平滑数据。

3.4 讨论数据集成需要考虑的问题。 

数据集成涉及将来自多个源的数据组合到一个一致的数据存储中。 在这种集成过程中必须考虑的问题包括:

  • 模式集成:必须集成来自不同数据源的元数据,以匹配等效的实际实体。 这称为实体识别问题。
  • 处理冗余数据:派生的属性可能是冗余的,不一致的属性命名也可能导致结果数据集中的冗余。 在元组级别可能出现重复,因此需要检测和解决。
  • 数据值冲突的检测和解决:表示,缩放或编码上的差异可能导致相同的现实世界实体属性值在要集成的数据源中有所不同。

 3.5 如下规范化方法的值域是什么?

(a)最小-最大规范化。

(b)z分数规范化。

(c)z分数规范化,使用绝对偏差而不是标准差。

(d)小数定标规范化

  • 最小最大规范化:[new_min, new_max]
  • z分数规范化:
  • z分数规范化,使用绝对偏差而不是标准差:
  • 小数定标规范化: (−1.0,1.0)

3.6 使用如下方法规范化如下数据组:200,300,400,600,1000

(a)令min=0,max=1min=0,max=1,最小最大规范化。

(b)z分数规范化。

(c)z分数规范化,使用均值绝对值偏差而不是标准差。

(d)小数定标规范化。

(a)令min=0,max=1min=0,max=1,最小最大规范化:

(b)z分数规范化:

,其中

(c)z分数规范化,使用均值绝对值偏差而不是标准差

规范化后为−1.25,−0.83,−0.42,0.42,2.08。

(d)小数定标规范化:

,规范化后为0.2,0.3,0.4,0.6,0.1。

3.7 使用习题3.3中给出的age数据,回答以下问题:

(a)使用最小最大规范化将age值35变换到[0.0,1.0]区间。

(b)使用z分数规范化,变换age,其中标准差为12.94。

(c)使用小数定标规范化变换35。

(d)指出给定数据,你愿意使用哪种方法。陈述你的理由。

(a)使用最小最大规范化将age值35变换到[0.0,1.0]区间

为了便于阅读,将A设为属性年龄。 使用公式,其中minA = 13,maxA = 70,new_minA = 0,,new_maxA = 1.0,然后将v = 35转换为v` = 0.39。

(b)使用z分数规范化,变换age,其中标准差为12.94

使用公式(其中 = 809/27 = 29.96和= 12.94),然后将v = 35转换为v` = 0.39。

(c)使用小数定标规范化变换35

使用公式(其中j = 2),将v = 35转换为v` = 0.35。

(d)指出给定数据,你愿意使用哪种方法。陈述你的理由

在给定数据的情况下,人们可能更喜欢使用十进制缩放进行规范化,因为这样的转换将保持数据的分布并直观地解释,同时仍允许在特定年龄段进行挖掘。最小最大规范化具有不希望的结果,即不允许任何将来的值落在当前的最小值和最大值之外,而不会遇到“超出范围的误差”。 由于此类值可能会出现在将来的数据中,因此此方法不太合适。最小最大规范化z分数规范化都极大地改变了原始数据。z分数规范化将值转换为表示它们与标准差之间的距离的度量。 与十进制缩放相比,这种类型的转换对用户而言可能不那么直观。

 3.8 使用习题2.4中给出的age和%fat数据数据,回答如下问题:

(a) 基于z分数规范化,规范化这两个属性。
(b) 计算相关系数(Pearson积矩系数)。这两个变量是正相关还是负相关?计算他们的协方差。

直接套公式即可:

z分数规范化:

相关系数:

协方差:

协方差与相关系数的关系:

3.9 假设12个销售价格记录已经排序,如下所示:5,10,11,13,15,35,50,55,55,72,92,204,215
(a) 等频划分。

(b) 等宽划分

(c) 聚类

(a) 等频划分。

(a) 等频划分。

bin1    5, 10, 11, 13
bin2    15, 35, 50, 55
bin3  72, 92, 204, 215

(b) 等宽划分

等宽分箱:将变量的取值范围分为k个等宽的区间,每个区间当做一个分箱;(215−5)/3=70(215−5)/3=70, 所以区间的距离为70,又需要将其划分为3个箱。

bin1    5, 10, 11, 13, 15, 35, 50, 55, 72
bin2    92
bin3  204, 215

(c) 聚类

这里以数字间的最大间隔来进行一个简单的聚类;

bin1    5, 10, 11, 13,15
bin2    35, 50, 55,72,92
bin3   204, 215

3.10 使用流程图概述如下属性子集选择过程。

(a) 逐步向前选择

(b)逐步向后删除

(c)逐步向前选择和逐步向后删除的组合 

 (a) 逐步向前选择

(b)逐步向后删除

(c)逐步向前选择和逐步向后删除的组合 

3.11使用练习3.3中给出的age数据,

(a) 绘制宽度为10的等宽直方图。

(b) 简要描述如下每种抽样技术的例子:SRSWOR,SRSWR,簇采样,分层抽样。 使用大小为5的样本以及层“youth”, “middle-aged”,和“senior”。

(a)绘制宽度为10的等宽直方图:

(b)简要描述如下每种抽样技术的例子:SRSWOR,SRSWR,簇采样,分层抽样。 使用大小为5的样本以及层“youth”, “middle-aged”,和“senior”:

 元组:

 无放回简单随机抽样 VS 有放回简单随机抽样

 簇抽样:初始簇

 簇抽样

 

分层抽样:

3.12  ChiMerge [Ker92]是一种有监督的,自底向上的(即基于合并的)数据离散化方法。 它依靠χ2分析:将具有最小χ2值的相邻区间合并在一起,直到满足所选的停止标准为止。

(a)简要描述ChiMerge如何工作。

(a)简要描述ChiMerge如何工作。

chiMerge的基本算法是:

begin 
    sort values in ascending order
    assign a separate interval to each distinct value while stopping criteria not met 
    begin 
        compute χ2 of every pair of adjacent intervals 
        merge the two intervals with smallest χ2 value 
    end
end

(b)。。。

3.13 使用伪代码或您喜欢的编程语言提出以下算法:

(a)对于标称数据,基于给定模式中属性的不同值的个数,自动产生概念分层。

(b)对于数值数据,基于等宽划分规则,自动产生概念分层。

(c)对于数值数据,基于等额划分规则,自动产生概念分层。

(a)对于标称数据,基于给定模式中属性的不同值的个数,自动产生概念分层。

用于根据给定架构中属性的不同值的数量自动生成分类数据的概念层次结构的伪代码:

begin 
// 数组以保存名称和属性的不同值计数
// 用于生成概念层次结构
array count_ary[];  // 属性值计数
string count_ary[].name; // 属性名称
int count_ary[].count; //唯一值计数
// 表示概念层次结构的数组(作为值的有序列表)
array concept_hierarchy[];
for each attribute ’A’ in schema { 
    distinct_count = count distinct ’A’; 
    insert (’A’, ’distinct_count’) into count_ary[]; 
} 
//按count升序对ary []进行排序;
sort count_ary[] ascending by count;
for (i = 0; i < count_ary[].length; i++) { 
// 生成概念层次结构节点
    concept_hierarchy[i] = count_ary[i].name; 
} 
end

注:为了指示在概念层次结构中生成另一个级别所需的最小计数阈值,用户可以指定一个附加参数。 

(b)对于数值数据,基于等宽划分规则,自动产生概念分层。

用于根据等额划分规则自动生成数字数据的概念层次结构的伪代码:

begin 
// 用于生成概念层次结构的数值属性 
string concept_attb;

// //表示概念层次结构(作为值的有序列表)
array concept_hierarchy[];

string concept_hierarchy[].name; // 属性名称 
int concept_hierarchy[].max; // 箱的最大值 
int concept_hierarchy[].min; // 箱的最小值 
int concept_hierarchy[].mean; // 箱的平均值 
int concept_hierarchy[].sum; // 箱的总和 
int concept_hierarchy[].count; // 箱的元组计数 

int range_min; // 用户指定的最小数据值 
int range_max; // 用户指定的最大数据值 
int step; // 用户指定的箱的宽度
int j=0;

// 初始化概念层次结构数组 
for (i=0; i < range_max; i+=step) { 
    concept_hierarchy[j].name = ’level_’ + j; 
    concept_hierarchy[j].min = i; 
    concept_hierarchy[j].max = i + step − 1; 
    j++; 
} 

// 必要时初始化最终最大值
if (i >=range_max) { 
    concept_hierarchy[j].max = i + step − 1; 
} 

// 通过增加适当的总和和计数值,将每个值分配给箱 
for each tuple T in task relevant data set { //遍历目标数组
    int k=0; 
    while (T.concept_attb > concept_hierarchy[k].max) { 
        k++; 
    } 
    concept_hierarchy[k].sum += T.concept_attb; //每个箱的总和
    concept_hierarchy[k].count++; //每个箱的计数值
} 

// 计算用于表示每个级别值的箱度量
// 在概念层次结构中 
for (i=0; i < concept_hierarchy[].length; i++) {
    //计算每个箱的平均值
    concept_hierarchy[i].mean = concept_hierarchy[i].sum / concept_hierarchy[i].count; 
} end

 用户可以针对有关数据的背景知识(即,将标签年轻人,中年人和老人分配给三级层次结构),为通过查看垃圾箱的最大值和最小值而生成的概念层次结构级别指定更有意义的名称 此外,可以实现一种替代的合并方法,例如通过合并模式进行平滑。

(c)对于数值数据,基于等额划分规则,自动产生概念分层。

用于根据等频划分规则自动生成数字数据的概念层次结构的伪代码:

begin 
// 用于生成概念层次结构的数值属性 
string concept_attb;

// //表示概念层次结构(作为值的有序列表) 
array concept_hierarchy[];

string concept_hierarchy[].name; // 属性名称 
int concept_hierarchy[].max; // 箱的最大值 
int concept_hierarchy[].min; // 箱的最小值 
int concept_hierarchy[].mean; // 箱的平均值 
int concept_hierarchy[].sum; // 箱的总和 
int concept_hierarchy[].count; // 箱的元组计数 

int bin_depth; // 用户指定的箱深度 
int range_max; // 用户指定的最大数据值 
int step; // 用户指定的箱的宽度

// 初始化概念层次结构数组 
for (i=0; i < (range max/bin depth); i++) { 
    concept_hierarchy[j].name = ’level_’ + j; 
    concept_hierarchy[j].min = 0; 
    concept_hierarchy[j].max = 0; 
} 

//对与任务相关的数据集进行排序,对按概念attb升序排列的数据集进行排序;
int j=1; 
int k=0;

// 通过增加适当的总和和计数值,将每个值分配给箱 
//必要时的最小值和最大值
for each tuple T in task relevant data set { 
    concept_hierarchy[k].sum += T.concept_attb; //每个箱的总和
    concept_hierarchy[k].count++; //每个箱的计数值
    //判断每个箱的最小值
    if (T.concept_attb <= concept_hierarchy[k].min) { 
        concept_hierarchy[k].min = T.concept_attb; 
    }
    //判断每个箱的最大值
    if (T.concept_attb >= concept_hierarchy[k].max) { 
        concept_hierarchy[k].max = T.concept_attb; 
    };  
    j++; 
    if (j > bin_depth) { 
        k++; 
        j=1; 
    }
}

// 计算用于表示每个级别值的箱度量
// 在概念层次结构中 
for (i=0; i < concept_hierarchy[].length; i++) {
    //计算每个箱的平均值
    concept_hierarchy[i].mean = concept_hierarchy[i].sum / concept_hierarchy[i].count; 
} 
end

该算法不会尝试在多个分箱中分配数据值,以消除最终分箱的实际深度与要实现的所需深度之间的任何差异。 用户可以再次为概念层次结构级别指定更有意义的名称,这些概念层次结构级别是通过查看有关数据背景知识的箱的最大值和最小值来生成的。

 3.14 数据库系统中鲁棒的数据加载时提出了一个挑战,因为输入数据常常是脏的。 在许多情况下,输入记录可能缺少几个值,并且某些记录可能会被污染(即某些数据值不在期望的值域内或具有不同的类型)。 设计一种自动的数据清理和加载算法,使得有错误的数据被标记,被受污染的数据加载时不会错误地插入数据库中。

begin 
    for each record r 
        begin 
            check r for missing values 
                If possible, fill in missing values according to domain knowledge 
                (e.g. mean, mode, most likely value, etc.). 
            check r for out of range values 
                If possible, correct out of range values according to domain knowledge 
                (e.g. min or max value for the attribute). 
            check r for erroneous data types 
                If possible, correct data type using domain knowledge 
            If r could not be corrected, mark it as bad and output it to a log, otherwise load r into the database. 
        end
end

领域知识可以是手动工作和自动工作的组合。 例如,我们可以使用数据库中的数据来构建决策树,以诱导给定属性的缺失值,并且同时具有关于如何纠正错误数据类型的人工输入规则。

  • 181
    点赞
  • 506
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 224
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 224
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的小绵羊

c币是什么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值