一、评测标准
- 模型的测评标准:分类的准确度(accuracy);
- 预测准确度 = 预测成功的样本个数/预测数据集样本总数;
二、超参数
- 超参数:运行机器学习算法前需要指定的参数;
- kNN算法中的超参数:k、weights、P;
- 一般超参数之间也相互影响;
- 调参,就是调超参数;
1)问题
# 以kNN算法为例
- 平票:如果k个点中,不同类型的样本数相等,怎么选取?
- 如果选取的k个点中,数量多的一类样本点距离测试样本较远,数量少的一类样本点距离测试样本较近,此时选取数量较多的类型作为输出结果,不具说服力;
2)kNN算法中,除了K值外的另一个超参数:距离的权重(1/距离)
- k个点中,将不同类的点的权重相加,最大的那一类为目标标签
- scikit-learn库中的KNeighborsClassifier类中,还有一个weights()函数;
- 在__init__()中默认两个参数值:__init__(n_neighbors = 5, weights = 'uniform');
- weights = 'uniform',表示不考虑距离权重这个超参数;
- weights= 'distance',表示考虑距离权重这个超参数;
3)kNN算法的第三个超参数:P,距离参数
- P是有“明科夫斯基距离”得来的(详见“四、距离推导”),
- 只有当kNN算法考虑距离权重超参数(weights)时,才会考虑是否输入距离参数(P);
4)调参的方法
- 调参目的,找到最优的超参数;
- 机器学习算法应用在不同的领域中,不同领域内有其特有的知识
1、通过领域知识得到
# 不同领域内,遇到不同的问题,产参数一般不同;
# 领域:如自然语言处理、视觉搜索等;
2、经验数值
# 一般机器学习算法库中,会封装一些默认的超参数,这些默认的超参数一般都是经验数值;
# kNN算法这scikit-learn库中,k值默认为5,5就是在经验上比较好的数值;
3、通过试验搜索得到
- 思路:将不同的超参数输入模型,选取准确度最高的超参数;
- 试验搜索也称为网格搜索:对不同的超参数,使用对个for语句,逐层搜索;
- 试验搜索过程:以kNN