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.
   87   88   89   90   91   92   93   94   95   96   97