文章目录
摘要:在Task4中,我们对模型的优化都是通过对模型本身进行改进的,这很大程度上决定于经验,那么,有没有其他的办法找到最佳参数 λ \lambda λ呢?
参数与超参数的区别
参数
模型参数是模型内部的配置变量,其值可以根据数据进行估计。
- 进行预测时需要参数。
- 它参数定义了可使用的模型。
- 参数是从数据估计或获悉的。
- 参数通常不由编程者手动设置。
- 参数通常被保存为学习模型的一部分。
- 参数是机器学习算法的关键,它们通常由过去的训练数据中总结得出。
超参数
模型超参数是模型外部的配置,其值无法从数据中估计。
- 超参数通常用于帮助估计模型参数。
- 超参数通常由人工指定。
- 超参数通常可以使用启发式设置。
- 超参数经常被调整为给定的预测建模问题。
超参数调优的两个例子(sklearn)
在这里,我们使用支持向量机回归SVR,作为超参数调优的例子(这里结合了管道来调优)
# 引入相关科学计算包
import numpy as np
from sklearn import datasets
from sklearn.metrics import mean_squared_error
from lightgbm import LGBMRegressor
boston = datasets.load_boston() # 返回一个类似于字典的类
X = boston.data
y = boston.target
boston_data.head()
CRIM | ZN | INDUS | CHAS | NOX | RM | AGE | DIS | RAD | TAX | PTRATIO | B | LSTAT | Price | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.00632 | 18.0 | 2.31 | 0.0 | 0.538 | 6.575 | 65.2 | 4.0900 | 1.0 | 296.0 | 15.3 | 396.90 | 4.98 | 24.0 |
1 | 0.02731 | 0.0 | 7.07 | 0.0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2.0 | 242.0 | 17.8 | 396.90 | 9.14 | 21.6 |
2 | 0.02729 | 0.0 | 7.07 | 0.0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2.0 | 242.0 | 17.8 | 392.83 | 4.03 | 34.7 |
3 | 0.03237 | 0.0 | 2.18 | 0.0 | 0.458 | 6.998 | 45.8 | 6.0622 | 3.0 | 222.0 | 18.7 | 394.63 | 2.94 | 33.4 |
4 | 0.06905 | 0.0 | 2.18 | 0.0 | 0.458 | 7.147 | 54.2 | 6.0622 | 3.0 | 222.0 | 18.7 | 396.90 | 5.33 | 36.2 |
定义交叉验证分数:
from sklearn.model_selection import KFold, cross_val_score, GridSearchCV
def mse_cv(model=None,X_train=None,y_train=None):
kf=KFold(n_splits=10,shuffle=