寻找超参数

机器学习领域,在确定好算法之后,也需要确定这个算法需要哪些参数,比如像线性函数那样,y=ax+b 需要确定a和b的值,算法中很多参数也是需要不断摸索才能确定出一个最好的数值,这里就会有两个概念

  1. 超参数,算法运行之前需要确定的参数
  2. 模型参数,算法过程中需要确定的参数

这里先记录寻找超参数的方法,会以knn算法为例

为了找出一个机器学习算法中最合适的参数,我们大部分会使用三种方式

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

至于前两种,需要很多业务知识和行业经验,这里就不记录了,重点记录下实验搜索这一部分

仍然以knn为例,其实实验搜索的过程就是参数遍历的过程

sklearn中的KNeighborsClassifier()函数中有几个参数是可以设置的

weights : str or callable, optional (default = ‘uniform’)

weight function used in prediction. Possible values:

  • ‘uniform’ : uniform weights. All points in each neighborhood are weighted equally.
  • ‘distance’ : weight points by the inverse of their distance. in this case, closer neighbors of a query point will have a greater influence than neighbors which are further away.
  • [callable] : a user-defined function which accepts an array of distances, and returns an array of the same shape containing the weights.

p : integer, optional (default = 2)

Power parameter for the Minkowski metric. When p = 1, this is equivalent to using manhattan_distance (l1), and euclidean_distance (l2) for p = 2. For arbitrary p, minkowski_distance (l_p) is used.

KNN是通过计算距离来确定需要预判的特征是属于哪一种类型,不过如果仅仅只是通过距离来判断必然是缺乏数学逻辑的,因为事实上将特征数值进行分类,就涉及到好几种分类方法,而sklearn中,KNN算法也加入了几种数学特征来精确最后所得出的预判结果的准确性

weights是权重,KNN中会将需要分类的特征跟其他有标签的特征进行比较,而其实,虽然对每一个特征都计算了距离,但是有些特征的权重会更大,这也会影响最后的结果

p就是要将我们的距离公式,也就是欧拉距离变形成其他距离公式,比如曼哈顿距离和尼可夫斯基距离,这里就不详细记录了

这两个参数是我们主要需要确定下来的

怎么确定呢,其实很简单,weights主要会用到uniform和distance两个参数,uniform就是不考虑权重,distance就是将权重和距离来挂钩,而p是1到正无穷的整数值

然后就开始循环遍历,通过循环权重 ["uniform", "distance"]和range(1,11),我们就可以遍历weights和p的某些数值以求出其中最好的结果

这里可以看到,p的值是range(1,11),为什么这么设置呢,理论上p可以是任意的正整数,不过我们是不可能遍历所有的数值,那么我们只能一点点的尝试,如果p最佳的数值是落在1-10中,那么基本可以说,p的最佳数值是在1-10中了,因为KNN是线性变换的,但是如果落在11,那么p就要尝试10-21的数值,这样一点点尝试,试出最佳数值,这也是实验搜索的一部分

 

那么在sklearn也有相应的函数可以调用,model_selection 中的GridSearchCV,也就是网格搜索,可以想象出,如果将weights和p分别作为表的横表头和竖表头,而我们需要做的就是尝试表格里面的所有数值,也就是网格搜索

其中GridSearchCV中的n_jobs参数,最好是跟自己电脑的cpu核数一致,多了只会排队,少了运算很慢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值