《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一1.6 练习题

简介:

本节书摘来自华章计算机《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一书中的第1章,第1.6节,作者:[美] 德博拉·诺兰(Deborah Nolan)  邓肯·坦普·朗(Duncan Temple Lang)  更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 练习题

Q.1 写出将原始训练数据读入一个数据结构的代码,该数据结构采用1.2节中描述的第一种方案。即由多个列组成的数据框,每个检测到信号的MAC地址对应于一个列。使用MAC地址的后两个字符作为列的名字,或者使用其他的唯一标识符。
Q.2 比较下面两个数据结构的大小:在1.2节创建的数据框和在Q.1中创建的数据框。哪一个使用的内存少?每个数据框的维度是多少?对于大楼中不同数量的设备,这个维度会如何变化?有些设备很少被检测到,对于这些设备上的各种数量的信号数据,这个维度会如何变化?使用object.size()和dim()函数处理这些问题。
Q.3 对于1.2节描述的两种方法,比较读取原始数据所花费的总时间和创建数据框所花费的总时间。按照不同大小的数据子集(随机选择)进行比较,并且对每一种方法,画出按照输入大小变化的执行时间曲线。此外,说明两种方法占用的内存和执行速度。使用system.time()和Rprof()这两个函数进行比较。
Q.4 检查离线数据中的time变量。信号特征随时间发生变化的原因有多种,例如,测量设备的电池电能随着时间流逝而减少,或者,在不同时间进行的测量是由不同的人以不同的精度完成的。此外,通过对time的检查可以分析出实验是如何进行的,例如,相互近邻的位置是否在相近时间进行测量?你看到了信号强度的变化性或者均值中随时间而发生的变化吗?尝试对可能影响到这种关联关系的其他变量进行控制。
Q.5 写出1.3.4节描述的readData()函数。该函数的参量是文件名filename以及拥有的MAC地址subMacs。确定这些参数是否应该具有缺省值。返回值是1.3节描述的数据框。使用在codetools中现成的findGlobals()函数,检查该函数是否不依赖任何全局变量。
Q.6 在1.4.1小节,我们为每种组合(位置×角度×接入点)上的信号强度,计算了关于中心和位置的测量值(参见图1-9中的例子)。请使用另一种汇总统计方法—柯莫果夫-史迈诺夫(Kolmogorov-Smirnov)正态性检验进行计算。如果信号强度大致是正态的,则期望p值具有均匀分布。这使得8000次检验中5%的p值小于0.05。
Q.7 编写创建如图1-10中图形的surfaceSS()函数。该函数有3个参量:data、mac和angle。data用于指定离线汇总数据框,mac和angle用于指定从数据中选取哪些MAC地址和角度进行平滑处理和绘图。
Q.8 考虑图1-11的散点图。信号强度与距离之间的关系表现为曲线形式。进行对数转换能将这种关系改进为线性关系吗?注意,由于信号是负值,在对信号强度取对数时,需要特别当心。
Q.9 大楼的平面图(见图1-1)显示有6个接入点。但是,数据中包含7个接入点,以及大致的预期信号数量(166个位置×8个方向×110个重复=146 080个测量值)。根据图1-10中的热度图体现的信号强度,我们将接入点匹配到对应的MAC地址。但是,有两个MAC地址似乎对应同一接入点。在1.3.2小节,我们决定保留来自MAC地址00:0f:a3:39:e1:c0的测量值,删除MAC地址00:0f:a3:39:dd:cd。请对这两个地址进行更深入的数据分析。这个决定正确吗?如果将保留的地址替换为丢弃的地址,能够改进预测效果吗?
Q.10 编写1.5.2小节描述的selectTrain()函数。该函数有3个参量:新观测点的方向angleNewObs,训练数据signals(采用offlineSummary格式的数据),从signals中包含的角度的个数m。该函数返回与trainSS相匹配的数据框,即用selectTrain()调用reshapeSS()(见1.5.2小节中对该函数的定义)。
Q.10 我们使用欧氏距离来发现信号强度向量之间的距离。但是,欧氏距离鲁棒性不好,其对离群点敏感。考虑使用其他度量标准,如L1距离,即信号强度之差的绝对值。使用这个替代距离修改1.5.3小节中的findNN()函数。这样能够改进预测效果吗?
Q.12 为了预测位置,我们对一个信号强度集合使用k最近邻方法,对这些邻居的已知(x,y)值求平均值。但是,一个较好的预测器是求加权平均值,其中的权重与观测测试集中的“距离”(信号强度)成反比,这样,虽然允许包含相近的k个点,但是对它们之间实际上如何相近要加以区分。对于第i个最近的邻居观测点,权重可以是:

其中,di是从新观测点到这个参照点的距离(在信号强度空间中)。实现这个替代的预测模型。这种方法改进了预测效果吗?使用calcError()函数将这个方法与简单平均方法进行比较。
Q.13 在1.5.4小节,我们使用交叉验证方法来选择k,即邻居的个数。另外一个需要选择的参数是角度的个数,即测试信号的角度。使用交叉验证方法选择这个值。也可以考虑同时选择一对参数值,即k和角度的个数。
Q.14 数据采集方面的研究者实现了一种根据信号强度预测位置的贝叶斯方法。下面这篇论文里描述了他们的工作:http://www.informatik.uni-mannheim.de/pi4/publications/King2006g.pdf。考虑采用这个方法建立一个统计型IPS。
Q.15 人们还开发了其他利用无线局域网来预测室内位置的统计技术。这些技术包括在文献[3,4,11]中介绍的技术。考虑采用其中一种方法,结合CRAWDAD数据,建立一个统计型IPS并进行测试。
参考文献

相关文章
|
8月前
|
数据可视化
R语言绘图教程丨Nature论文都在用的多组比较箱线图,自动计算显著性并标注,附带误差线
R语言绘图教程丨Nature论文都在用的多组比较箱线图,自动计算显著性并标注,附带误差线
|
2天前
R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数
R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数
|
1月前
|
机器学习/深度学习 算法 数据挖掘
survey和surveyCV:如何用R语言进行复杂抽样设计、权重计算和10折交叉验证?
survey和surveyCV:如何用R语言进行复杂抽样设计、权重计算和10折交叉验证?
37 1
|
4月前
|
定位技术
R语言raster包计算多个栅格图像平均值、标准差的方法
R语言raster包计算多个栅格图像平均值、标准差的方法
|
8月前
|
并行计算
R语言多线程使用方法,充分利用计算资源实现高效计算,缩短等待时间
R语言多线程使用方法,充分利用计算资源实现高效计算,缩短等待时间
|
10月前
|
并行计算 调度 Windows
R语言- parallel::mclapply 并行化计算任务
R语言中的 parallel::mclapply 是一个用于在多核CPU上实现并行计算的方法。它是lapply函数的并行版本,可以在多个处理器核心上同时运行lapply函数。mclapply函数的语法与lapply函数类似,但它可以指定要使用的处理器核心数量,从而提高计算速度。
601 0
时间序列分析(1)R语言-计算简单收益率
时间序列分析(1)R语言-计算简单收益率
175 0
|
数据可视化 前端开发 JavaScript
Google Earth Engine(GEE)——R 语言图像可视化(内含NDWI指数计算和掩膜镶嵌后的图像展示)
Google Earth Engine(GEE)——R 语言图像可视化(内含NDWI指数计算和掩膜镶嵌后的图像展示)
303 0
Google Earth Engine(GEE)——R 语言图像可视化(内含NDWI指数计算和掩膜镶嵌后的图像展示)
|
机器学习/深度学习 存储 数据可视化
独家 | 规范性分析的实用介绍(附R语言案例研究&演示代码)
本文是作为Analytics Vidhya’s Internship Challenge的一部分提交的案例研究。
1051 0
|
Java 程序员 云栖大会
9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇
对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理、分析和可视化。 在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言。这两种语言各有优缺点,掌握这两种语言大有益处,但是针对面试者而言,最好的方式是学习其中一种并熟练掌握。
3088 0