32、云与雾中的数据分析和机器学习

云与雾中的数据分析和机器学习

1. 复杂事件处理(CEP)

复杂事件处理(CEP)是一种常用于模式检测的分析引擎。它起源于20世纪90年代的离散事件模拟和股票市场波动交易,本质上能够近乎实时地分析实时数据流。当成百上千的事件进入系统时,它们会被缩减并提炼为更高级别的事件,这些事件比原始传感器数据更抽象。

与流处理器相比,CEP引擎在实时分析方面具有快速周转时间的优势,流处理器可以在毫秒级时间内处理一个事件。但缺点是,CEP没有像Apache Spark那样的冗余级别或动态扩展能力。

CEP系统使用类似SQL的查询,但它不是使用数据库后端,而是在传入的流中搜索你指定的模式或规则。CEP由带有时间戳的离散数据元素元组组成,它利用本章开头描述的不同分析模式,并能很好地处理事件的滑动窗口。由于其语义类似SQL,并且设计上比常规数据库查询明显更快,所有规则和数据都驻留在内存中(通常是一个多GB的数据库)。此外,它们需要从现代流消息系统(如Kafka)获取数据。

CEP具有滑动窗口、连接和序列检测等操作。此外,CEP引擎可以像规则引擎一样基于前向或后向链。行业标准的CEP系统是Apache WSO2 CEP,WSO2与Apache Storm结合使用时,每秒可以处理超过100万个事件,且无需存储事件。WSO2是一个使用SQL语言的CEP,但可以用JavaScript和Scala编写脚本。额外的好处是,它可以通过一个名为Siddhi的包进行扩展,以实现以下服务:
- 地理定位
- 自然语言处理
- 机器学习
- 时间序列相关性和回归
- 数学运算
- 字符串和正则表达式

可以使用以下Siddhi QL代码查询数据流:

define stream SensorStream (time int, temperature single);
@name('Filter Query')
from SensorStream[temperature > 98.6]
select *
insert into FeverStream;

这一切都作为离散事件运行,允许对同时发生的数百万个事件应用复杂的规则。

架构师需要了解CEP和规则引擎的适用场景。如果评估是一个简单的状态,例如两个温度范围,那么系统是无状态的,应该使用简单的规则引擎。如果系统维护时间概念或一系列状态,则应该使用CEP。

2. Lambda架构

Lambda架构试图在延迟和吞吐量之间取得平衡,本质上是将批处理与流处理相结合。类似于OpenStack或其他云框架的通用云拓扑,Lambda将数据摄取并存储到不可变的数据存储库中。该拓扑有三层:
- 批处理层 :通常基于Hadoop集群,处理速度明显慢于流处理层。通过牺牲延迟,它可以最大化吞吐量和准确性。
- 速度层 :这是实时内存数据流,数据可能存在错误、缺失和无序的情况。Apache Spark非常适合提供流处理引擎。
- 服务层 :在这里,批处理和流处理的结果会被存储、分析和可视化。服务层的典型组件包括:Druid,用于组合批处理层和速度层;Apache Cassandra,用于可扩展的数据库管理;Apache Hive,用于数据仓库。

Lambda架构本质上比其他分析引擎更复杂,它是混合式的,需要更多的复杂性和资源才能成功运行。

3. 各行业用例

不同行业在采用物联网和云分析时,有各自典型的用例。在设计解决方案时,需要考虑规模、带宽、实时需求和数据类型,以得出正确的云架构和分析架构。以下是一些行业的用例总结:
| 行业 | 用例 | 云服务 | 典型带宽 | 实时性 | 分析方法 |
| — | — | — | — | — | — |
| 制造业 | 运营技术、棕地项目、资产跟踪、工厂自动化、仪表盘 | 大容量存储、数据湖、SDN(混合云拓扑) | 每个工厂部件每天500 GB;采矿作业每分钟2 TB | 小于1秒 | 递归神经网络、贝叶斯网络 |
| 物流和运输 | 地理定位跟踪、资产跟踪、设备传感、仪表盘、日志记录、存储 | 存储 | 每辆车每天4 TB(50个传感器);每架飞机每天2.5 - 10 TB(6000个传感器);每个信标每天1 MB | 小于1秒(实时);每天(批处理) | 规则引擎 |
| 医疗保健 | 资产跟踪、患者跟踪、家庭健康监测、无线医疗设备 | 可靠性和HIPPA合规性、私有云选项、存储和存档、负载均衡 | 每个传感器每天1 MB | 生命关键情况小于1秒;非生命关键情况每次变化 | 递归神经网络(RNN)、决策树、规则引擎 |
| 农业 | 牲畜健康和位置跟踪、土壤化学分析、大容量存储 - 存档、云到云供应 | 大容量存储 - 存档、云到云供应 | 每头牲畜每天512 KB;每个饲养场1000 - 10000头牛 | 1秒(实时);10分钟(批处理) | 规则引擎 |
| 能源 | 智能电表、远程能源监测(太阳能、天然气、石油)、故障预测、仪表盘 | 数据湖、大容量存储用于历史费率预测、SDN | 每个风力涡轮机每天100 - 200 GB;每个石油钻井平台每天1 - 2 TB;每个智能电表每天100 MB | 能源生产小于1秒;智能电表1分钟 | RNN、贝叶斯网络、规则引擎 |
| 消费者 | 实时健康记录、存在检测、照明和供暖/空调、安全、智能家居、仪表盘 | PaaS、负载均衡、大容量存储 | 每个安全摄像头每天500 GB;每个智能设备每天1 - 1000 KB;每个智能家居每天100 MB | 视频小于1秒;智能家居1秒 | 卷积神经网络(图像传感)、规则引擎 |
| 零售 | 冷链传感、POS机、安全系统、信标、SDN/SDP、微分段、仪表盘 | SDN/SDP、微分段、仪表盘 | 每个安全摄像头每天500 GB;每个设备每天1 - 1000 MB;POS和信用交易100毫秒;信标1秒 | POS和信用交易100毫秒;信标1秒 | 规则引擎、用于安全的卷积神经网络 |
| 智慧城市 | 智能停车、智能垃圾收集、环境传感器、仪表盘、数据湖、云到云服务 | 数据湖、云到云服务 | 每个城市能源监测器每天2.5 GB(70K个传感器);每个停车位每天300 MB(80000个传感器);每个废物监测器每天350 MB(200000个传感器);每个噪音监测器每天650 MB(30000个传感器) | 电表1分钟;温度15分钟;噪音1分钟;废物10分钟;停车位每次变化 | 规则引擎、决策树 |

3. 机器学习在物联网中的应用

机器学习并不是计算机科学的新发展。事实上,数据拟合和概率的数学模型可以追溯到19世纪初,贝叶斯定理和最小二乘法至今仍广泛应用于机器学习模型中。

直到20世纪50年代初,麻省理工学院的Marvin Minsky制造出第一个名为感知器的神经网络设备,计算机和学习才得以结合。1969年,他发表了一篇论文,被解读为对神经网络局限性的批判。在那个时期,计算能力非常宝贵,当时的IBM S/360和CDC计算机的资源无法满足相关数学计算的需求。20世纪60年代引入了许多人工智能领域的数学和基础,如神经网络、支持向量机、模糊逻辑等。

20世纪60年代末和70年代,进化计算(如遗传算法和群体智能)成为研究焦点,Ingo Rechenberg在1973年的工作使其在解决复杂工程问题方面取得了一定进展。遗传算法至今仍用于机械工程,甚至自动软件设计。

20世纪60年代中期还引入了隐马尔可夫模型,作为一种概率人工智能,类似于贝叶斯模型,它已应用于手势识别和生物信息学研究。

由于政府资金枯竭,人工智能研究在20世纪80年代之前陷入停滞,直到逻辑系统的出现。这开启了基于逻辑的人工智能领域,并产生了支持性编程语言Prolog和LISP,使程序员能够轻松描述符号表达式。但研究人员发现这种人工智能方法存在局限性,主要是基于逻辑的语义不像人类思维。尝试使用反逻辑或松散模型来描述对象也不太成功,因为不能用松散耦合的概念精确描述一个对象。20世纪80年代后期,专家系统开始兴起,它是一种针对特定领域由专家训练的基于逻辑的系统,可以看作是控制系统的基于规则的引擎。专家系统在企业和商业环境中取得了成功,成为首个商业可用的人工智能系统,围绕专家系统还催生了新的行业。IBM利用这一概念构建了Deep Thought,并在1997年击败了国际象棋大师Garry Kasparov。

模糊逻辑最早于1965年由加州大学伯克利分校的Lotfi A. Zadeh提出,但直到1985年,日立的研究人员才展示了如何将其成功应用于控制系统。这引发了日本汽车和电子公司将模糊系统应用于实际产品的浓厚兴趣,模糊逻辑已成功应用于控制系统。

20世纪90年代,专家系统和模糊逻辑似乎成为人工智能的主流,但它们的能力与人们的期望之间存在明显差距。研究人员发现,基于逻辑的系统一般无法模拟人类思维。90年代出现了以隐马尔可夫模型和贝叶斯网络形式的统计人工智能,计算机科学开始采用经济学、贸易和运筹学中常用的模型来做决策。

支持向量机由Vladimir N. Vapnik和Alexey Chervonenkis于1963年首次提出,在20世纪70年代和80年代初的人工智能寒冬之后变得流行起来。它通过一种新颖的技术找到最佳超平面来对数据集进行分类,成为线性和非线性分类的基础,这种技术在手写分析中很受欢迎,并逐渐应用于神经网络。

20世纪90年代,递归神经网络(RNN)也成为研究热点。与卷积神经网络等深度学习神经网络不同,RNN能够保持状态,可应用于涉及时间概念的问题,如音频和语音识别,对当今的物联网预测模型有直接影响。

2012年,图像识别领域发生了一个具有里程碑意义的事件。在一场竞赛中,全球团队竞争完成一项计算机科学任务:识别50像素×30像素缩略图中的对象,并在对象周围画框,任务涉及100万张图像。多伦多大学的一个团队构建了第一个深度卷积神经网络来处理图像,并赢得了比赛。此前其他神经网络也尝试过这项机器视觉任务,但该团队的方法比以往任何方法都更准确,错误率为16.4%。谷歌开发的另一个神经网络将错误率降低到了6.4%。大约在同一时间,Alex Krizhevsky开发了AlexNet,引入了GPU来大大加快训练速度。所有这些模型都是围绕卷积神经网络构建的,在GPU出现之前,它们的处理要求是难以实现的。

如今,人工智能无处不在,从自动驾驶汽车到Siri的语音识别,从在线客服中模拟人类的工具到医学成像,再到零售商利用机器学习模型识别消费者在商店中的购物和时尚兴趣。

物联网为大量持续的数据流打开了大门。传感器系统的价值不在于单个传感器的测量值,而在于一组传感器的测量结果能告诉我们关于一个更大系统的信息。物联网将成为数据收集量大幅增长的催化剂,其中一些数据是结构化的,如时间相关序列;另一些则是非结构化的,如摄像头、合成传感器、音频和模拟信号。客户希望根据这些数据为其业务做出有用的决策。

例如,一家制造工厂计划通过采用物联网和机器学习来优化运营成本和潜在的资本成本。工厂有许多相互依赖的系统,如生产小部件的装配工具、切割金属或塑料零件的机器人、注塑机、传送带、照明和加热系统、包装机、供应和库存控制系统、搬运材料的机器人以及各种控制系统。这样的工厂采用了所有传统的效率模型,并阅读了W. Edwards Deming的文献,但下一次工业革命将以物联网和机器智能的形式到来。

专业人员知道在出现异常事件时该怎么做。例如,操作装配机多年的技术人员可以根据机器的运行状况判断何时需要维修。机器可能开始发出某种嘎吱声,或者拾取和放置零件的能力下降,在过去几天里掉落了一些零件。这些简单的行为变化,机器学习甚至可以在人类之前发现和预测。可以在这些设备周围布置传感器,监测可感知和推断的动作。通过收集系统中每台机器和每个工人产生的数百万或数十亿个事件,就可以了解整个工厂在某一时刻的运行情况。面对如此大量的数据,只有机器学习设备才能从噪声中筛选出有价值的信息,这是大数据和机器学习可解决的问题,而非人力可及。

4. 机器学习模型

在物联网应用中,没有一种单一的机器学习模型能适用于所有情况,每种模型都有其特定的优势和适用场景。机器学习工具的目标是对一组数据进行预测或推断,其准确性要优于随机猜测(50%的准确率)。

机器学习系统主要分为以下两类:
- 监督学习 :提供给模型的训练数据每个条目都有相关的标签。例如,一组图片,每张图片都标有其内容,如猫、狗、香蕉、汽车。如今许多机器学习模型都采用监督学习,它可以解决分类和回归问题。
- 无监督学习 :训练数据没有标签,显然这种学习方式无法将狗的图像识别为“狗”。无监督学习模型使用数学规则来减少冗余,典型的应用是发现相似事物的聚类。

此外,还有一种半监督学习,它结合了有标签数据和无标签数据,目的是让机器学习模型既能组织数据又能进行推断。

机器学习的三个基本用途是:
- 分类
- 回归
- 异常检测

下面将重点介绍几种适用于物联网的机器学习模型:
- 随机森林 :统计模型,速度快,适用于需要检测异常的多属性系统。
- 贝叶斯网络 :概率模型。
- 卷积神经网络 :深度学习模型,适用于处理非结构化图像数据。
- 递归神经网络(RNN) :深度学习模型,用于时间序列分析。

对于某些物联网用例,逻辑模型、遗传算法和模糊逻辑等模型不再适用,因此不做重点讨论。

5. 分类

在大多数机器学习模型中,分类是常见的起始步骤。分类是一种监督学习形式,通过数据来选择名称、值或类别。例如,使用神经网络扫描图像以查找鞋子的图片。分类有两种类型:
- 二项分类 :在两个类别中进行选择,如咖啡和茶。
- 多类别分类 :有两个以上的选项。

可以使用斯坦福线性分类器工具(http://vision.stanford.edu/teaching/cs231n-demos/linear-classify/)来理解超平面的概念。在训练学习系统尝试找到最佳超平面来划分彩色球的示例中,经过数千次迭代后,划分虽接近最优,但右上角区域仍存在问题,对应的超平面包含了本应属于顶部超平面的球,这是一个不太理想的分类示例。

在这个例子中,超平面是一条直线,这种分类器称为线性分类器,包括支持向量机(试图最大化线性度)和逻辑回归(可用于二项分类和多类别拟合)。以一个二项线性分类两个数据集(圆形和菱形)的图表为例,一条直线试图形成超平面来划分两个不同的变量区域,但最佳线性关系仍存在误差。

在机器学习中,非线性关系也很常见,使用线性模型会导致严重的错误率。通过比较线性曲线拟合和非线性曲线拟合的图表可以发现,非线性模型虽然能更精确地拟合已知训练集,但在处理实际数据时可能会失效,因为它容易出现过拟合的问题。

综上所述,在选择机器学习模型和分类方法时,需要根据具体的应用场景和数据特点进行综合考虑,以达到最佳的预测和分析效果。

云与雾中的数据分析和机器学习

6. 回归

回归是机器学习中的另一个重要任务,它的目标是预测一个连续的值。与分类不同,分类是预测离散的类别,而回归则是预测一个具体的数值。例如,预测房屋的价格、股票的走势等都属于回归问题。

常见的回归模型有线性回归、多项式回归和逻辑回归等。线性回归是最简单的回归模型,它假设自变量和因变量之间存在线性关系。多项式回归则是在线性回归的基础上,引入了自变量的高次项,以拟合更复杂的关系。逻辑回归虽然名字中带有“回归”,但它实际上是一种分类算法,用于处理二分类问题。

在实际应用中,选择合适的回归模型需要考虑数据的特点和问题的复杂度。如果数据呈现出线性关系,那么线性回归可能是一个不错的选择;如果数据关系较为复杂,可能需要使用多项式回归或其他更高级的模型。

7. 异常检测

异常检测是机器学习的重要应用之一,它的目的是识别数据中不符合正常模式的异常点。在物联网环境中,异常检测可以帮助我们及时发现设备故障、安全漏洞等问题。

常见的异常检测方法有基于统计的方法、基于机器学习的方法和基于深度学习的方法。基于统计的方法通过计算数据的统计特征,如均值、方差等,来判断数据是否异常。基于机器学习的方法则使用分类器或聚类算法来识别异常点。基于深度学习的方法,如自编码器,通过学习数据的正常模式,然后比较输入数据与学习到的模式之间的差异来检测异常。

例如,在一个工业生产环境中,通过监测设备的运行参数,如温度、压力等,使用异常检测算法可以及时发现设备是否出现故障。如果某个设备的温度突然升高,超出了正常范围,那么就可以认为该设备可能存在异常。

8. 模型选择与评估

在实际应用中,选择合适的机器学习模型是至关重要的。不同的模型适用于不同的问题和数据,因此需要根据具体情况进行选择。在选择模型时,可以考虑以下几个因素:
- 数据类型 :数据是结构化的还是非结构化的,是数值型的还是文本型的等。
- 问题类型 :是分类问题、回归问题还是异常检测问题。
- 模型复杂度 :模型越复杂,可能对训练数据的拟合效果越好,但也容易出现过拟合的问题。
- 计算资源 :某些模型需要大量的计算资源和时间,需要考虑实际的计算能力。

选择好模型后,还需要对模型进行评估。常见的评估指标有准确率、召回率、F1值、均方误差等。不同的问题和模型可能需要使用不同的评估指标。例如,在分类问题中,准确率是一个常用的评估指标;而在回归问题中,均方误差则更能反映模型的预测性能。

9. 总结

本文介绍了云与雾中的数据分析和机器学习的相关内容,包括复杂事件处理(CEP)、Lambda架构、各行业用例、机器学习在物联网中的应用以及常见的机器学习模型。以下是对这些内容的总结:

内容 要点
复杂事件处理(CEP) 用于模式检测,能近乎实时分析数据流,可应用复杂规则,架构师需根据系统状态选择CEP或规则引擎
Lambda架构 平衡延迟和吞吐量,结合批处理和流处理,拓扑包括批处理层、速度层和服务层,较为复杂
各行业用例 不同行业在物联网和云分析中有不同用例,需考虑规模、带宽、实时需求和数据类型选择架构和分析方法
机器学习在物联网中的应用 机器学习历史悠久,物联网产生大量数据,机器学习可从数据中筛选有价值信息,推动工业革命
机器学习模型 包括监督学习、无监督学习和半监督学习,基本用途有分类、回归和异常检测,常见模型有随机森林、贝叶斯网络、卷积神经网络和递归神经网络等

通过合理选择和应用这些技术和模型,可以更好地处理和分析云与雾中的数据,为各行业的决策提供有力支持。在未来的发展中,随着技术的不断进步,数据分析和机器学习将在更多领域发挥重要作用。

mermaid格式流程图展示机器学习流程:

graph LR
    A[数据收集] --> B[数据预处理]
    B --> C[模型选择]
    C --> D[模型训练]
    D --> E[模型评估]
    E --> F{评估结果是否满意}
    F -- 是 --> G[模型应用]
    F -- 否 --> C

总之,数据分析和机器学习在云与雾环境中的应用前景广阔,但也面临着诸多挑战。需要不断学习和探索,结合实际需求,选择合适的技术和方法,以实现更好的数据分析和决策支持。

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑用户体验的优化,从而提升整体开发效率软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值