2.2.1 交叉验证与网格寻优筛选模型
笔者认为,机器学习是一门理论的科学,亦是一
门实践的艺术。因此,在 NLP 特别是汉语言处理这
门比较新的领域,任何模型都不能随意地认定其优
劣。考虑到前人在这方面的研究较少,因此,本人将
从逻辑回归
4
、支持向量分类器(以下称 SVC)、决
策树、k 近邻算法(以下简称 kNN)、朴素贝叶斯分
类器、随机森林和 AdaBoost 中,筛选最合适的模型
以及模型参数。
在筛选模型之前,需要先筛选最佳的模型参数。
上述模型中,带有参数的模型分别为 SVC、决策树、
kNN、随机森林和 AdaBoost。如图3所示,K 折交叉
验证常用来评价一个模型在指定数据集中的优劣。其
将数据集复制成 K 份,记为 D
i
, i ∈ {1, 2, · · · , K}。
同 时 将 D
i
按 比 例 α% 拆 分 成 训 练 集、测 试 集,
α = 100/K。之 后 对 于 某 一 个 模 型, 通 过 K 折
训 练 集 训 练 K 个 分 模 型, 并 分 别 计 算 它 们 在 相
应的测试集中的拟 合 优 度,并构成拟合优 度 序 列
S
i
, i ∈ {1, 2, · · · , K}。
图 3. K 折交叉验证原理
根据序列 S
i
的均值
¯
S, 即可评价该模型在数据集
中的总体拟合优度。对于不同模型,可以分别根据
¯
S
最大,来筛选最优模型。对于同一模型的不同参数,
同样可以将其视为不同模型,并根据上述方法筛选。
为了筛选不同模型的最佳参数,可以通过遍历的
方法遍历模型参数的所有取值可能,再使用交叉验证
的方法筛选参数。然而,遍历法的代价实在太大。为
了降低计算机的运算负荷,可以适当地加大步长,并
参入人工因素选择。因此,本文采用网格寻优法,从
参数网格中筛选最优参数。
由于网格寻优法从参数网格中寻找最佳参数,从
这个意义上来说,网格寻优法可视为大步长、动态步
长、掺杂人工因素的遍历法。
2.2.2 模型及其参数的筛选结果与 T 检验
承上所述,为了选择最好的模型,首先需要筛
选模型们的参数。而需要选择参数的模型有 kNN、
SVC、决策树、随机森林和 AdaBoost。本文使用网
格寻优法,结合 5 折交叉验证,计算模型的 F1 值作
为 S
i
筛选模型,最终的结果如表1所示
5
。
表 1. 各模型的参数网格与筛选结果
模型 参数网格 最佳结果
kNN k
1
:(3,5,7,9,11) 3
SVC
C
2
: (0,0.1,0.25,0.5
,0.75,1,1.25,1.5,1.75,
2,3,4,5,6,7,8,9)
C= 0.1,
核函数:
线性函数
核函数:(线性函数、
径向基函数、
三次多项式函数)
决策树
最大深度 d:(7,9,
11,13,15,17,19,24,29,
34,39,44,49,54,59,64,
69,74,79,84,89)
d = 79,
α
cpp
= 0.0005
α
cpp
3
: (0.00025,
0.0005,0.001,
0.00125,0.015,
0.01,0.05,0.1)
随机森林
基模型个数:(15,
25,35,45,50,65,75,85,
95,100,150,200,250,
300)
75
AdaBoost
基模型个数:(15,
25,35,45,50,65,75,85,
95,100,150,200,250,
300)
15
1
这里不妨啰嗦一句,kNN 算法的 k 只能取奇数
2
即惩罚参数.
3
即最小代价复杂度剪枝处理的阀值
得到最佳参数后,再次使用 5 折交叉验证的方
法,计算 k = 3 的 kNN、C = 0.1 核函数为线性函数
4
正则化用于解决过拟合问题,然而考虑到这些模型的拟合优度均较低,因此不使用正则化
5
可以看到,参数网格由疏到密,这实际是渗入人工因素的结果,具体见2.4.3
4