从0开始的机器学习——knn算法篇
Posted xiyoushumu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从0开始的机器学习——knn算法篇相关的知识,希望对你有一定的参考价值。
超参数和模型参数
如何寻找最好的超参数?
1.领域知识 2.经验数值 3.实验搜索
也可以设置程序对k值进行筛选:
可以看出,对于手写数字数据集来说,最好的k值是4.
(如果获得的最好k值在循环边界处,那么需要稍微拓展一下搜索范围,可能会找到更好的k值)
knn算法还有一个重要的超参数就是——距离权重。通常用距离数值的倒数作为距离权重,这样距离越近权重越大。使结果更合理,也可以解决平票问题。
关于距离:目前算法中使用的距离计算公式是欧拉距离,还有一种计算距离的方式是曼哈顿距离。
图中绿色的线是欧拉距离。其他三个颜色的线条都可以表示曼哈顿距离。
对距离公式进行一些变形,就会发现规律:当p=1时就是曼哈顿距离,p=2时就是欧拉距离。这样就引出来了闵可夫斯基距离:
另一个超参数为p。
代码如下:
可以看出来这个搜索还是比较慢的,用了33s。最好的p值为2,即欧拉距离。
可以发现一些超参数之间是有依赖关系的,只有“ weights = distance ”时,p才纳入考虑范围。
这个搜索过程就像在一个p * k大小的网格内搜索最合适的一个点,形象描述为网格搜索。下一节介绍网格搜索。
以上是关于从0开始的机器学习——knn算法篇的主要内容,如果未能解决你的问题,请参考以下文章