码迷,mamicode.com
首页 > 编程语言 > 详细

从0开始的机器学习——knn算法篇(5)

时间:2020-07-16 12:24:54      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:参数   style   关于   之间   技术   数据   distance   com   ash   

超参数和模型参数

技术图片

如何寻找最好的超参数?

1.领域知识   2.经验数值  3.实验搜索

也可以设置程序对k值进行筛选:

技术图片

技术图片

可以看出,对于手写数字数据集来说,最好的k值是4.

(如果获得的最好k值在循环边界处,那么需要稍微拓展一下搜索范围,可能会找到更好的k值)

knn算法还有一个重要的超参数就是——距离权重。通常用距离数值的倒数作为距离权重,这样距离越近权重越大。使结果更合理,也可以解决平票问题。

关于距离:目前算法中使用的距离计算公式是欧拉距离,还有一种计算距离的方式是曼哈顿距离。

技术图片

技术图片

图中绿色的线是欧拉距离。其他三个颜色的线条都可以表示曼哈顿距离。

技术图片

对距离公式进行一些变形,就会发现规律:当p=1时就是曼哈顿距离,p=2时就是欧拉距离。这样就引出来了闵可夫斯基距离:

技术图片

另一个超参数为p。

代码如下:

技术图片

可以看出来这个搜索还是比较慢的,用了33s。最好的p值为2,即欧拉距离。

可以发现一些超参数之间是有依赖关系的,只有“  weights = distance ”时,p才纳入考虑范围。

这个搜索过程就像在一个p * k大小的网格内搜索最合适的一个点,形象描述为网格搜索。下一节介绍网格搜索。

从0开始的机器学习——knn算法篇(5)

标签:参数   style   关于   之间   技术   数据   distance   com   ash   

原文地址:https://www.cnblogs.com/xiyoushumu/p/13321613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!