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


	从0开始的机器学习——knn算法篇(5)
[编程语言教程]

超参数和模型参数

技术图片

如何寻找最好的超参数?

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)

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

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 从0开始的机器学习——knn算法篇(5)