返回介绍

数学基础

统计学习

深度学习

工具

Scala

四、超参数优化

发布于 2023-07-17 23:38:23 字数 4712 浏览 0 评论 0 收藏 0

4.1 GridSearchCV

  1. GridSearchCV用于实现超参数优化,其原型为:

    
    
    xxxxxxxxxx
    class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None,verbose=0, pre_dispatch='2*n_jobs', error_score='raise',return_train_score='warn')
    • estimator:一个学习器对象。它必须有.fit方法用于学习,.predict方法用于预测,有.score方法用于性能评分。

    • param_grid:字典或者字典的列表。每个字典都给出了学习器的一个超参数,其中:

      • 字典的键就是超参数名。
      • 字典的值是一个列表,指定了超参数对应的候选值序列。
    • fit_params:一个字典,用来给学习器的.fit方法传递参数。

    • iid:如果为True,则表示数据是独立同分布的。

    • refit:一个布尔值。如果为True,则在参数优化之后使用整个数据集来重新训练该最优的estimator

    • error_score:一个数值或者字符串'raise',指定当estimator训练发生异常时,如何处理:

      • 如果为'raise',则抛出异常。
      • 如果为数值,则将该数值作为本轮estimator的预测得分。
    • return_train_score: 一个布尔值,指示是否返回训练集的预测得分。

      如果为'warn',则等价于True 并抛出一个警告。

    • 其它参数参考cross_val_score

  2. 属性:

    • cv_results_:一个数组的字典。可以直接用于生成pandas DataFrame 。其中键为超参数名,值为超参数的数组。

      另外额外多了一些键:

      • mean_fit_timemean_score_timestd_fit_timestd_score_time:给出了训练时间、评估时间的均值和方差,单位为秒。
      • xx_score:给出了各种评估得分。
    • best_estimator_:一个学习器对象,代表了根据候选参数组合筛选出来的最佳的学习器。

      如果refit=False,则该属性不可用。

    • best_score_:最佳学习器的性能评分。

    • best_params_:最佳参数组合。

    • best_index_cv_results_中,第几组参数对应着最佳参数组合。

    • scorer_:评分函数。

    • n_splits_:交叉验证的 k 值。

  3. 方法:

    • fit(X[, y,groups]):执行参数优化。
    • predict(X) :使用学到的最佳学习器来预测数据。
    • predict_log_proba(X) :使用学到的最佳学习器来预测数据为各类别的概率的对数值。
    • predict_proba(X) :使用学到的最佳学习器来预测数据为各类别的概率。
    • score(X[, y]) :通过给定的数据集来判断学到的最佳学习器的预测性能。
    • transform(X):对最佳学习器执行transform
    • inverse_transform(X):对最佳学习器执行逆 transform
    • decision_function(X):对最佳学习器调用决策函数。
  4. GridSearchCV实现了estimator.fit.score方法。这些方法内部会调用estimator的对应的方法。

    在调用GridSearchCV.fit方法时,首先会将训练集进行 $ MathJax-Element-23 $ 折交叉,然后在每次划分的集合上进行多轮的训练和验证(每一轮都采用一种参数组合),然后调用最佳学习器的.fit 方法。

4.2 RandomizedSearchCV

  1. GridSearchCV采用的是暴力寻找的方法来寻找最优参数。当待优化的参数是离散的取值的时候,GridSearchCV能够顺利找出最优的参数。但是当待优化的参数是连续取值的时候,暴力寻找就有心无力。

    GridSearchCV的做法是从这些连续值中挑选几个值作为代表,从而在这些代表中挑选出最佳的参数。

  2. RandomizedSearchCV采用随机搜索所有的候选参数对的方法来寻找最优的参数组合。其原型为:

    
    
    xxxxxxxxxx
    class sklearn.model_selection.RandomizedSearchCV(estimator, param_distributions, n_iter=10, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score='raise',return_train_score='warn')
    • param_distributions:字典或者字典的列表。每个字典都给出了学习器的一个参数,其中:

      • 字典的键就是参数名。

      • 字典的值是一个分布类,分布类必须提供.rvs方法。

        通常你可以使用scipy.stats模块中提供的分布类,比如scipy.expon(指数分布)、scipy.gamma(gamma分布)、scipy.uniform(均匀分布)、randint等等。

      • 字典的值也可以是一个数值序列,此时就在该序列中均匀采样。

    • n_iter:一个整数,指定每个参数采样的数量。通常该值越大,参数优化的效果越好。但是参数越大,运行时间也更长。

    • 其它参数参考GridSearchCV

  3. 属性:参考GridSearchCV

  4. 方法:参考GridSearchCV


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文