机器学习:调整kNN的超参数

本文详细探讨了kNN算法中的超参数调整,包括k值、距离的权重(1/距离)和P(距离参数)。介绍了通过领域知识、经验数值和试验搜索来确定最优超参数的方法,并通过Python的scikit-learn库实现模型训练,以数字识别任务为例,展示了如何寻找最佳的k值、weights和P值,以提高分类准确率。
摘要由CSDN通过智能技术生成

一、评测标准

  • 模型的测评标准:分类的准确度(accuracy);
  • 预测准确度 = 预测成功的样本个数/预测数据集样本总数;

 

二、超参数

  • 超参数:运行机器学习算法前需要指定的参数;
  • kNN算法中的超参数:k、weights、P;
  • 一般超参数之间也相互影响;
  • 调参,就是调超参数;
 1)问题

  # 以kNN算法为例

  1. 平票:如果k个点中,不同类型的样本数相等,怎么选取?
  2. 如果选取的k个点中,数量多的一类样本点距离测试样本较远,数量少的一类样本点距离测试样本较近,此时选取数量较多的类型作为输出结果,不具说服力;
 2)kNN算法中,除了K值外的另一个超参数:距离的权重(1/距离)
  • k个点中,将不同类的点的权重相加,最大的那一类为目标标签
  1. scikit-learn库中的KNeighborsClassifier类中,还有一个weights()函数;
  2. 在__init__()中默认两个参数值:__init__(n_neighbors = 5, weights = 'uniform');
  3. weights = 'uniform',表示不考虑距离权重这个超参数;
  4. weights= 'distance',表示考虑距离权重这个超参数;
 3)kNN算法的第三个超参数:P,距离参数
  • P是有“明科夫斯基距离”得来的(详见“四、距离推导”),
  • 只有当kNN算法考虑距离权重超参数(weights)时,才会考虑是否输入距离参数(P);
 4)调参的方法
  • 调参目的,找到最优的超参数;
  • 机器学习算法应用在不同的领域中,不同领域内有其特有的知识
  1、通过领域知识得到

   # 不同领域内,遇到不同的问题,产参数一般不同;

   # 领域:如自然语言处理、视觉搜索等;

  2、经验数值

   # 一般机器学习算法库中,会封装一些默认的超参数,这些默认的超参数一般都是经验数值;

   # kNN算法这scikit-learn库中,k值默认为5,5就是在经验上比较好的数值;

  3、通过试验搜索得到
  • 思路:将不同的超参数输入模型,选取准确度最高的超参数;
  • 试验搜索也称为网格搜索:对不同的超参数,使用对个for语句,逐层搜索;
  • 试验搜索过程:以kNN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值