精华内容
下载资源
问答
  • 优化参数

    2020-12-20 13:44:12
    第一个区的第一个块段头块(segmentheader)。其中一些块(第4、9、10、19和21块)被缓存在高速缓存中。一个数据库进程对这个段执行一次串行的全扫描(并行全扫描有其特殊的行为,将在后面介绍),并不能通过一次单独的...

    跟其他段一样,它由若干个区(

    extent

    )组成(在本例中,是两个区)

    ,每个区由若干个块组成(在本例中,是

    16

    个块)

    。第一

    个区的第一个块为段头块(

    segment header

    )

    。其中一些块(第

    4

    9

    10

    19

    21

    块)被缓存在高速缓存中。一个数据库进程对这个

    段执行一次串行的全扫描(并行全扫描有其特殊的行为,将在后面介绍)

    ,并不能通过一次单独的物理读就完成。即使初始化参数

    db_file_multiblock_read_count

    的值被设置为

    32

    或者更大也不能。

    如果初始化参数

    db_file_multiblock_read_count

    被设置为

    8

    ,将会造成如下的物理读过程。

    一个单块(

    single-block

    )读获取段头(块

    1

    )

    一个多块(

    multiblock

    )读得到两个块(块

    2

    3

    )

    。不能一次读更多的块因为块

    4

    被缓存。

    一个多块读读取

    4

    个块(从块

    5

    到块

    8

    )

    。不能读更多的块因为块

    9

    被缓存。

    一个多块读读取

    6

    个块(从块

    11

    到块

    16

    )

    。不能读更多的块因为块

    16

    是一个区的最后一个块,不能跨区读。

    一个多块读读取

    2

    个块(块

    17

    和块

    18

    )

    。不能读更多的块因为块

    19

    被缓存。

    一个单块读块取块

    20

    。不能读更多的块因为块

    21

    被缓存。

    一个多块读读取

    8

    个块(从块

    22

    到块

    29

    )

    。不能读更多的块因为初始化参数

    db_file_multiblock_read_count

    被设置为

    8

    一个多块读读取

    3

    个块(从块

    30

    到块

    32

    )

    总之,这个进程共进行了两个单块读和六个多块读。平均每个多块读的块数约为

    4

    。平均每次读块的数目小于参数设置值

    8

    的事

    实,解释了

    Oracle

    在计算系统统计信息时引入变量

    mbrc

    的原因。

    在此,

    了解查询优化器如何计算多块读的开销也是很重要的

    (比如,

    在全表扫描或快速全索引扫描时)

    就像

    Wolfgang Breitling

    在他的文章“

    A Look Under the Hood of CBO: The 10053 Event

    ”中指出的那样,当系统统计信息不可用时,这个开销可用下列公式

    来近似地计算。

    展开全文
  • 原标题:一文详解超参数调优方法©PaperWeekly 原创 · 作者|王东伟单位|Cubiz研究方向|深度学习本文介绍超参数(hyperparameter)的调优方法。神经网络模型的参数可以分为两类:模型参数,在训练中通过梯度下降...

    原标题:一文详解超参数调优方法

    ©PaperWeekly 原创 · 作者|王东伟

    单位|Cubiz

    研究方向|深度学习

    本文介绍超参数(hyperparameter)的调优方法。

    神经网络模型的参数可以分为两类:

    模型参数,在训练中通过梯度下降算法更新;

    超参数,在训练中一般是固定数值或者以预设规则变化,比如批大小(batch size)、学习率(learning rate)、正则化项系数(weight decay)、核函数中的 gamma 等。

    超参数调优的目标通常是最小化泛化误差(generalization error),也可以根据具体任务自定义其他优化目标。泛化误差是指预测未知样本得到的误差,通常由验证集得到,关于验证集可以参阅 Cross-validation (statistics). Wikipedia.。

    调优的方法如网格搜索(grid search)、随机搜索(random search)、贝叶斯优化(bayesian optimization),是比较常用的算法,下文将作介绍。其他算法如基于梯度的优化(gradient-based optimization)、受启发于生物学的进化算法(evolution strategy)等,读者可以自行了解。

    网格搜索 Grid search

    网格搜索就是遍历所有可能的超参数组合,找到能得到最佳性能(比如最小化泛化误差)的超参数组合,但是由于一次训练的计算代价很高,搜索区间通常只会限定于少量的离散数值,以下用一段伪代码说明:

    deftrain(acf, wd, lr):

    优化目标函数得到模型M

    由验证集得到泛化误差e

    returne

    learning_rate = [ 0.0001, 0.001, 0.01, 0.1]

    weight_decay = [ 0.01, 0.1, 1]

    activation = [ 'ReLU', 'GELU', 'Swish']

    optimum = { 'error': 1e10}

    # grid search

    foracf inactivation:

    forwd inweight_decay:

    forlr inlearning_rate:

    error = train(acf, wd, lr)

    iferror < optimum[ 'error']:

    optimum[ 'error'] = error

    optimum[ 'param'] = {

    'acf': acf,

    'wd': wd,

    'lr': lr

    }

    随机搜索 Random search

    随机搜索在预先设定的定义域内随机选取超参数组合。实验证明随机搜索比网格搜索更高效,主要原因是随机搜索可以搜索连续数值并且可以设定更大的搜索空间,因此有几率得到更优的模型。另外,对于仅有少数超参数起决定性作用的情况,随机搜索对于重要参数的搜索效率更高。

    如图 1,假设参数 2 几乎对优化目标没有影响,而参数 1 很重要,在同样进行 9 次采样的搜索中,网格搜索实际上仅对参数 1 采样了 3 次,而随机搜索为 9 次。关于随机搜索的实验可以查阅论文 Random Search for Hyper-Parameter Optimization. James Bergstra, Yoshua Bengio. 2012.。

    ▲ 图1

    贝叶斯优化 Bayesian optimization

    给定一组超参数,为了计算相应的模型泛化误差,我们需要进行一次完整的模型训练,对于大型的深度学习模型可能需要花上几个小时的时间。注意到网格搜索和随机搜索中,不同的超参数采样是相互独立的,一个直接的想法是,能否充分利用已采样数据来决定下一次采样,以提高搜索效率(或者说减少采样次数)。

    早在 1960 年,就有科学家 Danie G. Krige 用类似的方法用于金矿分布的估计,他用已开采的少数矿点对金矿分布进行建模,后来这类方法被称为 Kriging 或高斯过程回归(Gaussian process regression, GPR)。

    本文将介绍基于高斯过程的贝叶斯优化,其他类型的贝叶斯优化算法将在文末作简要总结。此外,本文关于 GPR 的数学原理部分参考了 MIT 出版的 Gaussian Processes for Machine Learning. C. E. Rasmussen, C. K. I. Williams. 2006(下文简称GPML),读者可自行查阅。

    3.1 算法简介

    超参数优化可以视为求解泛化误差的极值点:

    其中, 为训练集和验证集, λ为带参数模型。

    以下为了方便讨论并且与相关领域的论文保持一致,我们用 表示待优化的目标函数,并且假设我们的目标是求极大值:

    贝叶斯优化的算法如下:

    可以看到,贝叶斯优化每次迭代都充分利用历史采样信息得到新的采样点,采样函数 的目标是让新的采样点尽可能接近极值点,因此,贝叶斯优化有可能以更少的采样得到优化结果。

    GP 模型可以理解为函数,不过其对于未知输入 的预测不是一个确定的数值,而是一个概率分布。对于给定的 , 将得到正态分布的均值 μ和方差 σ,也就是说, 将给出目标函数值 的概率分布,即 μ σ。

    图 2 为 3 次采样后(也就是已知样本数量为 3)GP 模型拟合结果的可视化,样本输入为 1 维,其中黑色曲线为均值 μ,蓝色区域为一个标准差的置信区间。

    ▲ 图2,源:https://arxiv.org/abs/1012.2599

    3.2 高斯过程

    具体地,我们假设随机变量集合 为高斯过程,其由均值函数(mean function) 和协方差函数(covariance function) 定义:

    其中:

    通常我们假设均值函数为常数 。协方差函数的常见选择是平方指数(squared exponential,SE)函数,也叫高斯核:

    容易发现,上述协方差函数描述了不同输入之间的距离,或者说相似性(similarity)。对于回归或者分类问题,一个合理的假设是,距离较近的输入 x 有相近的目标函数值(或者类别标签)y,比如在分类问题中,距离测试样本更近的训练样本将提供更多关于测试样本类别的信息。可以说,协方差函数“编码”了我们对目标函数的假设。

    现在,假如我们有了一些观测数据 ,其中, 。令 ,根据高斯过程的性质, 和测试样本 服从联合高斯分布:

    其中, 是元素值全为 1 的向量。 为格莱姆矩阵(Gram matrix)。

    可以证明,对于服从联合高斯分布的随机向量 和 ,

    有:

    因此:

    到这里,我们几乎完成了贝叶斯优化的 GP 模型拟合部分,接下来,还需要作一些调整。

    3.3 观测值噪声

    在实际的项目中,目标函数的观测值 通常带有随机噪声 ϵ,即:

    一般来说,我们可以假设噪声服从零均值高斯分布, ϵ σ,并进一步假设不同观测样本的噪声独立同分布,因此对于带噪声的观测样本,其关于协方差函数的先验变成:

    注意到我们增加了参数 σ,表示目标函数的方差。

    容易得到:

    其中, 为单位矩阵, , σ, σ。

    进一步得到:

    3.4 GP模型的超参数

    注意到,以上关于 概率分布的预测包含参数 σ σ,我们称之为 GP 模型的超参数。需要指出的是,GP 模型是一种非参数(non-parametric)模型(这里的参数应该类比神经网络的权重和偏置),超参数是独立于模型拟合过程的自由参数。

    回顾对于目标函数 的先验假设:

    在无观测数据的情况下,符合该先验的函数构成一个函数集合。通过多元高斯分布采样(参阅[GPML, Appendix A, A.2]),我们可以得到 σ时, 关于 的一种采样结果(考虑到可视化的便利性, 为 1 维),并由插值方法得到函数曲线,如图 3:

    ▲图3

    可以看到 l 与采样函数随着 变化的剧烈程度有关。关于其他超参数如何影响 GP 模型的探讨,请参阅 [GPML, Chapter 5]。

    通过最大化边缘似然(marginal likelihood) ,可以得到 GP 模型超参数的最优值,通常称该方法为极大似然估计(maximum likelihood estimate, MLE)。 为观测数据, 之所以被称为边缘似然来源于其积分表达式:

    我们可以通过高斯分布的性质得到上述积分结果,不过我们已经从上文得到观测值服从高斯分布:

    即:

    取 log 得到:

    其中, 为矩阵行列式, σ。

    可以看到 仅仅取决于均值常数 ,矩阵 的参数 和随机噪声 σ。我们把 σ统一表示为 ,其中 表示 。由相关的矩阵求导公式(参阅 [GPML, Appendix A, A.3]),容易求得 │关于 的梯度:

    其中, , 。

    此外,容易得到:

    其中, , 表示第 列的列向量。

    接下来我们可以通过类似梯度上升的优化算法得到最优参数值。

    其他 GP 模型的超参数优化方法,如极大后验估计(maximum a posteriori, MAP)和完全贝叶斯估计(fully Bayesian) 可参阅 A Tutorial on Bayesian Optimization. Peter I. Frazier. 2018.。

    3.5 协方差函数

    不同的协方差函数本质上隐含了对目标函数性质的不同假设。如果协方差函数是关于 的函数,那么它具有平移不变性,我们称它是平稳协方差函数(stationary covariance function),进一步,如果是关于 的函数,则该函数具有各向同性(isotropic)。可见,SE 函数是平稳的且各向同性的。

    对于完全取决于内积 的函数,我们称之为内积协方差函数(dot product covariance function),它具有旋转不变形,但不是平稳的。一个内积协方差函数的例子:

    平滑性(smoothness)。随机过程的平滑性由均方可微性(mean square differentiability)决定,比如,SE 函数对应的高斯过程是无限均方可微的。关于均方导数、均方可微的定义你可以自行了解。

    以下介绍几个常见的平稳协方差函数形式。为了简洁,令 。

    a. 伽马指数函数(γ-exponential covariance function)

    除了 (相当于 SE)以外,它是非均方可微的。图4展示了 时的采样。

    ▲ 图4

    b. 马顿函数(The Matérn class of covariance functions)

    其中, ν为修正贝塞尔函数(modified Bessel function), ν为伽玛函数(gamma function)。图 5 展示了 ν时的采样。

    ▲图5

    马顿函数在 ν均方不可微,而在 ν时为高阶均方可微。在一些论文中建议用 ν的马顿函数作为先验,它是二阶均方可微的,具有以下形式:

    c. 二次有理函数(rational quadratic covariance function)

    图6展示了 时的采样。

    ▲图6

    以上协方差函数还有各向异性(anisotropic)的版本,可以通过替换 得到, 为对角矩阵。注意到各向同性的 SE 函数只有一个超参数 ,其各向异性版本则有 个超参数, 为 的维度。

    3.6 采样函数

    现在我们已经可以根据已有观测数据 得到一个用于预测新样本的 GP 模型 ,接下来我们考虑采样函数(acquisition function)的部分。采样函数的作用是让每一次采样都尽可能接近目标函数的极大值/极小值,以此提升极值点搜索效率。具体地,我们用 表示给定 GP 模型的采样函数,对于目标函数的下一次采样:

    GP 模型给出的是目标函数的均值 μ和方差 σ,一个直接的策略是,选择更大概率比当前观测数据的目标函数值更大的点(假设我们的目标是寻找极大值),令 为当前观测数据的最大值,可以得到采样函数:

    其中, 是标准正态累积分布函数。

    ▲图7 ,源:https://arxiv.org/abs/1012.2599

    通过分析可知,采样函数 倾向于以很高的概率略大于 的点,而不是以较低的概率大于 更多的点;前者更侧重以更高的把握取得提升(exploitation),后者侧重于探索高风险高收益的区域(exploration)。过于强调 exploitation 会导致优化过程陷入局部极值点,强调 exploration 则可能导致优化目标一直无法得到提升。因此采样函数的主要设计原则就是平衡 exploitation 和 exploration。以下列出几个常见的采样函数。

    a. Probability of improvement (PI)

    上述公式由 得到, 可以控制 exploration 的程度。论文作者建议对参数 建立一个规划表,在早期采样中设置高一些以强调 exploration,然后逐渐调低数值至零。

    b. Expected improvement (EI)

    其中, 是标准高斯分布的概率密度函数。EI 通过分析采样值提升的数学期望 得到, 同样用于平衡 exploitation-exploration,相关论文通过实验表明 可以在几乎所有实验案例中取得不错的表现。

    c. Upper confidence bound (UCB & GP-UCB)

    UCB 由体现预期收益的部分 μ和体现风险的部分 κ σ构成,并通过参数 κ控制 exploration。

    GP-UCB的 随采样进度 t 而变化,在原论文中实验采用的公式是:

    实验中 δ。 表示对 的定义域 进行离散化取值得到的点数量,比如对于 1 维的情况, ,每隔 取一个 值,则 。论文还提到在实验中通过对 缩小 5 倍,可以获得性能提升 Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design. Niranjan Srinivas, Andreas Krause, Sham M. Kakade, Matthias Seeger. 2009.。

    总结

    协方差函数的选择。SE 函数是最常用的,但是因为基于 SE 的高斯过程是无限均方可微的,可见 SE 隐含了对目标函数平滑性的极端假设,因此有论文建议用 ν的马顿函数 Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle, Ryan P. Adams. 2012.。

    均值函数。常数是比较常见的均值函数设置,如果目标函数可能有某种变化趋势,可以考虑采用参数化的均值函数,形如A Tutorial on Bayesian Optimization. Peter I. Frazier. 2018.,或者基于概率模型的方法[GPML, Chapter 2]。

    采样函数的选择。对于选择哪个采样函数目前没有明确的规则,有论文提出用组合采样函数的方法可以得到比单独使用更好的实验表现,参阅 Portfolio Allocation for Bayesian Optimization. Eric Brochu, Matthew W. Hoffman, Nando de Freitas. 2010.。其他采样函数,如 knowledge-gradient The Knowledge-Gradient Policy for Correlated Normal Beliefs. Peter Frazier, Warren Powell, Savas Dayanik. 2008.,entropy search (ES) Entropy Search for Information-Efficient Global Optimization. Philipp Hennig, Christian J. Schuler. 2012.,predictive entropy search (PES) Predictive Entropy Search for Efficient Global Optimization of Black-box Functions. José Miguel Hernández-Lobato, Matthew W. Hoffman, Zoubin Ghahramani. 2014.,结合 fully Bayesian 的GP EI MCMC Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle, Ryan P. Adams. 2012.,提升采样函数效率的 mixture cross-entropy algorithm Surrogating the surrogate: accelerating Gaussian-process-based global optimization with a mixture cross-entropy algorithm. R ́emi Bardenet, Bal ́azs K ́egl. 2010.。

    其他贝叶斯优化算法。采用随机森林建模的 Sequential Model-based Algorithm Configuration (SMAC) Sequential Model-Based Optimization for General Algorithm Configuration. Frank Hutter, Holger H. Hoos, Kevin Leyton-Brown. 2011.,更适合高维度、离散化、超参数间有条件依赖的 Tree Parzen Estimator (TPE) Algorithms for Hyper-Parameter Optimization. James Bergstra, R ́emi Bardenet, Yoshua Bengio, Bal ́azs K ́egl. 2011.,以及提升 GP 模型计算效率的 SPGPs 和 SSGPs Taking the Human Out of the Loop: A Review of Bayesian Optimization. Bobak Shahriari, Kevin Swersky, Ziyu Wang, Ryan P. Adams, Nando de Freitas. 2016.。

    最新的进展。2018年一篇关于贝叶斯优化的总结性论文 A Tutorial on Bayesian Optimization. Peter I. Frazier. 2018.,比较新的超参数优化算法 Hyperband Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization. Lisha Li, Kevin Jamieson, Giulia DeSalvo, Afshin Rostamizadeh, Ameet Talwalkar. 2017.,结合了TPE和Hyperband的BOHB BOHB: Robust and Efficient Hyperparameter Optimization at Scale. Stefan Falkner, Aaron Klein, Frank Hutter. 2018.,Hyperband 和 BOHB 代码实现 HpBandSter. 2018.。

    附录:部分算法的Python代码示例

    a. 多元高斯分布采样。原理参阅[GPML, Appendix A, A.2]。

    frommatplotlib importpyplot asplt

    importnumpy asnp

    # SE协方差函数

    kernel_se = np.vectorize( lambdax1, x2, l: np.exp(-(x1 - x2) ** 2/ ( 2* l ** 2)))

    defsample_se(x, l, mean= 0):

    # x为numpy数组,e.g. x = np.arange(-5, 5, 0.05)

    x1, x2 = np.meshgrid(x, x)

    n = len(x)

    sigma = kernel_se(x1, x2, l) + np.identity(n) * 0.000000001

    L = np.linalg.cholesky(sigma)

    u = np.random.randn(n)

    y = mean + L @ u

    returny

    c = [ 'red', 'green', 'blue']

    l = [ 3, 1, 0.3]

    fori inrange(len(l)):

    x = np.arange( -5, 5, 0.05)

    y = sample_se(x, l[i])

    plt.plot(x, y, c=c[i], linewidth= 1, label= 'l=%.1f'% l[i])

    plt.xlabel( 'input, x')

    plt.ylabel( 'output, f(x)')

    plt.legend(loc= 'best')

    plt.show

    output:

    b. 由观测数据集(X, Y)得到新样本的均值 和方差 。

    frommatplotlib importpyplot asplt

    importnumpy asnp

    # 目标函数

    objective = np.vectorize( lambdax, std_n= 0: 0.001775* x** 5- 0.055* x** 4+ 0.582* x** 3- 2.405* x** 2+ 3.152* x + 4.678+ np.random.normal( 0, std_n))

    # 超参数

    mean, l, std_f, std_n = 5, 1, 1, 0.0001

    # SE协方差函数

    kernel = lambdar_2, l: np.exp(-r_2 / ( 2* l** 2))

    # 训练集,以一维输入为例

    X = np.arange( 1.5, 10, 3.0)

    X = X.reshape(X.size, 1)

    Y = objective(X).flatten

    # 未知样本

    Xs = np.arange( 0, 10, 0.1)

    Xs = Xs.reshape(Xs.size, 1)

    n, d = X.shape

    t = np.repeat(X.reshape(n, 1, d), n, axis= 1) - X

    r_2 = np.sum(t** 2, axis= 2)

    Kf = std_f** 2* kernel(r_2, l)

    Ky = Kf + std_n** 2* np.identity(n)

    Ky_inv = np.linalg.inv(Ky)

    m = Xs.shape[ 0]

    t = np.repeat(Xs.reshape(m, 1, d), n, axis= 1) - X

    r_2 = np.sum(t** 2, axis= 2).T

    kf = std_f** 2* kernel(r_2, l)

    mu = mean + kf.T @ Ky_inv @ (Y - mean)

    std = np.sqrt(std_f** 2- np.sum(kf.T @ Ky_inv * kf.T, axis= 1))

    x_test = Xs.flatten

    y_obj = objective(x_test).flatten

    plt.plot(x_test, mu, c= 'black', lw= 1, label= 'predicted mean')

    plt.fill_between(x_test, mu + std, mu - std, alpha= 0.2, color= '#9FAEB2', lw= 0)

    plt.plot(x_test, y_obj, c= 'red', ls= '--', lw= 1, label= 'objective function')

    plt.scatter(X.flatten, Y, c= 'red', marker= 'o', s= 20)

    plt.legend(loc= 'best')

    plt.show

    output:

    c. 贝叶斯优化示例。

    frommatplotlib importpyplot asplt

    importnumpy asnp

    # 目标函数

    objective = np.vectorize( lambdax, sigma_n= 0: 0.001775* x** 5- 0.055* x** 4+ 0.582* x** 3- 2.405* x** 2+ 3.152* x + 4.678+ np.random.normal( 0, sigma_n))

    # 采样函数 - GP-UCB

    GPUCB = np.vectorize( lambdamu, sigma, t, ld, delta= 0.1: mu + ( 1* 2* np.log(ld * t** 2* np.pi** 2/ ( 6* delta)))** 0.5* sigma)

    # 超参数

    mean, l, sigma_f, sigma_n = 5, 1, 1, 0.0001

    # 迭代次数

    max_iter = 3

    # SE协方差函数

    kernel = lambdar_2, l: np.exp(-r_2 / ( 2* l** 2))

    # 初始训练样本,以一维输入为例

    X = np.arange( 0.5, 10, 3.0)

    X = X.reshape(X.size, 1)

    Y = objective(X).flatten

    plt.figure(figsize=( 8, 5))

    fori inrange(max_iter):

    Xs = np.arange( 0, 10, 0.1)

    Xs = Xs.reshape(Xs.size, 1)

    n, d = X.shape

    t = np.repeat(X.reshape(n, 1, d), n, axis= 1) - X

    r_2 = np.sum(t** 2, axis= 2)

    Kf = sigma_f** 2* kernel(r_2, l)

    Ky = Kf + sigma_n** 2* np.identity(n)

    Ky_inv = np.linalg.inv(Ky)

    m = Xs.shape[ 0]

    t = np.repeat(Xs.reshape(m, 1, d), n, axis= 1) - X

    r_2 = np.sum(t** 2, axis= 2).T

    kf = sigma_f** 2* kernel(r_2, l)

    mu = mean + kf.T @ Ky_inv @ (Y - mean)

    sigma = np.sqrt(sigma_f** 2- np.sum(kf.T @ Ky_inv * kf.T, axis= 1))

    y_acf = GPUCB(mu, sigma, i + 1, n)

    sample_x = Xs[np.argmax(y_acf)]

    x_test = Xs.flatten

    y_obj = objective(x_test).flatten

    ax = plt.subplot( 2, max_iter, i + 1)

    ax.set_title( 't=%d'% (i + 1))

    plt.ylim( 3, 8)

    plt.plot(x_test, mu, c= 'black', lw= 1)

    plt.fill_between(x_test, mu + sigma, mu - sigma, alpha= 0.2, color= '#9FAEB2', lw= 0)

    plt.plot(x_test, y_obj, c= 'red', ls= '--', lw= 1)

    plt.scatter(X, Y, c= 'red', marker= 'o', s= 20)

    plt.subplot( 2, max_iter, i + 1+ max_iter)

    plt.ylim( 3.5, 9)

    plt.plot(x_test, y_acf, c= '#18D766', lw= 1)

    X = np.insert(X, 0, sample_x, axis= 0)

    Y = np.insert(Y, 0, objective(sample_x))

    plt.show

    output:

    参考文献

    [1] Random Search for Hyper-Parameter Optimization. James Bergstra, Yoshua Bengio. 2012.

    [2] Gaussian Processes for Machine Learning. C. E. Rasmussen, C. K. I. Williams. 2006.

    [3] A Tutorial on Bayesian Optimization. Peter I. Frazier. 2018.

    [4] Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design. Niranjan Srinivas, Andreas Krause, Sham M. Kakade, Matthias Seeger. 2009.

    [5] Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle, Ryan P. Adams. 2012.

    [6] A Tutorial on Bayesian Optimization. Peter I. Frazier. 2018.

    [7] Portfolio Allocation for Bayesian Optimization. Eric Brochu, Matthew W. Hoffman, Nando de Freitas. 2010.

    [8] The Knowledge-Gradient Policy for Correlated Normal Beliefs. Peter Frazier, Warren Powell, Savas Dayanik. 2008.

    [9] Entropy Search for Information-Efficient Global Optimization. Philipp Hennig, Christian J. Schuler. 2012.

    [10] Predictive Entropy Search for Efficient Global Optimization of Black-box Functions. José Miguel Hernández-Lobato, Matthew W. Hoffman, Zoubin Ghahramani. 2014.

    [11] Practical Bayesian Optimization of Machine Learning Algorithms. Jasper Snoek, Hugo Larochelle, Ryan P. Adams. 2012.

    [12] Surrogating the surrogate: accelerating Gaussian-process-based global optimization with a mixture cross-entropy algorithm. R ́emi Bardenet, Bal ́azs K ́egl. 2010.

    [13] Sequential Model-Based Optimization for General Algorithm Configuration. Frank Hutter, Holger H. Hoos, Kevin Leyton-Brown. 2011.

    [14] Algorithms for Hyper-Parameter Optimization. James Bergstra, R ́emi Bardenet, Yoshua Bengio, Bal ́azs K ́egl. 2011.

    [15] Taking the Human Out of the Loop: A Review of Bayesian Optimization. Bobak Shahriari, Kevin Swersky, Ziyu Wang, Ryan P. Adams, Nando de Freitas. 2016.

    [16] A Tutorial on Bayesian Optimization. Peter I. Frazier. 2018.

    [17] Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization. Lisha Li, Kevin Jamieson, Giulia DeSalvo, Afshin Rostamizadeh, Ameet Talwalkar. 2017.

    [18] BOHB: Robust and Efficient Hyperparameter Optimization at Scale. Stefan Falkner, Aaron Klein, Frank Hutter. 2018.

    [19] A Tutorial on Bayesian Optimization of Expensive Cost Functions, with Application to Active User Modeling and Hierarchical Reinforcement Learning. Eric Brochu, Vlad M. Cora, Nando de Freitas. 2010.

    [20] Cross-validation (statistics). Wikipedia.

    [21] Markov chain Monte Carlo. Wikipedia.

    • 稿件确系个人 原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

    • PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志返回搜狐,查看更多

    责任编辑:

    展开全文
  • 模型评估和参数调优

    2020-12-20 13:44:11
    模型评估和参数调优本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式都是出自该书.本博客仅个人总结学习,非商业用途,侵删.网址 http://www.ptpress.com.cn1. 准确率准确率是指分类正确的样本...

    模型评估和参数调优

    本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式都是出自该书.

    本博客仅为个人总结学习,非商业用途,侵删.

    网址 http://www.ptpress.com.cn

    1. 准确率

    准确率是指分类正确的样本占总样本个数的比例, 即

    其中\(n_{correct}\)为被正确分类的样本个数, \(n_{total}\)为总样本的个数。

    准确率存在明显的缺陷,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。

    2. 精确率与召回率的权衡

    精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。

    召回率是指分类正确的正样本个数占真正的正样本个数的比例。

    Precision值和Recall值是既矛盾又统一的两个指标, 为了提高Precision值, 分类器需要尽量在“更有把握”时才把样本预测为正样本, 但此时往往会因为过于保守而漏掉很多“没有把握”的正样本, 导致Recall值降低。

    对于一个排序模型来说, 其P-R曲线上的一个点代表着, 在某一阈值下, 模型大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本, 此时返回结果对应的召回率和精确率。

    如下图:整条P-R曲线是通过将阈值从高到低移动而生成的。

    F1_score是精准率和召回率的调和平均值, 它定义为:

    3. 平方根误差的意外

    当构建回归模型时,无论使用哪个模型,得到的RMSE指标都非常高,但是事实的预测误差都小于1%,预测结果相当不错,造成这种RMSE指标居高不下的可能原因是什么?

    RMSE经常被用来衡量回归模型的好坏。下面是RMSR的计算公式:

    其中, \(y_i\)是第i个样本点的真实值, 是第i个样本点的预测值, n是样本点的个数 。

    一般情况下, RMSE能够很好地反映回归模型预测值与真实值的偏离程度。 但在实际问题中, 如果存在个别偏离程度非常大的离群点( Outlier) 时, 即使离群点数量非常少, 也会让RMSE指标变得很差。

    针对这个问题, 有什么解决方案呢 ?

    第一,如果离群点是噪声点的话可以在数据预处理时过滤掉。

    第二,如果不是噪声的,需要提高模型的预测能力,将离群点产生的机制建模进去。

    第三,可以找一个更合适的指标来评估模型。比如 平均绝对百分比误差(Mean Absolute Percent Error, MAPE),它定义为:

    相比RMSE, MAPE相当于把每个点的误差进行了归一化, 降低了个别离群点带来的绝对误差的影响 。

    4. 什么是ROC曲线,如何计算AUC

    ROC曲线的横坐标为假阳性率(False Positive Rate, FPR) ; 纵坐标为真阳性率(True Positive Rate, TPR)。FPR和TPR的计算方法分别为

    上式中, P是真实的正样本的数量, N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。

    ?事实上, ROC曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点的,截断点就是指区分正负预测结果的阈值。

    ?通过动态地调整截断点,从最高的得分开始(实际上是从正无穷开始对应着ROC曲线的零点),逐渐调整到最低得分,每一个截断点都会对应一个FPR和TPR, 在ROC图上绘制出每个截断点对应的位置, 再连接所有点就得到最终的ROC曲线。

    ?如何计算AUC?

    ?AUC是指ROC曲线下的面积大小,该值能够量化地反映基于ROC曲线衡量出模型的性能。

    ?计算AUC值只需要沿着ROC横轴做积分就可以了。由于ROC曲线一般都处于y=x这条直线的上方(如果不是的话, 只要把模型预测的概率反转成1-p就可以得到一个更好的分类器,所以AUC的取值一般在0.5~1之间。AUC越大, 说明分类器越可能把真正的正样本排在前面, 分类性能越好 。

    ?ROC曲线和P-R曲线有什么特点?

    ?相比P-R曲线, ROC曲线有一个特点, 当正负样本的分布发生变化时, ROC曲线的形状能够基本保持不变, 而P-R曲线的形状一般会发生较剧烈的变化。

    5. 余弦距离

    在分析两个特征向量之间的相似性时, 常使用余弦相似度来表示。 余弦相似度的取值范围是[-1,1],相同的两个向量之间的相似度为1。 如果希望得到类似于距离的表示, 将1减去余弦相似度即为余弦距离。 因此,余弦距离的取值范围为[0,2], 相同的两个向量余弦距离为0。

    欧氏距离体现数值上的绝对差异, 而余弦距离体现方向上的相对差异。

    例如, 统计两部剧的用户观看行为, 用户A的观看向量为(0,1), 用户B为(1,0); 此时二者的余弦距离很大, 而欧氏距离很小; 我们分析两个用户对于不同视频的偏好, 更关注相对差异, 显然应当使用余弦距离。 而当我们分析用户活跃度, 以登陆次数(单位: 次)和平均观看时长(单位: 分钟)作为特征时, 余弦距离会认为(1,10)、 (10,100)两个用户距离很近; 但显然这两个用户活跃度是有着极大差异的, 此时我们更关注数值绝对差异, 应当使用欧氏距离 。

    6. A/B测试和实验组对比组

    为什么需要进行在线A/B测试?

    离线评估无法完全消除模型过拟合的影响, 因此, 得出的离线评估结果无法完全替代线上评估结果。

    离线评估无法完全还原线上的工程环境。 一般来讲, 离线评估往往不会考虑线上环境的延迟、 数据丢失、 标签数据缺失等情况。 因此, 离线评估的结果是理想工程环境下的结果。

    线上系统的某些商业指标在离线评估中无法计算,如用户点击率、 留存时长、 PV访问量等

    如何进行A/B测试和划分实验组和对比组?

    进行A/B测试的主要手段是进行用户分桶, 即将用户分成实验组和对照组, 对实验组的用户施以新模型, 对对照组的用户施以旧模型。 在分桶的过程中, 要注意样本的独立性和采样方式的无偏性, 确保同一个用户每次只能分到同一个桶中, 在分桶过程中所选取的user_id需要是一个随机数, 这样才能保证桶中的样本是无偏的。

    7. 模型评估方法

    Holdout检验:

    Holdout 检验是最简单也是最直接的验证方法, 它将原始的样本集合随机划分成训练集和验证集两部分。

    交叉检验:

    k-fold交叉验证: 首先将全部样本划分成k个大小相等的样本子集; 依次遍历这k个子集, 每次把当前子集作为验证集, 其余所有子集作为训练集, 进行模型的训练和评估; 最后把k次评估指标的平均值作为最终的评估指标。 在实际实验中, k经常取10

    留一验证:每次留下1个样本作为验证集, 其余所有样本作为测试集。 在样本总数较多的情况下, 留一验证法的时间开销极大。 留一验证是留p验证的特例。 留p验证是每次留下p个样本作为验证集, 而从n个元素中选择p个元素有 种可能, 因此它的时间开销更是远远高于留一验证。

    自助法:

    自助法是基于自助采样法的检验方法。 对于总数为n的样本集合, 进行n次有放回的随机抽样, 得到大小为n的训练集。 n次采样过程中, 有的样本会被重复采样, 有的样本没有被抽出过, 将这些没有被抽出的样本作为验证集, 进行模型验证, 这就是自助法的验证过程 。

    在自助法的采样过程中, 对n个样本进行n次自助抽样, 当n趋于无穷大时,最终有多少数据从未被选择过?

    一个样本在一次抽样过程中未被抽中的概率为

    , n次抽样均未抽中的概率为

    。 当n趋于无穷大时, 概率为

    根据重要极限,

    ,所以有

    因此, 当样本数很大时, 大约有36.8%的样本从未被选择过, 可作为验证集。

    8. 超参数调优方法

    网格搜索:

    通过查找搜索范围内的所有的点来确定最优值 。

    网格搜索法一般会先使用较广的搜索范围和较大的步长, 来寻找全局最优值可能的位置; 然后会逐渐缩小搜索范围和步长, 来寻找更精确的最优值。 这种操作方案可以降低所需的时间和计算量, 但由于目标函数一般是非凸的, 所以很可能会错过全局最优值。

    随机搜索:

    不再测试上界和下界之间的所有值, 而是在搜索范围中随机选取样本点。 它的理论依据是, 如果样本点集足够大, 那么通过随机采样也能大概率地找到全局最优值, 或其近似值。

    贝叶斯优化算法 :

    网格搜索和随机搜索在测试一个新点时, 会忽略前一个点的信息;而贝叶斯优化算法则充分利用了之前的信息 。贝叶斯优化算法通过对目标函数形状进行学习, 找到使目标函数向全局最优值提升的参数。

    具体来说, 它学习目标函数形状的方法是, 首先根据先验分布, 假设一个搜集函数; 然后, 每一次使用新的采样点来测试目标函数时, 利用这个信息来更新目标函数的先验分布; 最后, 算法测试由后验分布给出的全局最值最可能出现的位置的点。

    需要注意的地方, 一旦找到了一个局部最优值, 它会在该区域不断采样, 所以很容易陷入局部最优值。 为了弥补这个缺陷, 贝叶斯优化算法会在探索和利用之间找到一个平衡点, “探索”就是在还未取样的区域获取采样点;而“利用”则是根据后验分布在最可能出现全局最值的区域进行采样。

    9. 过拟合与欠拟合

    过拟合是指模型对于训练数据拟合呈过当的情况 ,模型在训练集上的表现很好, 但在测试集和新数据上的表现较差。

    欠拟合指的是模型在训练和预测时表现都不好的情况。

    降低“过拟合”风险的方法 ?

    从数据入手, 获得更多的训练数据,更多的样本可以让模型学习到更多的有效特征,减少噪声的影响。直接增加实验数据比较困难,可以通过数据增强的方式扩充。

    降低模型复杂度。 在数据较少时, 模型过于复杂是产生过拟合的主要因素, 适当降低模型复杂度可以避免模型拟合过多的采样噪声。 例如, 在神经网络模型中减少网络层数、 神经元个数等; 在决策树模型中降低树的深度、 进行剪枝等 。

    正则化方法。 给模型的参数加上一定的正则约束, 比如将权值的大小加入到损失函数中。 以L2正则化为例:

    集成学习方法。 集成学习是把多个模型集成在一起, 来降低单一模型的过拟合风险, 如Bagging方法 。

    降低“欠拟合”风险的方法 ?

    添加新特征。 当特征不足或者现有特征与样本标签的相关性不强时, 模型容易出现欠拟合。 通过挖掘“上下文特征”“ID类特征”“组合特征”等新的特征, 往往能够取得更好的效果。 在深度学习潮流中, 有很多模型可以帮助完成特征工程, 如因子分解机、 梯度提升决策树、 Deep-crossing等都可以成为丰富特征的方法。

    增加模型复杂度。 简单模型的学习能力较差, 通过增加模型的复杂度可以使模型拥有更强的拟合能力。 例如, 在线性模型中添加高次项, 在神经网络模型中增加网络层数或神经元个数等。

    减小正则化系数。

    原文:https://www.cnblogs.com/hhhuang/p/12329150.html

    展开全文
  • 1、为什么要用神经网络?对于非线性分类问题,如果用多元线性回归进行分类,需要构造许多高次项,导致特征特多,学习参数过多,从而复杂度太高。在神经网络中引入激活函数一个重要的原因就是为了引入非线性。2、CNN...

    1、为什么要用神经网络?

    对于非线性分类问题,如果用多元线性回归进行分类,需要构造许多高次项,导致特征特多,学习参数过多,从而复杂度太高 。

    在神经网络中引入激活函数一个重要的原因就是为了引入非线性。

    2、CNN基本问题

    层级结构:输入层->卷积层->激活层->池化层->卷积层->激活层->池化层->全连接层····

    (1)输入层数据预处理:去均值;归一化;PCA/白化;

    去均值:即0均值化,CNN常用,训练集所有像素值减去均值,把输入数据各个维度中心化到0,测试集也减相同的均值;

    目的:(1)数据有过大的均值可能导致参数的梯度过大,在梯度回传时会有一些影响;(2)如果有后续的处理,可能要求数据0均值,比如PCA。

    归一化:幅度归一化到同样的范围;

    目的:为了让不同维度的数据具有相同的分布规模,方便操作,图像一般不需要。

    PCA/白化:降维,白化是对PCA降维后的数据每个特征轴上的幅度归一化;

    目的:相当于在零均值化和归一化操作之间插入一个旋转操作,将数据投影在主轴上。图像一般不需要,因为图像的信息本来就是依靠像素之间的相对差异来体现的。

    (2)池化层作用:

    本质上,是在精简feature map数据量的同时,最大化保留空间信息和特征信息,的处理技巧;

    目的是,(a)对feature map及参数进行压缩,起到降维作用;

    (b)减小过拟合的作用。包括Max pooling 和average pooling;

    (c)引入不变性,包括平移、旋转、尺度不变性。但CNN的invariance的能力,本质是由convolution创造的;

    简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。

    为什么不用卷积步长的压缩:因为pooling layer的工作原理,在压缩上比convolution更专注和易用。

    为什么不用BP神经网络去做呢?

    (1)全连接,权值太多,需要很多样本去训练,计算困难。应对之道:减少权值的尝试,局部连接,权值共享。

    卷积神经网络有两种神器可以降低参数数目。  第一种神器叫做局部感知野,一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。

    第二级神器,即权值共享。

    (2)边缘过渡不平滑。应对之道:采样窗口彼此重叠。

    3、调参优化方法:基本原则—快速试错

    (1)由小数据到大数据:刚开始, 先上小规模数据, 模型往大了放, 只要不爆显存, 能用256个filter你就别用128个. 直接奔着过拟合去。

    目的:验证自己的训练脚本的流程对不对。如果小数据量下, 你这么粗暴的大网络奔着过拟合去都没效果. 那么, 你要开始反思自己了, 模型的输入输出是不是有问题? 要不要检查自己的代码(永远不要怀疑工具库, 除非你动过代码)? 模型解决的问题定义是不是有问题? 你对应用场景的理解是不是有错?

    (2)loss设计要合理

    一般来说分类就是Softmax, 回归就是L2的loss. 但是要注意loss的错误范围(主要是回归), 你预测一个label是10000的值, 模型输出0, 你算算这loss多大, 这还是单变量的情况下. 一般结果都是nan. 所以不仅仅输入要做normalization, 输出也要这么弄.

    多任务情况下, 各loss想法限制在一个量级上, 或者最终限制在一个量级上, 初期可以着重一个任务的loss。

    (3)观察loss胜于观察准确率

    LOSS下降时稳定的,而准确率有时是突变的,不能反映真实情况。给NN一点时间, 要根据任务留给NN的学习一定空间. 不能说前面一段时间没起色就不管了. 有些情况下就是前面一段时间看不出起色, 然后开始稳定学习.

    (4)确认分类网络学习充分

    分类网络就是学习类别之间的界限. 你会发现, 网络就是慢慢的从类别模糊到类别清晰的. 怎么发现? 看Softmax输出的概率的分布. 如果是二分类, 你会发现, 刚开始的网络预测都是在0.5上下, 很模糊. 随着学习过程, 网络预测会慢慢的移动到0,1这种极值附近. 所以, 如果你的网络预测分布靠中间, 再学习学习。

    (5)学习率设置合理

    太大: loss爆炸, 或者nan;太小: 半天loss没反映。当loss在当前LR下一路降了下来, 但是半天不再降了,就需要进一步降低了LR了。

    (6)对比训练集和验证集的loss

    判断过拟合, 训练是否足够, 是否需要early stop的依据, 这都是中规中矩的原则, 不多说了.

    (7)清楚receptive field的大小

    CV的任务, context window是很重要的. 所以你对自己模型的receptive field的大小要心中有数. 这个对效果的影响还是很显著的. 特别是用FCN, 大目标需要很大的receptive field. 不像有fully connection的网络, 好歹有个fc兜底, 全局信息都有。

    (8)最后一层激活函数:分类softmax,回归的话一般不用,直接输出wx+b。

    (9)训练数据增强:旋转、裁剪、亮度、色度、饱和度等变化等增加鲁棒性。

    简短的注意事项:

    (1)预处理:-mean/std zero-center就够了, PCA, 白化什么的都用不上. 我个人观点, 反正CNN能学习encoder, PCA用不用其实关系不大, 大不了网络里面自己学习出来一个.

    (2)训练数据要shuffle, shuffle, shuffle。

    (3)Dropout, Dropout, Dropout(不仅仅可以防止过拟合, 其实这相当于做人力成本最低的Ensemble, 当然, 训练起来会比没有Dropout的要慢一点, 同时网络参数你最好相应加一点, 对, 这会再慢一点)。注意,一般取值0.5,在测试时关掉。

    (4)CNN更加适合训练回答是否的问题, 如果任务比较复杂, 考虑先用分类任务训练一个模型再finetune.

    (5)不知选什么就用:激活函数用ReLU(CV领域).;参数初始化用xavier;

    (6)LRN一类的, 其实可以不用. 不行可以再拿来试试看.

    (7)filter数量2^n。第一层的filter, 数量不要太少. 否则根本学不出来(底层特征很重要).

    (8)多尺度的图片输入(或者网络内部利用多尺度下的结果)有很好的提升效果。

    (9)sgd adam 这些选择上, 看你个人选择. 一般对网络不是决定性的. 反正我无脑用sgd + momentum。

    (10)shortcut的联接是有作用的。

    (11)batch normalization我一直没用, 虽然我知道这个很好, 我不用仅仅是因为我懒. 所以要鼓励使用batch normalization。好坏另说,试了才知道。

    (12)不要完全相信论文里面的东西. 结构什么的觉得可能有效果, 可以拿去试试.

    (13)暴力调参最可取, 毕竟, 自己的生命最重要. 你调完这个模型说不定过两天这模型就扔掉了.

    链接(知乎):https://www.zhihu.com/question/25097993/answer/127472322

    展开全文
  • 机器学习之超参数调优

    千次阅读 2018-10-07 22:11:27
    对于很多算法工程师来说,超参数调优是件非常头疼的事,这项工作比较玄学。除了根据经验设定所谓的“合理值”之外,一般很难找到合理的方法去寻找超参数的最优值。而与此同时,超参数对于模型效果的影响又至关重要。...
  • 本篇对XGBoost主要参数进行解释,方括号内是对应scikit-learn中XGBoost算法模块的叫法...1. eta [default=0.3, alias: learning_rate]学习率,可以缩减每一步的权重值,使得模型更加健壮: 典型值一般设置:0.01-...
  • 参数调优方法整理大全

    千次阅读 2019-11-06 19:08:21
    机器学习中总是会碰见调...一、随机森林超参数优化- RandomSearch和GridSearch (1)RandomSearch 原理: 超参数优化也就是常说的调参,python-sklearn里常用的有GridSearchCV和RandomizedSearchCV可以用。其中Gr...
  • rf中的超参数主要森林中的决策树的数量(n_estimators) 以及每个树在分割节点时考虑的特征的数量(max_features)。 并且超参数优化的标准程序是通过交叉验证来解决过度拟合问题。1)Random Search with Cross ...
  • Xgboost参数调优的完整指南及实战

    万次阅读 多人点赞 2017-11-14 17:09:34
    引言Xgboost是一种高度复杂的算法可以处理各种各样的数据。相信每个用过Xgboost的人都有过这样的感受:利用Xgboost构建...这些参数的理想值是什么?以前我写过一篇Xgboost与lightgbm参数对比的文章,但是感觉应该把Xg
  • 【sql调优】动态采样

    2020-12-30 07:48:12
    1. Dynamic Sampling (动态采样)The purpose of dynamic sampling is to improve server performance by determining more accurate selectivity and cardinality estimates.More accurate selectivity and ...
  • 作者丨Sivasai Yadav Mudugandla编辑丨Python遇见机器学习引言维基百科上说“超参数优化(optimization)或调优(tuning)是学习算法选择一组最优超参数的问题”机器学习工作流中最难的部分之一是模型寻找最佳的超...
  • 决策树参数调优建议

    千次阅读 2018-12-25 20:57:27
    三个最重要的参数为:树的数目、树的深度和学习率。建议参数调整策略: – 采用默认参数配置试试 – 如果系统过拟合了,降低学习率 – 如果系统欠拟合,加大学习率 建议二: – n_estimators和learning_rate:固定n_...
  • 掌握回归模型的参数评估及超参数调优 对模型超参数进行调优(调参): 对模型得优化不止局限于对模型算法的优化,比如:岭回归对线性回归的优化是通过在线性回归的损失函数中加入L2正则化项从而牺牲无偏性降低方差。...
  • 参数调优方法

    千次阅读 2019-09-04 16:18:34
    参数调优方法网格搜索随机搜索贝叶斯优化 超参数搜索算法一般包括以下要素: 目标函数,即算法需要最大化、最小化的目标; 搜索范围,一般通过上限和下限来确定; 算法的其他参数 网格搜索 最简单,应用最广泛的...
  • 回归模型的评估及超参数调优

    千次阅读 2021-03-24 22:13:54
    在机器学习中,其中算法最为重要一面就是回归算法,回归算法占我们理解机器学习一大块,这一块的学习可以帮助我们掌握超参数的调节。基本上只要一切基于特征预测连续型变量的需求,我们都使用回归技术。 最著名的...
  • ,这也就是为什么需要多次实验,取平均值; 我们希望评估的是在原始数据集上训练得到的模型的能力,但留出法在划分两个或者三个集合后,训练模型仅使用了原始数据集的一部分,这会降低评估结果的保真性。但这个...
  • 对模型超参数进行调优 1.参数与超参数 参数:最小二乘法或者梯度下降法等最优化算法优化出来的数。 超参数:无法用最小二乘法或者梯度下降法等最优化算法优化出来的数。 简单来说,模型参数就是模型内部的配置变量,...
  • 对模型超参数进行调优一、参数与超参数二、网格搜索GridSearchCV三、随机搜索 RandomizedSearchCV 一、参数与超参数 什么是模型参数? 模型参数是模型内部的配置变量,其值可以根据数据进行估计。 它们的值定义了...
  • 本文实现了端到端的基于XGBoost模型的参数调优。 我们首先讨论为什么XGBoost比GBM具有更好的性能,然后详细讨论了所涉及的各种参数。 我们还定义了一个通用函数,可以重新用于其他模型。
  • 紧接着,我们介绍了每个参数的细节。我们定义了一个可以重复使用的构造模型的函数。 最后,我们讨论了使用XGBoost解决问题的一般方法,在AV Data Hackathon 3.x problem数据上实践了这些方法。 希望看过这篇文章之后...
  • 参数调优

    2019-09-20 18:09:41
    参数调优 模型参数,是使用的模型根据训练数据的分布学习到的参数,不需要人为的设置。超参数,是在模型训练之前设置的参数。通常情况下对超参数进行优化,选择一组最优超参数,以提高学习的性能和效果。 常用...
  • 采样计算梯度1. 随机梯度下降法有什么问题?通过对代价函数求权重的梯度,我们可以一次性对所有的参数 进行优化,但是如果每次等全部计算完成再优化升级,我们将等待很长时间(对于很大的语料库来说)。所以我们采用...
  • XGBoost参数调优完全指南(附Python代码) 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考。另外,我自己跟着教程做的时候,发现我的库无法解析字符串类型的特征,所以只用其中一部分...
  • 常见的超参数调优方法

    千次阅读 2019-11-05 15:42:57
    学习器模型中一般有两类参数,一类是可以从数据中学习估计得到,还有一类参数时无法从数据中估计,只能靠人的经验进行设计指定,后者成为超参数。比如,支持向量机里面的C, Kernal, game;朴素贝叶斯里面的alpha等。...
  • 参数调优有哪些方法

    千次阅读 2019-07-29 20:35:40
    为了进行超参数调优,我们一般会采用网格搜索、随机搜索、贝叶斯优化等算法。在具体介绍算法之前,需要明确超参数搜索算法一般包括哪几个要素。一是目标函数,即算法需要最大化/最小化的目标二是搜索范围,一般通过上限...
  •   不同的超参数的值对于模型的性能有不同的影响,我们需要找到的就是使得模型性能最佳的超参数。 1.网格搜索GridSearchCV()   网格搜索的思想非常简单,比如你有2个超参数需要去选择,那你就把所有的超参数选择列...
  • xgboost参数调优

    千次阅读 2018-04-11 17:31:35
    前言:这篇博文主要当我看到后,觉得写得很好,故收藏了一下,以便日后学习用。 转载于寒小阳博主的博文。 1. 简介 如果你的预测模型表现得有些不尽如人意,那就用XGBoost吧。XGBoost算法现在已经成为很多数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,900
精华内容 4,360
关键字:

参数调优为什么要采样