一直以来,以高校为代表的学术界和以公司为代表的商业界,都有很大的隔阂。学术界普遍不会做产品,商业界普遍不会搞研究。如果两者都强,那就是美国军方了。
在数据挖掘领域更是如此,大量关于复杂网络,自然语言处理的牛文层出不穷,却被研究机构和大公司养在深闺人未识。绝大多数智能机器学习算法被封装在基础层中,以潜移默化的方式服务用户(比如用户推荐等),普通用户无法将其用于自己的应用场景。而以SPSS为代表的统计和商业智能为核心的平台,使用复杂,结构封闭,它们以统计为核心,但在真正的“智能”领域,依旧缺乏火候。因此,我们需要能面向普通用户的易用系统,甚至不需要写脚本。
对于普通用户,他希望能简单直接的看到分析结果,了解复杂数据间的网络关系,了解数据的地理分布,了解如何被分类。因此,我们需要强大的可视化工具。
现有的种种功能,也许在未来的应用场景中依然不够完备。因此平台的功能需要随时扩展,甚至面向行业做专业的定制服务。我们需要灵活的,可扩展性强的系统。
总结以上观点,我们要开发一套使用简单,易于扩展,可面向领域,强化可视化和服务性,整合从数据导入到分析和可视化完整流程的数据挖掘系统,体现自己的独特优势,于是,该平台诞生了。
1.与Hadoop等开源分布式框架的交互
我们不需要重头开发自有的分布式平台,要做好的是前台和后台的接口。Hadoop已经成为分布式处理的事实标准,通过WebService和RPC等方式,打通平台间的通信。如此一来,Hadoop不需要与真实数据做交互,它要处理的,仅仅是软件平台传给它的抽象数据类型。这样,Hadoop就可只关心算法逻辑,大大减轻传输数据量。而平台也能充分利用分布式系统轻松实现并行化。
2.与SPSS和EXCEL等成熟商业统计系统的交互
论统计功能,我们无法与这些成熟平台相提并论,但系统可以方便的生成供这些工具使用的脚本和业务逻辑,减轻分析负担。
该平台的主要技术特征有:
1.集成了从数据采集/存储,分析(聚类,分类,语义推断等),可视化和其他服务。
2.组件式结构,良好的扩展性,所有的功能和模块以插件接入系统。通用算法可对所有实现一定接口的数据实现。
3.前端使用.NET开发,后端使用
4.目前支持对新闻,微博,科研项目/专利/论文和知识网络分析。
5.后台可采用hadoop云计算平台加速计算,并通过跨平台交互技术实现访问。
下图是该软件的结构:
例如,科研项目数据类型实现了关系计算,分词和位置检索接口.
不同数据类型的静态特征,如表格样式,绘图形状等特点,都通过静态方法呈现。系统通过反射静态方法获得。
所有的数据类型都实现了IComputable接口,从而满足基本的检索,存储服务。
通过以上技术,使得软件/算法彻底与数据类型无关,它们在编程时面对的都是接口。分词算法不需要考虑是哪种算法类型。界面显示不考虑数据类型的同时,又能获得个性化的视觉效果。
系统的数据访问层通过EntityFramework实现,可方便的兼容SQLServer,MYSQL等主流数据库,并提供高效的存取修改机制。
同样,软件可读取XML/Text,通过序列化或者特定的编码方法读取外部的数据文件。
所有的数据在送入算法模块前,都被抽象为数据容器集合,供算法调用:
除了常规的数据导入,平台还集成了爬虫和API调用功能。
目前已经开发了知网数据爬虫,新闻数据爬虫等。API方面,可方便的调用微博等主流SNS网站的用户数据:
这些数据都可以存入数据库,或者作为算法数据源传给算法模块。
算法模块通过插件形式接入系统,这些算法包括基本的分词、数据统计等,也包括可视化类别如地图,布点等,或者针对特定数据类型如微博的关系分析等。
如上图,您可以将这些算法方便的拖动到执行列表中。
在配置菜单中,可以选择算法要处理的数据源,同时可设置算法对应的参数。
为了在模块级别上更好的支持代码重用,系统采用了算法组装技术。我们可考虑类似LabView的G语言,不同的算法模块具有特定的输入和输出,符合匹配的输出可作为某一模块输入端的数据信息。例如,分词模块需作为很多算法的“预处理”模块,因此实现了ISegWordMethod接口,同时可以向外提供对应的分词数据。
如下图:
系统充分考虑了实际开发的方便性,在底层为算法提供了调试输出工具,进度指示工具和后台线程。算法编写者可不考虑多线程/并行,这些都由平台在底层自行完成。
数据挖掘的重要特性,就是将隐含于海量数据中的关系和知识展示出来,展示的技巧和效果,最终直接影响到用户的接受度和信息有效性,因此我们在可视化上做了大量的工作。
所有的参数都可以图形化配置,采用简单的拖拽方式进行操作。结果以列表,柱状图,曲线,地图地标和网络视图表示。同时可提供针对特定数据的可视化显示实现。
类似DataGrid,通过订制特别的ListView,可呈现列表数据,同时用户可对这些数据进行筛选,排序等操作。
该画布可作为显示数据间关系网络的利器。
本文介绍了数据挖掘平台的主要软件特性,后期将会进一步介绍数据挖掘的一些经验,以及对应的结果。欢迎讨论!