文档章节

Ignite中的机器学习介绍

李玉珏
 李玉珏
发布于 2018/10/26 14:07
字数 1502
阅读 259
收藏 2

本系列共6篇文章,会通过一些代码示例,讲解如何在Ignite中使用机器学习库,本文是本系列的第一篇。

从Ignite的2.4版本开始,机器学习就可以用于生产环境了。在这个版本中,进行了大量的开发和改进,其中包括对分区化数据集和遗传算法的支持,Ignite提供的很多机器学习示例也可以独立运行,这样就使入门变得很简单。并且在本系列的后面,还会使用Ignite支持的一些算法,对一些免费的数据集进行分析,进一步方便开发者学习。

介绍

本文中,先大概看一下机器学习网格,如图1所示: Ignite提供的机器学习能力,从设计上来说要求实用化,并且要求能够直接在Ignite中建立预测模型,这就使得用户在不需要进行昂贵的ETL或者数据转换的前提下,获得扩展性和性能的提升,下面稍微讨论下细节。

首先,在这之前,机器学习模型需要在不同的系统间进行训练和部署,比如,数据需要移出Ignite,然后使用其他的工具进行训练,最后再将模型重新部署进生产系统,这个方式有如下几个缺点:

  • 昂贵的ETL处理过程,尤其对于大规模数据集,数据集的大小,可能是GB级甚至是TB级;
  • 如果要进行ETL,实际上使用的是数据的一个快照,在ETL之后,线上的生产系统数据,可能已经改变,从而使训练系统使用的是过时的训练数据;

其次,现在许多系统可能需要处理大量数据,这些数据通常超过单个服务器的容量。虽然分布式计算提供了一种解决方案,但是有些平台不是为存储和操作数据而设计的,可能只适合于训练目的。因此,开发人员可能需要考虑在生产环境中部署更复杂的解决方案。

Ignite的机器学习能力有助于解决所有的这些问题,甚至更多:

  • Ignite可以直接处理线上的生产数据,避免在不同系统间进行昂贵的ETL;
  • 在数据的存储和维护上,Ignite可以提供分布式的计算能力;
  • Ignite实现的机器学习算法,针对分布式计算进行了优化,因此可以利用Ignite并置处理的优势;
  • Ignite可以作为流式数据的接收器,因此可以实时地进行机器学习;
  • 机器学习通常是迭代式的处理,并且算法在执行过程中上下文可能发生变化,因此为了避免延迟以及丢失,Ignite支持容错的分区化的数据集。

分区化的数据集

Ignite目前支持分区化的数据集,这是一个介于机器学习算法和底层的存储和计算之间的抽象层,它为计算和缓存的备份使用了类似MapReduce的操作以支持容错。

在Ignite中,一个哈希算法会被应用于键值对(K-V)中的键部分,来确定值部分在集群中的存储位置。值部分实际是存储于分区中的,分区是原子化的。在图2中,可以看到两个节点的集群,有两个分区(P1和P2): 机器学习算法通常是迭代式的,并且需要上下文和数据,在图2中,如每个分区中对应的C和D所示。

如果一个节点故障,Ignite会恢复分区和上下文,如图3所示。比如,P1在节点2有一个备份(灰色所示),如果节点1故障,就可以从节点2恢复P1,数据可能从集群或者本地ETL(标记为D*)中恢复。 图3

算法和适用领域

下面会看下Ignite支持的机器学习算法,下表会做个总结:

分类 回归 聚类 预处理
描述 根据一组训练数据确定新的标的属于哪一类 对因变量y和一个或多个自变量x之间的关系进行建模 对对象集进行分组,使得同一组内的对象和其他组中的每个对象相比具有更高的相似度 特征提取和规范化
适用领域 垃圾邮件检测、图像识别、信用评分、疾病识别 药物反应,股票价格,超市收入 客户细分、实验结果分组、购物项目分组 对比如文本这样的输入数据进行转换,以便用于机器学习算法,然后提取需要拟合的特征,对数据进行规范化
算法 支持向量机(SVM)、最近邻、决策树分类和神经网络 线性回归、决策树回归、最近邻和神经网络 K均值 基于分区的数据集自定义预处理

机器学习库还带来了一组遗传算法,其在这里有详细描述。

总结

Ignite的最新版本提供了许多重要的特性和能力。分区化的数据集通过保存上下文,在节点故障时可以继续处理机器学习算法。机器学习算法支持广泛的使用案例,遗传算法的加入也为复杂数据的处理提供了新的机会。

© 著作权归作者所有

李玉珏

李玉珏

粉丝 387
博文 79
码字总数 149758
作品 0
沈阳
架构师
私信 提问
在Ignite中使用线性回归算法

在本系列前面的文章中,简单介绍了一下Ignite的机器学习网格,下面会趁热打铁,结合一些示例,深入介绍Ignite支持的一些机器学习算法。 如果要找合适的数据集,会发现可用的有很多,但是对于...

李玉珏
2018/11/22
267
0
Apache Ignite 2.5.0 版本发布,千级节点伸缩性

Apache Ignite 2.5: 千级节点伸缩性 Apache Ignite的用户通常知道的两个关键点是-扩展性和性能。在很多分布式系统的整个生命周期中,通常会不停地改进性能,而对扩展性相关的改进次数,会比较...

李玉珏
2018/06/01
1K
10
内存数据组织 - Apache Ignite

1.Ignite是什么? Apache Ignite是一个以内存为中心的分布式数据库、缓存和处理平台,支持事务、分析以及流式负载,可以在PB级数据上享有内存级的性能。 1.1.Ignite定位 Ignite是不是内存数据...

匿名
2015/01/10
29K
8
Apache Ignite的Node.js客户端使用入门

介绍 Ignite原生提供了若干种主要编程语言的支持,最近,还通过瘦客户端技术对其它的编程语言提供了支持,其中在2.7版本中新增加的瘦客户端包括Python、PHP和Node.js。 瘦客户端具有如下的特...

李玉珏
02/13
267
0
全面对比,深度解析 Ignite 与 Spark

经常有人拿 Ignite 和 Spark 进行比较,然后搞不清两者的区别和联系。Ignite 和 Spark,如果笼统归类,都可以归于内存计算平台,然而两者功能上虽然有交集,并且 Ignite 也会对 Spark 进行支...

编辑部的故事
2018/09/13
3.6K
6

没有更多内容

加载失败,请刷新页面

加载更多

DDD(十)--仓储

1、引言 DDD中的Repository(仓储):协调领域和数据映射层,利用类似与集合的接口来访问领域对象。——《领域驱动设计-软件核心复杂性应对之道》 仓储是DDD中产生的概念,也就是说,如果应...

MrYuZixian
27分钟前
8
0
Jenkins的多种迁移方法

说明 Jenkins有时需要进行迁移,主目录会发生改变,本文主要讲解如何更改主目录。由于jenkins安装方式的不同,主目录也不一样。 本测试环境:Centos7.6 X64。注意:在更改主目录之前,请一定...

Elson
28分钟前
8
0
好程序员web前端教程分享前端javascript练习题三

好程序员web前端教程分享前端javascript练习题三,cookie 一周内免登录 样式代码: <form action=""> 姓名:<input type="text" id="usename"/><br /> 密码:<input type="text" i="mima"/>......

好程序员官网
47分钟前
8
0
Table 信息转成pojo属性

import com.google.common.base.CaseFormat;import java.sql.*;/** * @author: liyhu * @date: 2019/11/22 */public class TableToPojo { static String url="jdbc:mys......

暗中观察
今天
10
0
Access数据库-C#操作类

//Access数据库-C# 操作类 代码using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.OleDb;using System.Data;namespace XXX{......

芳缘
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部