一个信息可视化Demo的设计(一):系统架构
作者:愤怒的小狐狸 撰写日期:2011-09-26 ~ 2011-09-28
博客链接: http://blog.youkuaiyun.com/MONKEY_D_MENG
我可是要成为架构师的男人啊~
----写在前面
北京两个月的实习结束,回归武汉校园,期间完成了一个信息可视化的Demo,回顾这一历程有喜悦有收获,现分系统架构、Index & Search、算法设计和前端MVC架构四部分总结。因实习内容属于公司内部机密,本博文只做设计思路上的记录和探讨,并不会涉及任何与公司利益相关的工作内容。
一、前瞻
所谓信息可视化(InformationVisualization)旨在研究大规模非数值型信息资源的视觉呈现,以及利用图形图像方面的技术与方法,帮助人们理解和分析数据。说白了,就是有些信息,其结构、类型比较复杂,信息量较大,各种数据之间的关系也很是纠结,无法或者很难直观地去用人工分析和理解信息所表达的含义。因为人对文字、数字类的东东并不敏感,但对图像、图表这些看的见的东东比较敏感,借助于信息可视化的技术,充分适当地对信息进行组织整理,使用表格、图形,图像展现数据、信息和知识,甚至提供足够好的交互,使得用户能够通过所见即所得(WYSIWYG)的方式分析、理解信息,洞察、定位隐含的漏洞或问题,发现形形色色的关系,理解在人工分析情况下不易发觉的事情,从而追根溯源地挖掘信息背景的问题与深层次原因。
信息可视化日益成为不同领域方向的关键要素:如科学技术研究工作,数字图书馆、数据挖掘、财务数据分析和市场研究、生产投靠过程的控制等。反观现在的互联网行业,如果说过去10年是搜索技术大行其道的10年,那么基于互联网应用所产生的海量数据、海量信息进行数据挖掘,以及大规模机器学习,从而分析、理解用户行为、用户喜好,并提供个性化、精确化的服务将成为未来10年最重要的技术和研究热潮之一。以数据和信息作为驱动而发展的时代,数据和信息将取代技术成为新的门槛和瓶颈。
然而,海量的信息是无法直观的使用人工进行甄别或分析,如何更为迅速快捷的定位和发现问题,信息可视化恰恰成为了处理这一尴尬的切入点。如机器学习过程中,训练出的模型即使能在样本集上跑出很好的效果,在真实数据集面前也未必能够达到理想的状态,这里面的原因一方面可能是由于样本集的选取不具备代表性,不能够客观地表征数据信息的分布,使得训练出来的模型泛化能力不足;另一方面可能是由于训练过程出现了过拟合现象,为了得到一致假设而使模型构造的极为精细和复杂,在样本集上进行良好,但切换到真实数据集上会就出现很多的问题。然而一个模型的训练需要依赖的信息量是海量的,同时训练过程大多很复杂。据我的了解,如某公司广告竞价排名训练所需的数据量为100T,训练时长为10小时左右,往往一个很琐碎的细节将导致整个训练过程的失败。即使在训练过程会输出很多的Log也无法很快地分析和发现问题的原因,如果能够提供一种可视化的方式,提供很多的辅助统计分析信息,则比人工直接去观察数据要高效的多。
二、需求
本文中与公司利益相关工作内容全部略去,抽象描述为:现有数据原料若干,类型各异、结构复杂,数据原料为机器学习算法的输入/输出,主要包括:特征描述信息Features File、输入数据信息Input File、人工标注样本信息HRS File和输出数据信息Decision Tree File。
训练过程概述:Features File & Input File & HRS File à Training à Model à Decision Tree File,即我们将训练得到的模型以一种特征的格式,写入到叫做Decision Tree的文件中,Decision Tree所描述是实际上是一种树形的结构。
需求:用信息可视化的技术,实现各种类型辅助信息的图形化展示,如(Features的分布情况、使用率)、Training相关数据统计分析、基于HRS的训练过程、Decision Tree的结构、不符合人工标注的结果等;提供良好的交互方式,如图形化的拖拽、缩放、点击,支持表达式级别的检索。
三、思考