Page 92 - 《软件学报》2021年第12期
P. 92
3756 Journal of Software 软件学报 Vol.32, No.12, December 2021
甚至可能达不到学习的目的.相比之下,SVM 虽然缺乏对数据的敏感度,但可以解决高维和非线性问题,而且在
提高了泛化性能力的基础上,可以解决小样本情况下的机器学习问题,避免了神经网络结构选择和局部极小点
的情况.
由于本文的数据集较小,不适合用人工神经网络进行分类,且存在类别样本数分布不均的问题,例如在 API
数据集中,仅样本数排名第一的 Tools 类与样本数排名第十的 Science 类就相差了 503 个样本数,所以决策树和
K-近邻算法在本文中也不适用.综合考虑之下,我们最终选择 SVM 算法进行分类.具体步骤如下.
n
• 首先,对于 k(k≥2)类问题,我们根据得到的表征向量和已知的数据构建样本集(x 1 ,y 1 ),…,(x l ,y l ),x i ∈R ,
i=1,…,l,y i ∈{1,…,k},l 表示样本数;
• 然后,把类 1 作为一类,其余 k−1 类视为一类,自然地将 k 分类问题转化为二分类问题,在训练过程中,每
个分类函数都需要所有样本参与.其分类函数为
n
j
f ()x = arg j∈ {1,..., }∑ (α i j y K ( ,x x i j ) b+ j ) (5)
k
i
i= 1
j
j
其中,上标表示第 j 个 SVM 分类器的决策函数,α 和 y 分别为第 j 个支持向量的参数和类别标号,b j
i i
为偏移量.对于待测样本,若:
j
l
f (x)=max j∈{1,…,k} f (x) (6)
则输入样本属于第 l 类;
• 最后,对所有样本执行上述操作即可完成所有分类任务.
2 实验评估及分析
2.1 数据集描述及处理
为评估模型,我们从 ProgrammableWeb.com 网站上爬取了 6 415 个 Mashup 和 12 919 个 API 的信息,包括
他们的名称、描述文档、主次分类等信息,基本的统计信息见表 1、表 2,完整的数据集可以在 http://kpnm.hnust.
cn/xstdset.html 网址上进行下载.
Table 1 Data statistics of Mashup
表 1 Mashup 数据统计信息
Items 值
Mashup 的个数 6 415
Mashup 的类别数 324
平均每个类别包含的 Mashup 个数 19.8
平均每个 Mashup 拥有的标签数 3.16
Mashup 调用的 API 数 1 471
Table 2 Data statistics of API
表 2 API 数据统计信息
Items 值
API 的个数 12 919
API 的类别数 383
平均每个类别包含的 API 个数 33.7
平均每个 API 拥有的标签数 3.85
被 Mashup 调用的 API 数 1471
在爬取的数据中,类别为“Search”的 Mashup 就有 306 个,而类别“Cities”中仅仅包含了一个 Mashup.同样,类
别为“Tools”的 API 有 790 个,而类别“Solar”中仅仅包含了一个 API.因此,我们选取了数量最多的前 10~50 类
Mashup 和 API 用于实验,详细的分布情况请见表 3、表 4.