基于机器学习的可视化数学建模系统设计
2022-09-15王博
王 博
(西北大学 现代学院,陕西 西安 710130)
0 引言
随着互联网的发展,人们的生活和工作已经离不开数据的支持。因此,我国的信息产业在飞速发展的同时,带动了大数据时代信息的海量增加。人们已经被各种各样的数据包围。随着深度学习、大数据等新技术的兴起,移动电子产业快速发展。依托数学建模系统,人们可以在一定程度上提高工作效率,加强创新意识,开拓创新思维,培养创新精神,提高实践能力。数学建模为工作实践提供了一个平台[1]。
1 机器学习可视化系统的设计分析
1.1 系统完整性
为了开发基于机器学习的可视化系统,人们必须坚持系统设计完整性的原则,这是软件开发最重要的特征。可视化系统的完整性在于系统各个子模块之间的交互与协作,要想在负载的环境下运行可视化系统并实现系统所具有的功能,不仅是子模块功能的简单添加,而且是子模块之间的协作,使机器学习背景下的可视化系统中的各个子模块之间可以相互协作、相互补充。
1.2 系统可交互性
可视化的基本功能是让用户在短时间内获得界面数据所表达的信息。因此,在开发和设计可视化系统时,设计者应考虑用户交互性操作。该系统的开发侧重于过程,而不是机器学习可视化的结果。因此,为了让用户充分理解机器学习算法的上下文,为机器学习算法的每个阶段提供视觉支持。用户可以轻松地用鼠标与界面交互,当用户想知道界面上的按钮是什么意思时,可以将鼠标放在这个位置,然后鼠标会自动显示操作的相关信息[2]。该系统的主要目的是使用户能够更方便、简单地处理数据,从而有效地利用机器学习算法解决实际问题。
1.3 系统技术可行性
基于机器学习的可视化数学建模系统设计,本系统是采用Web界面的框架可视化技术。站在软件和硬件的角度对该技术的可行性进行分析,在系统的硬件中,绝大多数计算机都可以满足系统的发展;而在系统软件方面,用户随时随地都可以在网络和计算机设备的支持下,登录浏览器进行访问,使分析数据的显示方便灵活。根据具体需求和数据量,纯Web界面的可视化框架具有显著效果。在Web前端使用可视化框架可以大大缩短系统的开发周期。系统支持d3.js,JavaScript,jQuery,bootstrap等Web界面技术。此外,由于以下3个主要原因,Web前端应用程序变得越来越流行。
(1)使用方便,在网络环境下可以随时随地使用,且维护更便捷。
(2)轻量级代码量,简洁大方,具有较高的可拓展性,且学习成本较低。
(3)移动端的更新速度快,使应用程序的更新频率也更快。
2 机器学习可视化系统架构
该系统采用分层结构。分层架构设计方案旨在使开发人员能够实现每一层的功能,使逻辑更加清晰,降低系统耦合度,并最小化一层与相邻层之间的关系。同时,它也有助于未来的维护和修改。显示系统的结构如图1所示。系统架构自上而下分为5层,即可视化表示层、用户交互层、数据层、核心算法层以及基础平台层。除了专注于实现这一层结构外,每一层都应该调用下一层来提供自己的服务,而不知道实现过程,同时也应该为上级服务。分层设计可以使系统开发更加标准化,并促进层间的逻辑重用[3]。
(1)基础平台层:平台层主要包括主机、网络、编辑器等,系统主要为机器学习可视化系统提供软件环境与硬件基础设施。基础平台层是保障系统正常开发的关键所在。
(2)数据层:对于可视化系统来说,数据显示是非常重要的一个部分。数据显示首先需要实现数据采集,系统数据集有两个来源。用户可以点击可视画布区域,从而自动生成一些分散的数据;另一种方法则是在本地导入文本文件,用户通过数据导入模块来加载数据,然后采用编译功能对数据格式进行转换,从而生成可供显示系统使用的数据格式,如CSV,JSON等文本数据。
(3)核心算法层:系统的核心算法主要采用SVM机器学习算法来实现数据可视化。为了实现系统支持的显示功能,还可以自定义显示功能和算法,设计显示并完成数据操作。例如,使用各种数学函数(高斯核、线性核、矩阵乘法等),并构建一套可视化二维网格、导入、导出、提取和清空等。创建函数的可视化库,以实现程序执行期间直接调用的所有可视化函数。算法层可以通过系统的逻辑结构与下一层交互。
(4)可视化呈现层:根据相应的算法和颜色、大小、形状等不同的视觉元素,在画布上直观地显示网格中数据集的每个一维特征的详细信息,通过将分布式地图和热图结合进行可视化显示,可以直观地调整模型训练精度等评估参数,便于与数据交互[4]。
(5)用户交互层:这一层也被称为用户界面层,在机器学习可视化数学建模系统中位于最顶层。用户交互层的功能是负责实现系统和用户之间的交互,并且可以为用户提供友好、直观的视觉界面。用户可以在画布上单击生成数据,以直观地表示数据。此外,用户可以选择在本地加载数据源,然后在导航栏上设置一系列按钮,以交互方式处理数据以查看和分析数据,最后导出显示结果。
3 系统总体设计
3.1 数据管理模块设计
3.1.1 数据生成
数据是可视化数学建模系统中最关键,也是最基础的组成部分。数学建模系统的数据源包括数据的自动生成以及数据的导入,而用户可以在本地导入数据文件,从而显示机器学习数据,同时还可以在D3.js显示技术背景下,在画布上自动生成数据[5]。
3.1.2 数据导入
在可视化数据之前,在系统中导入外部数据文件。传统的可视化系统主要是通过内置代码在数据库内检索数据。这种独特的数据采集方法限制了数据流,降低了可视化系统的通用性。
3.1.3 数据导出
在可视化机器学习算法数据后,系统支持导出JSON或CSV文件格式的数据。对于JSON文件,首先对导出按钮关联监听事件,然后运行exportjson()函数,并调用ExportDataToJson()方法导出JSON字符串。最初的数据显示为数组形式,因此选择JSON.stringify vel方法来对JavaScript值(数组或对象)进行转换,使其成为JSON字符串,方便导出。
3.2 界面功能模块设计
基于Web前端开发可视化系统的界面,可视化数据通过CSS、HTML和JavaScript文件动态生成。经典CSS文件配置为界面显示,实现界面渲染,数据通过JavaScript加载到HTML页面。当用户点击界面中相应的按钮时,系统会通过HTML中相应的字符自动调用相应的JavaScript函数,实现相应的功能[6]。
3.2.1 图表类型
系统采用D3.js来实现可视化系统,D3.js可以提供多种图形和图表,使用D3.js绘制图形是免费的。用户可以根据自己的需要设置所需视觉图形。因此,系统建议使用两种可视化图形的组合来可视化数据。
(1)散点图显示系统绘制800~600 px范围内的散点图数据,生成的数据点位置完全随机。二维散点图可以有效地将两组多维属性值映射到一个坐标轴。在由二维轴确定的网格中,其他维度的属性值可以通过图形标签的不同视觉元素显示。例如,使用不同颜色、形状来表示离散或连续属性值。通过散点图的可视化,人们可以看到二维数据之间的清晰性、聚集性、正相关和负相关,并通过数据聚类得到一定的数据聚集密度。
(2)热力图可视化。利用不同矩形区域的颜色表示不同数据的可视化。热力图与分布图相结合,以显示给定区域内不同数据量之间的颜色差异,这具有一致的变化过程。为了创建热图,通常需要分析点以创建显示数据密度的插值曲面。整个图层采用样条梯度绘制,最终数据分析的视觉效果显著[7]。
3.2.2 工具栏
由于数学建模系统对可视化的需求,可通过设置按钮的方式来实现可视化界面功能。导航栏的活动、点击类型和模型分别设置在SVM算法数据可视化界面的右侧。在操作导航栏中,设置导入、导出、重置、撤销等按钮,分别表示数据导入、数据导出、画布清空、数据点删除等。在模型导航栏中,系统开发了相应的训练功能、评估和训练曲线,实现了数据训练过程、机器学习算法评估等。当用户在系统中点击按钮时,其功能会自动响应,系统会调用相应功能来满足用户的需求[8]。
3.2.3 D3.js绘图模块设计
采用D3.js前端可视化技术绘制图形的可视化方案流程,如图1所示。
图1 D3.js可视化方案流程
4 机器学习可视化数学模型系统的测试
本系统是基于机器学习的可视化数学建模系统,本系统的软件开发环境基于D3.js、JavaScript、jQuery等相关函数库。为了验证支持向量机的可视化算法,采用虹膜数据集。对于IRIS数据集,则通过保留法将数据分为测试数据和训练数据,分别占训练数据的70%和测试数据的30%。因为虹膜数据集有4个维度,所以数学建模系统利用虹膜的长度和宽度进行实验,将虹膜数据集的两个属性输入支持向量机的可视化界面。通过线性核函数、多项式核函数、高斯径向基函数对数据进行分类和可视化,并对不同的核函数进行比较。
对于SVM的可视化算法,系统支持多种参数调整。这些参数可以直接在模型工具栏上进行调整,然后在核选择表中选择不同的核函数,并将其作为分类操作的变量。首先,采用虹膜的线性核来训练Iris数据集。线性核的SVM的决策边界为直线边界,通过对A类和B类样本的分类,预测区域可以覆盖大部分数据,或者某些类别的数据点存在预测误差。非线性函数支持向量机(多项式核和径向高斯核)的边界确定是基于非线性边界曲线的。这些支持向量机的决策边界主要取决于不同的核函数和相应的核函数参数。此外,高斯核支持向量机的精度要比多项式核支持向量机更高,能够正确地对大多数数据点进行分类。
根据上述算法的结果,前端可视化参数的调整主要包括两个方面:(1)选择适合的核函数,如特征较多时,采用高斯核;但是高斯核需要不断调试才能获得完美的结果。(2)不断调整每个核函数的参数,并尝试通过多次调整找到最佳参数。
5 结语
综上所述,随着人工智能的飞速发展,通过机器学习平台可以获得合理的数学模型,从而更好地解决问题。机器学习平台通过创建和运行用于训练实验的数学模型来改进和验证数学模型,甚至多次重复这个过程,直到获得满意的模型项目,从而获得最终的数学项目。