第十章 实验结果 (Experimental Validation)

实验环境搭建

绝大多数计算机研究领域是需要由实验结果来验证以支持新方法的有效性的。因为计算机实验具备可重复性,即在给定的实验环境下,无论何时何地, 计算机运行的结果都是相同的。所以,实验结果章节需要详细地给出实验环境,实验数据以及操作过程,以便于其他研究人员重现实验结果。
基于以上原因,实验章节的第一部分一般是详细介绍实验环境搭建,数据准备和实验的操作过程。这其中包括:
  • 实验环境(软硬件环境)搭建。硬件包括:CPU型号,内存大小,硬盘型号,以及网络配置等。软件一般包括操作系统,实现新方法所使用的软件工具等。
  • 实验数据准备。实验数据需要给出数据的来源,数据大小(The size of datasets),和数据特点(例如:数据分布)等。 如果数据经过了预处理,则需要详细说明预处理的过程和预处理的必要性。真实的数据(Real-world datasets)需要给出数据来源; 合成的数据(Synthetic datasets)需要给出生成算法或者使用的生成工具。
  • 新方法的实现细节。例如,使用的编程语言以及重要的第三方代码库。
  • 比较方法实现的细节。如果是自行实现的,需要给出使用的编程语言和重要的第三方代码库。如果是下载的,则需要给出来源。
  • 简洁的介绍一下实验参数,以及其默认取值。
  • 介绍一下实验是如何组织开展的,以及后续实验章节的安排。
在实验部分,一个常见的问题是使用真实数据还是合成数据?一般来讲,这两种数据各有用途。 通常使用真实数据做出的结果更具有说服力。毕竟计算机是一门应用学科,它更注重于新方法在实际应用中的有效性。 然而,有时使用真实数据很难完全展示新方法的特点,或者获取真实数据存在一定难度。所以,在这类情况下,使用合成数据是一个较好的选择。 总而言之,在真实数据与合成数据的取舍当中,我们更应该从实验目的以及实验结果的展示效果着手,选择实验数据。

实验内容设计

在将实验的基本信息介绍清楚之后,接下来就是描述具体的实验结果了。实验结果一般会围绕几个不同的侧重点展开描述。 具体如何操作,应视研究内容而定。然后,它们之间有一些相通性。以下列举一些常见的实验内容,以供参考。
  • 测试输入数据的变化对新方法的影响(例如,改变数据大小,维度,分布等)。
  • 测试运行环境的变化对新方法的影响(例如,改变CPU处理能力,I/O速率,CPU个数等)。
  • 测试新方法中某数据结构变量对新方法的影响(例如,将二叉树的算法修改为三叉树算法等)。
  • 测试策略的变化对新方法的影响(例如,将最老优先替换策略修改为最少使用优先替换策略等)。
  • 比较分析章节给出的分析与实验运行的结果(例如,假如分析章节给出的分析结果是线性的时间复杂度,那么,这个分析结果应在实验结果中得到验证)。

实验制图

为了将实验结果有效合理的展示出来,实验作图工具必不可少。笔者常常使用gnuplot工具绘制柱状图,折线图,和三维折线图。 gnuplot是一个免费的作图工具。gnuplot作图过程由命令驱动,能画出多种多样的科学用图。本文着重介绍使用gnuplot工具生成柱状图、折线图和三维折线图。 在这里查看gnuplot的相关信息。
以下五个例子均生成eps文件格式的图片。eps图片是矢量图片,在论文中,可以任意放大和缩小而并不损失图片的清晰度。正是因为这个原因,论文中应尽量使用矢量图。

柱状图

柱状图常用于多方法之间比较某一个具体的值。这个值可能是运行时间、开销、距离等指标。如下例所示,该图比较了四种方法的执行时间。执行时间的单位为秒。 该图通过由柱状在Y轴的高度来体现方法的优劣。有时,柱状的高度差别很小,Y轴从原点开始,可能无法很好的显示方法之间的差异。所以,此时可只显示Y轴的某个区间(例如:[50-100])。
图 1. 柱状图。
在使用gnuplot绘制实验图时,笔者将gnuplot的绘制指令和绘制数据分别存放在两个文件中。例如,可将这两个文件命名为bar.dem和bar.data。 在存放这两个文件的目录中,执行"gnuplot bar.dem",则gnuplot会自动地生成图片文件bar.eps。这两个文件的内容如下。
bar.dem文件的前两行设置了文件输出的格式是eps格式,字体是Times-Roman,28号字。输出图片的文件名为bar.eps。 set xlabel和set ylabel分别设置X轴和Y轴的标签内容,以及使用的字体和字号。 set key设置了caption放在图片的左侧顶部。 set xrange和set yrange设置X轴与Y轴的取值范围。如果只显示X轴和Y轴的某一值域时,可在这个命令中设置。第一个字符井号#表示当前行被注释掉了。 set boxwidth设置柱状的宽度。set style则是设置柱状着色的样式。 plot命令是绘制图片的命令。它会根据当前已设置的状态,绘制出图片。第一个参数"bar.data"指明了数据存放在这个文件中, using指明了使用数据文件中第一栏和第三栏的数据绘制图片。xtic(2)则指明了使用第二栏数据作为柱状的名字。title设置了在caption中的名字。with boxes表示这是绘制的柱状图。
set term postscript enhanced eps font "Times-Roman, 28"
set output "bar.eps"
set ylabel "Execution Time (sec)" font ",36"
set xlabel "Methods" font ",24"
set key left top
#set xrange [0:1200]
set yrange [0:500]
set boxwidth 0.5
set style fill solid
plot "bar.data" using 1:3:xtic(2) title "Methods" with boxes
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
相对应的数据文件bar.data的内容如下。
0 "Method A" 100
1 "Method B" 150
2 "Method C" 75
3 "Method D" 350
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Histogram图

当使用柱状图展示某数据的总和时,可使用Histogram图将各部分的数据也展示出来。
图 2. Histogram图(例一)。
本例使用的是set style histogram rowstacked。gnuplot同时还支持columnstacked。rowstacked指的是,在数据文件中,按行叠加, 即在某行内的数据叠加在一个柱状上;而columnstacked指的是,按列叠加,即在某列内的数据叠加在一个柱状上。
set term postscript enhanced eps color font "Times-Roman, 28"
set output "bar-2.eps"
set boxwidth 0.6 absolute
set style fill solid 1.00 border lt -1
set key right top vertical Left reverse noenhanced autotitle columnhead nobox
set key invert samplen 2 spacing 1 width 0 height 0
set style increment default
set style histogram rowstacked title textcolor lt -1
set style data histograms
set xtics border in scale 0,0 nomirror rotate by -45 autojustify
set ylabel "Cost"
set title "Performance Evaluation"
plot "bar-2.data" using 2:xtic(1), for [i=3:4] "" using i
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
其数据文件内容如下。
Cost "CPU Cost" "I/O Cost" "Network Cost" Total
"Method A" 2500 680 100 3280
"Method B" 1300 540 100 1940
"Method C" 980 310 100 1390
"Method D" 1120 850 100 2070
"Method E" 520 1600 100 2220
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
另一种Histogram图常用于展示某数据的平均值。与此同时,该图还可以展示最大值与最小值。如下图所示。
图 3. Histogram图(例二)。
在本例中,使用了set style histogram errorbars。其他的设置与上述例子类似。
set term postscript enhanced eps color font "Times-Roman, 28"
set output "bar-3.eps"
set title "Performance Evaludation"
set boxwidth 0.9 relative
set style fill solid 1.00 border 0
set style histogram errorbars gap 3 lw 2
set style data histograms
set yrange [0:800]
set ylabel "Cost"
set bars 0.5
set key top left
plot "bar-3.data" \
using 2:3:4:xtic(1) ti "Method A" linecolor rgb "red", \
"" using 5:6:7 ti "Method B" lt 1 lc rgb "blue", \
"" using 8:9:10 ti "Method C" lt 1 lc rgb "green"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
其数据文件内容如下。在该文件中,第2-4栏,第5-7栏和第7-9栏分别包含了一组平均值、最大值和最小值。
"CPU" 200 250 190 57 80 30 42 50 20
"I/O" 400 450 300 209 220 130 159 180 120
"Network" 600 620 550 532 600 200 96 100 80
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

折线图

折线图是最为常见的一种用于展示实验结果的图型。因为折线图不仅能显示多个方法之间的差距,而且还可以展示随着某项指标的变化,各个方法的趋势和走向。 为了展示gnuplot的灵活性,下面的例子使用了四种颜色的曲线表示四种方法的执行时间,并且这四种曲线还使用了不同的样式以增强区别, 以便于使用黑白打印机的读者能够清晰辨认。黑白图片和彩色图片均能在论文中使用。而且越来越多的论文采用了彩色图片,因为使用彩色能更好的突出图片需要强调的内容。
图 4. 折线图。
与绘制柱状图类似,本例也将绘图命令和绘图数据分别存放在plot.dem和plot.data文件中。在指令文件plot.dem中,首先设置了输出图片的格式为eps,图片的全局字体为Times-Roman,28号字。 输出文件为plot.eps。然后,分别设置了X轴和Y轴的标签,caption放置在图片的左上角,设置X轴和Y轴的取值范围。这个例子的一个不同之处在于,由于Y轴的取值范围非常大, 这会导致曲线的某些取值点非常低,非常接近于X轴,致使读者无法分辨该点的取值。因此,在此例中,Y轴采用了对数显示的方法,即10,100,1000,10000等距的显示在Y轴上。 set logscale y 10指定了Y轴以10为底数的对数的显示方式。set format Y "10^{%T}"则设置了Y轴上各个标记点的值的显示格式。最后,plot命令绘制整个折线图。其中, 每一行表示绘制某一方法的样式。例如,第一行绘制Method A。Method A的数据出现在plot.data文件中的第一栏和第二栏,名字为Method A,该折线需要标记出取值点的位置(with linespoints), 并且设置折线的宽度为5,使用红色绘制。具体的参数设置方法请参考gnuplot手册。
set term postscript enhanced eps color font "Times-Roman, 28"
set output "plot.eps"
set ylabel "Execution Time (sec)" font ",28"
set xlabel "# of Objects (K)" font ",28"
set key left top
set xrange [0:1200]
set yrange [40:100000]
set pointsize 3
set logscale y 10
set format y "10^{%T}"
set xtics (200, 400, 600, 800, 1000)
plot "plot.data" using 1:2 title "Method A" with linespoints lc rgb "red" lw 5, \
"plot.data" using 1:3 title "Method B" with linespoints lc rgb "blue" lw 5, \
"plot.data" using 1:4 title "Method C" with linespoints lc rgb "green" lw 5, \
"plot.data" using 1:5 title "Method D" with linespoints lc rgb "orange" lw 5
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
相对应的数据文件plot.data的内容如下。第一栏为各方法在X轴上的取值,其余四栏则是各个方法在Y轴上的取值。
200 57 42 727 360
400 209 159 2749 1388
600 532 396 5919 2809
800 845 620 9830 4688
1000 1104 1091 16774 7041
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

三维折线图

在折线图的基础上,可使用三维折线图来展示当有两个参数同时变化时的各个方法的趋势和走向。与绘制折线图不同的是,一个数据文件仅包含一个方法的数据。 换句话说,当比较两个方法时,绘制三维折线图需要使用一个指令文件和两个数据文件,以此类推。 在本例中,它们是3d.dem,3d-1.data和3d-2.data。
图 5. 三维折线图。
本例的大部分指令与上述例子类似,X轴、Y轴和Z轴分别由两条命令设置标签、字体、字号和位置。offset character可在图片中设置标签文字的位置, norotate和rotate by可用于旋转标签的文字。Z轴使用对数方式展示。在最后,splot命令用来绘制三维折线图,每一行表示一种方法的曲线样式。
set term postscript enhanced color eps font "Times-Roman, 36"
set output "3d.eps"
set samples 20
set isosamples 75,75
set ticslevel 0
set view 60, 30, 1, 1
set clabel "%8.2f"
set key right top
set xlabel "X Axis"
set xlabel offset character 0, -1.8, 0 norotate
set ylabel "Y Axis"
set ylabel offset character 0, -2, 0 font "" textcolor lt -1 rotate by -270
set zlabel "Z Axis"
set zlabel offset character 6, 4, 0 font "" textcolor lt -1 norotate
set zrange [10:100000]
set logscale z
set logscale xy 2
set format z "10^{%T}"
set grid
splot "3d-1.data" using 2:1:3 title "Method A" with lines lc rgb "red" lw 3, \
"3d-2.data" using 2:1:3 title "Method B" with lines lc rgb "blue" lw 3
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3d-1.data的数据为:
1 1 137
1 2 244
1 4 396
1 8 606
1 16 634
2 1 244
2 2 628
2 4 950
2 8 1311
2 16 1408
4 1 396
4 2 950
4 4 1438
4 8 2060
4 16 2215
8 1 606
8 2 1311
8 4 2060
8 8 3712
8 16 6724
16 1 634
16 2 1408
16 4 2215
16 8 6724
16 16 7593
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3d-2.data的数据为:
1 1 57
1 2 85
1 4 125
1 8 170
1 16 175
2 1 85
2 2 189
2 4 263
2 8 348
2 16 321
4 1 125
4 2 263
4 4 345
4 8 492
4 16 452
8 1 170
8 2 348
8 4 492
8 8 492
8 16 907
16 1 175
16 2 321
16 4 452
16 8 907
16 16 1710
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
实战篇
实战篇根据笔者多年论文写作经验和审稿工作,总结了在论文撰写过程中的实战经验,并将其汇总于多个主题之中。笔者还从上千篇2018年发表的顶级会议和期刊论文中筛选了一些优秀的范例,以帮助读者更好地理解本篇中描述的写作技巧和细节。
由于论文所论述的问题以及应用场景不同,在论文中,作者可能会使用不同的写作方法。笔者需要指出的是,本文总结的是笔者对于论文写作的理解与经验,若读者有不同的方法或者实战经验,欢迎来信与笔者详细讨论。笔者在写作过程中,兢兢业业,力求完整无瑕。然而由于笔者水平有限,文中难免出现疏忽、遗漏或者错误之处,尚期读者不吝指正。若对本文有任何的建议和意见,请与我们联系。
若读者对实战篇的内容感兴趣,请登录后/免费注册后阅读全部内容。
上一章
下一章

注册用户登陆后可留言

Copyright  2019 Little Waterdrop, LLC. All Rights Reserved.