04-超参数

超参数

  超参数:可以简单的理解为运行机器学习算法之前需要指定的这个参数,kNN 算法中的 k 就是一个最为典型的超参数。

  与超参数相对应的还有一个模型参数模型参数是在算法过程中学习的参数。前面我们所学习的 kNN 算法没有模型参数,只有超参数,k 就是一个典型的超参数。后面要学习的线性回归法和逻辑回归法都包含有大量的模型参数,到时候就可能会对模型参数有更深刻的理解。

  下面,我们将对超参数进行学习。

  我们可能会听过机器算法工程师要做的一个很重要的工作就是调参。通常来讲,调参调的这个参数就是超参数,因为它是在算法运行前就需要我们决定的参数。

  那么,通常我们怎么寻找一个好的超参数?首先,由于机器学习算法是要应用在不同的领域中,那么在不同的领域中领域的知识是有意义的,通常在不同的领域中面对不同的问题那个最好的超参数可能是不一样的,而这个最好的超参数是可以通过这个领域的知识所得到的。

  那么另外一点就是经验数值。对于很多问题有很多比较好的经验数值被人们所采用,很多机器学习的库中有很多默认的数值,通常这些默认的数值都是相对来讲比较好的一个经验数值。比如在 sklearn 中 kNN 算法中的 k 默认是5,那么这个5就是经验上 kNN 算法比较好的一个数值,但是即使如此,面对具体要处理的问题,还是有可能最好的解决你这个问题的超参数是和经验数值不一样的。那么在这种情况下,我们就可能只能使用实验搜索这样的方式。

  换句话说,我们尝试测试几组不同的超参数。比如说,我们对不同的 k 的值进行测试,最终来取效果最好的 k 的值作为我们实际模型所使用的超参数的值。

  下面我们具体实验一下,寻找最好的 k。

在这里插入图片描述
在这里插入图片描述

  其实 kNN 算法中,不止 k 这么一个超参数,还潜藏着一个非常重要的超参数。

  到现在为止,对于 kNN 算法,比如 k = 3,我们就找到离判断的这个点(绿色)最近的三个点,如下图为1个红色,2个蓝色,然后进行投票,蓝色:红色=2:1,所以蓝色获胜。
在这里插入图片描述

  这个过程我们只考虑了离绿色节点最近的三个节点,可是却忽略了最近的三个节点相应的距离,其实绿色节点离红色节点最近,那么是不是在这种情况下,离红色的节点的权重是不是要比蓝色节点的权重更重,那么这就是 k 近邻算法的另外一种用法,就是考虑距离的权重。通常而言,我们考虑的距离的权重是将这个距离的倒数作为权重,相应的,距离越近,倒数就越大,相应的权重也就越大。所以在这种情况下,我们计算一下,红色为1,蓝色为 1/3+1/4=7/12,红色更大,所以红色胜出。
在这里插入图片描述
  如果我们考虑了距离,其实还有另外一个优点,我们之前一直没有谈一个问题,就是我们使用普通的 k 近邻算法的话,比如说,k=3,如果分类的样本数最终也有3类的话,就会产生一个平票的情况,那么普通的 k 近邻算法就只能随机的选取一个结果,那么显然是不合理的。而当我们考虑了距离之后,就可以非常好的解决平票的问题。
在这里插入图片描述

下面我们用代码来实现。

在这里插入图片描述


更多关于距离的定义

  之前我们在我们的 kNN 算法中谈到了欧拉距离
在这里插入图片描述
  那么,还有一个非常著名的距离为曼哈顿距离。(即两个点在每个维度上的差值,即在x轴上的差值加上在y轴上的差值)
在这里插入图片描述
  上图中红色、紫色、黄色的线距离都是相同的,为曼哈顿距离,绿色的线代表欧拉距离。

  我们可以发现曼哈顿距离和欧拉距离在形式上是有一定相似的,通过下面推导,我们可以推导出明可夫斯基距离(Minkowski Distance)。

在这里插入图片描述
  那么在这种情况下,我们相当于又获得了一个新的超参数 p。对于明可夫斯基距离 p 大于等于3的时候,这个距离具体表达数学上的意义是什么,我们就不深究。

下面我们使用代码来实现。

在这里插入图片描述


具体代码参考05 超参数.ipynb

猜你喜欢

转载自blog.csdn.net/qq_41033011/article/details/108967700