总述:
此篇文章将提供
(1)Spark Mlib库的二次设计
(2)前端可视化部分图标的二次设计
(3)设计模式在二次设计中的作用
Spark Mlib库的二次设计
Spark Mlib本质上是提供二次开发的SDK(软件开发工具),工具可以再造工具,再造的工具理应比原本制造工具的工具更加容易使用。
以下就举例来说明:Spark Mlib和可视化机器学习的对比
Spark Mlib的原始工具为:
Spark Mlib特征提取,转化,选择的算子以上是使用Spark Mlib特征提取,转化,选择的部分算子示意图,如果要调用这些算子进行大规模数据计算,前提条件是至少做好了如下几种准备:
(1)运维准备好了分布式计算的服务器
(2)搭建一套分布式计算平台
(3)至少有Java的编程能力
(4)至少有编写Spark代码的能力
(5)熟悉一整套Spark代码提交,调试,周期调度等一系列流程
封装后的可视化机器学习工具
而经过Spark Mlib该工具进行二次设计(从某种程度上来说,也可以称之为二次开发)之后的可视化机器学习整体效果如下:
经过抽象,封装,调用等形式使用Spark Mlib二次设计之后,整体上可以更加好用了,它降低了机器学习从业者的门槛,为数据分析者提供了一个不错的数据分析工具。
当然,也不能说这个工具绝对的好用,但是学习成本至少是相对不高的。并且在我所知的所有类似产品中,包括腾讯的TBDS,阿里的机器学习PAI,百度的EasyDL,它们都有类似的三种开发模式,对于初学者,可以参考这三种开发模式有针对性的学习,这三种开发模式分别为:
(1)界面形式1:完全零编码,拖拽已经有的模块,连接已经有的模块,配置连接好的模块。
比如TBDS内部的Tesla机器学习平台(底层封装的spark的各种机器学习算法)、idex数据分析平台(底层封装的hive、hbase、pyspark等)、oceanus(底层封装的flink、storm等)。
(2)相当于界面提供任务调度器,在TBDS内部成为工作流调度。
开发者需要提前将hbase, hive, hadoop&spark&storm等等程序编译打包成可执行架包,然后再上传到工作流任务调度,配置好调度策略,即可完成工作流任务调度开发;
(3)类似Notebook的编码界面
这3种开发模式适合不同的使用场景。以下分别描述各自常见的场景,以供您参考,另外也能加深对可视化机器学习的认识。
(1)第一种:零代码界面开发的形式,通常适合有数据分析理论基础的数据分析工作者。
他们可以不用熟练掌握编程知识(有基础的了解,理解算法的输入,处理,输出流程),他们擅长于在各个可拖拽的算子中配置对应算子的参数配置。这样的一群“他们”使用第一种开发模式,将很大程度上提高模型的设计和开发效率。这也是可视化机器学习想要达到的一个核心的目标。
(2)第二种:以代码编写为主的开发模式,Web界面替代了传统的命令行窗口提交运行jar包的过程。在使用体验上做了优化,毫无疑问,这种开发模式要求开发者有熟练的编程经验,所以要求会比第一种开发模式高得多。也可以算作是第一种开发模式的一种进阶。从优点的角度来看,包含灵活性这一点,当我们决定选择第二种开发模式实现业务逻辑程序的时候,意味着第一种开发模式不适合,或者没有已经实现好的可拖拽算子。已经没法拿来即用了。因此,第一种开发模式虽然方便,但缺乏灵活性(算子有限,总有不满足的需求),而第二种就可以实现Spark可以做的其他数据计算。
(3)第三种:notebook风格的开发模式,这种开发模式可以说是介于刚刚提到的2种模式之间的一种模式。它仍然适合有编程能力的开发者,在这种模式下开发,无需额外的开发工具,也无需重复的将项目打包成jar包(打jar包,上传,提交运行,再调试,再打包,再上传......,这个过程很耗时),代码即写即运行,即调试也即优化。
前端可视化部分图标的二次设计
目前来看,市场上大多数可视化机器学习产品都是BS架构的,即:你可以直接在浏览器端通过网络访问云端,在云端进行机器学习模型设计与训练。简而言之:浏览器端访问服务端的架构。
既然是BS架构,那么问题便随之而来,B代表的浏览器端是一个重要内容,也在整个可视化机器学习项目中占了很大一部分编码工作。并且,它就以web网页的界面展现在眼前,它就赤裸裸的全部暴露在用户的眼中,它带给用户的体验直接决定了用户的去留,因此,B端是必定要花心思打磨的关键之一。
于是,接下来,有必要解释B端可视化的一些工程经验。
前面我们介绍过二次设计,在此处便大有用处。我们便以Spark Mlib的特征提取,特征转化,特征选择的算子为案例,讲述怎样设计可以拖拽的按钮。怎样提高B端的可用性。
可视化机器学习前端图标设计以上用红色框圈住的14个图标是不错的设计,而它们又可以通过怎样的方式实现呢?
阿里巴巴的iconfont图标库虽然不是唯一必然的实现路径,但绝对是殊途同归的很好方案。为了证明这一点,我们用实际的操作流程来深入认识。
第一步:在阿里巴巴iconfont图标库中搜索“播放”关键字
可视化机器学习前端图标设计红框中第1和第8个图标再比如,搜索“设置”
第一个红框中的设置图标操作到这里,你会发现Spark Mlib可视化机器学习的前端设计,真的可以通过形象生动的图标来告诉用户,哪块区域是用来干什么的。一个设置功能的按钮可以有2种方案映入用户眼帘,第一种是一个方框内居中显示“设置”俩个大字;另一种是极简的一个图标(如上图的任何其中一个)。如果是你,你会怎么选?这个问题的思考过程,是可视化机器学习前端设计的重要思考过程。
注意:方法毕竟只是方法,总是因时,因地,因人而异,虽然这里介绍的方法不完全有用,但是绝对是有参考价值的,我想要做到的是:抛转引玉,在你一筹莫展的时刻,或者不知道如何入手之时,给你的思维增加灵感的催化剂。
设计模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的-选自菜鸟教程(runoob.com)。
设计模式在封装Spark Mlib中有重要作用,它能减少S端的编码工作量,也能减小代码的维护成本,除此之外,掌握了设计模式,将其灵活的运用到Spark Mlib可视化机器学习的开发中,一定能大大优化代码质量。
设计模式的资料有很多,大部分也都容易懂,但却又不易掌握,所以当你就设计模式这个领域进行实践的时候,你会发现懂了的东西并非意味着你就掌握了,这二者之间确实还是有一段路要走的。
而缩小懂与掌握之间的距离,唯有实践中注重刻意练习,有意总结,实践与理论之间反复验证,方能掌握设计模式。
设计模式的实践固然重要,但却也不是本文的重点,于是,笔者仅能提供最基本的理论介绍,修行还得用自己的脚行才行。
于是只能附上微不足道的资料源(http://www.runoob.com/design-pattern/design-pattern-tutorial.html)抛转引玉,希望对你的设计模式的掌握之路有所帮助。
网友评论