zoukankan      html  css  js  c++  java
  • ITTC数据挖掘平台介绍(四) 框架改进和新功能

    本数据挖掘框架在这几个月的时间内,有了进一步的功能增强

    一. 超大网络的画布显示虚拟化

        如前几节所述,框架采用了三级层次实现,分别是数据,抽象Node和绘图的DataPoint,结构如下:

    image

         在界面显示部分,之前并没有做过虚拟化优化,为了实现更多的功能,通过大量的事件挂接和其他操作将显示的控件与底层数据紧密耦合,因此内存回收机制几乎不起什么作用(原因见我另外一篇博客-事件的迷惑)。另外,绘图控件包含很多可视化元素。这样的恶果便是当点的数量增大时,内存占用量也急剧增大,1万点时,就会占用1GB内存,反应迟缓,性能很差。

        为了解决这个问题,我们采用了虚拟化技术。其核心技术是通过WPF的Listbox内部的VirtualStackpane内置的内存回收机制,仅保存需要在界面上显示的功能。设计参考了Kael Rowan的ZoomableCanvas。有兴趣的同学可以去他的博客看下实现,此处不做赘述。我们使虚拟画布同样实现原有的接口,上层应用可以不关心具体实现的细节。

        经过这项改进,我们的画布可以在1.3s内加载10W点的复杂网络模型(JSON数据经过Zip压缩),并通过虚拟化显示出来:如下图:

    image

       当视觉焦点不在该范围内时,该范围内的节点和线会自动回收,其他点会自动生成。这样做的好处是节省内存,代价是CPU占用率不低,因为反复做着内存回收和申请,以及界面重绘的工作

    image

       通常的建议是,ZoomableCanvas内部有属性:RealizationLimit="3000", RealizationRate="100",分别代表页面中最多的点的数量,以及每次刷新增加/删除的点数量。可以根据机器配置自动适配。

       理论上,画布可以支持任意数量的点的显示,而不考虑内存的限制,但不能超过int32.MaxValue.

    二. 复杂网络生成

        我们为了研究复杂网络行为,专门添加了复杂网络生成模块,该模块可以根据用户需要生成不同大小,模型和参数的网络结构,方便用户研究和分析网络:它实现了INetworkGenerator接口。

    imageimageimage

    复杂网络生成可按照“网络规模”参数和连接概率生成网络结构,内置了BA网络,复杂网络模型,WS网络模型等常用的模型。生成效果如下图:

    image

      三. 改进的布点算法和筛边策略

         由于网络规模不断增大,需要更好更快的布点算法,我们经过博采众长,框架中集成了多达5种不同用途的布点算法,LargeScale算法可在半小时内处理高达50万节点的布点问题. ForceIndicate算法可在牺牲一定速度的基础上获得更好的效果,另外的一些方法可较好的处理权重网络(边强度越大,联系越紧密,位置越近)。用户可通过选择菜单,选取不同的布点算法。

         同时,可勾选3D选项,布点即可在3D情况下计算实现。

         下面是ForceIndicate算法计算微博传播网络时绘制的效果,1000点,用时30s:

    imageimage

          四. “任务”工具菜单

          虽然平台拥有完整的算法组装的机制,但对普通用户来说,拖拽算法并配置的操作依旧复杂。在此基础上,我们开发了针对“任务”的工作方式,如下图所示:

    image

        用户切换到任务视图,选中某个任务点击加载,系统即可自动按照任务配置,加载所有算法模块,完成组装工作并设置参数,用户点击运行即可。

        同时,您也可以将某个计算列表保存成一个新的任务:

       image

       并修改任务名称和任务描述等:

    image

    这样,其他人就可方便的重用您的设置,只需选取数据源并运行即可。

      五. 其他改进

    1.增加MongoDB连接器界面,用户可更方便的从MongoDB中读取和检索数据。

    2.改进配色,采用纯灰色调,使用户更关注于任务而非工具本身。

    3. 工作流优化:一个数据链,当某个模块的配置被更改时,只有算法下游的模块才会被重新计算。这样大大减少了系统运行的时间。

    4. 增加大规模聚类算法,万点处理速度仅需1秒。

     

    欢迎您继续关注我们数据挖掘工具软件的开发情况。

  • 相关阅读:
    个人推荐网上商店
    vs 安装程序制作
    this linker was not configured to use sysroots和C compiler cannot create executables的解决办法
    将asihttprequest编译后的目标文件打包
    cygwin下的gcc4.7.1编译心得
    给ubuntu12.04换3.4.6的内核
    boost::asio::streambuf相关的操作方法
    应用boost库serialize标准库里的map
    cygwin下gdb7.4编译
    sql server存储过程分页,支持cte
  • 原文地址:https://www.cnblogs.com/buptzym/p/3191386.html
Copyright © 2011-2022 走看看