task4:掌握回归模型的评估及超参数调优

1.常用的回归模型评估指标

平均绝对误差 Mean Absolute Error(MAE)

MAE用来描述预测值和真实值的差值。数值越小越好。假设𝑦𝑖是真实值,𝑓𝑖是相对应的预测值,则n个样本的MAE可由下式出给:

𝑀𝐴𝐸=1𝑛∑𝑖=1𝑛|𝑓𝑖−𝑦𝑖|

MAE优缺点:虽然平均绝对误差能够获得一个评价值,但是你并不知道这个值代表模型拟合是优还是劣,只有通过对比才能达到效果。

均方误差 Mean Squared Error(MSE)

Mean Squared Error也称为Mean Squared Deviation(MSD),计算的是预测值和实际值的平方误差。同样,数值越小越好。

假设𝑦𝑖是真实值,𝑓𝑖是相对应的预测值,则n 个样本的MSE由下式公式给出:

𝑀𝑆𝐸=1𝑛∑𝑖=1𝑛(𝑓𝑖–𝑦𝑖)2

由于MSE与我们的目标变量的量纲不一致,为了保证量纲一致性,我们需要对MSE进行开方,即均方根误差(RMSE):

均方根误差 Root Mean Squared Error(RMSE)

均方根误差RMSE(root-mean-square error), 均方根误差亦称标准误差,它是观测值与真值偏差的平方与观测次数比值的平方根。均方根误差是用来衡量观测值同真值之间的偏差。标准误差对一组测量中的特大或特小误差反映非常敏感,所以,标准误差能够很好地反映出测量的精密度。可用标准误差作为评定这一测量过程精度的标准。计算公式如下:

𝑅𝑀𝑆𝐸=1𝑛∑𝑖=1𝑛(𝑓𝑖–𝑦𝑖)2‾‾‾‾‾‾‾‾‾‾‾‾‾⎷

这不就是MSE开个根号么。有意义么?其实实质是一样的。只不过用于数据更好的描述。例如:要做房价预测,每平方是万元,我们预测结果也是万元。那么差值的平方单位应该是 千万级别的。那我们不太好描述自己做的模型效果。我们的模型误差是多少千万?于是干脆就开个根号就好了。我们误差的结果就跟我们数据是一个级别的,可在描述模型的时候就说,我们模型的误差是多少万元。

RMSE与MAE对比:RMSE相当于L2范数,MAE相当于L1范数。次数越高,计算结果就越与较大的值有关,而忽略较小的值,所以这就是为什么RMSE针对异常值更敏感的原因(即有一个预测值与真实值相差很大,那么RMSE就会很大)。

均值平方对数误差 Mean Squared Log Error(MSLE)

如果𝑦̂ 𝑖是第i个样本的预测值,𝑦𝑖是相应的真实值,则在𝑛𝑠𝑎𝑚𝑝𝑙𝑒𝑠上估计的均方对数误差(MSLE)被定义为:

MSLE(𝑦,𝑦̂ )=1𝑛samples∑𝑖=0𝑛samples–1(log𝑒(1+𝑦𝑖)–log𝑒(1+𝑦̂ 𝑖))2

其中𝑙𝑜𝑔𝑒(𝑥)表示x的自然对数。 当目标具有指数增长的目标时,最适合使用这一指标,例如人口数量,商品在一段时间内的平均销售额等。

注意,该度量对低于真实值的预测更加敏感。

中位数绝对误差 Median Absolute Error(MedianAE)

中位数绝对误差非常有趣,因为它可以减弱异常值的影响。 通过取目标和预测之间的所有绝对差值的中值来计算损失。如果𝑦̂ 𝑖是第i个样本的预测值,𝑦𝑖是相应的真实值,则在𝑛𝑠𝑎𝑚𝑝𝑙𝑒𝑠上估计的中值绝对误差(MedAE)被定义为:

MedAE(𝑦,𝑦̂ )=median(∣𝑦1–𝑦̂ 1∣,…,∣𝑦𝑛–𝑦̂ 𝑛∣)

R-平方 𝑅2 Score

𝑅2 Score又称为the coefficient of determination。判断的是预测模型和真实数据的拟合程度,最佳值为1,同时可为负值。

假设𝑦𝑖是真实值,𝑓𝑖是相对应的预测值,则n 个样本的𝑅2 score由下式公式给出:

𝑅2=1–∑𝑛𝑖=1(𝑦𝑖–𝑓𝑖)2∑𝑛𝑖=1(𝑦𝑖–𝑦⎯⎯⎯)2

其中𝑦⎯⎯⎯是y 的均值,即𝑦⎯⎯⎯=1𝑛∑𝑛𝑖=1𝑦𝑖

2.模型超参数调优

2.1多项式回归实例介绍:


https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html?highlight=poly#sklearn.preprocessing.PolynomialFeatures
sklearn.preprocessing.PolynomialFeatures(degree=2, *, interaction_only=False, include_bias=True, order='C'):

  • 参数:
    degree:特征转换的阶数。
    interaction_onlyboolean:是否只包含交互项,默认False 。
    include_bias:是否包含截距项,默认True。
    order:str in {‘C’, ‘F’}, default ‘C’,输出数组的顺序。

2.2sklearn使用回归树的实例:


https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html?highlight=tree#sklearn.tree.DecisionTreeRegressor
sklearn.tree.DecisionTreeRegressor(*, criterion='mse', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, presort='deprecated', ccp_alpha=0.0)

  • 参数:(列举几个重要的,常用的,详情请看上面的官网)
    criterion:{“ mse”,“ friedman_mse”,“ mae”},默认=“ mse”。衡量分割标准的函数 。
    splitter:{“best”, “random”}, default=”best”。分割方式。
    max_depth:树的最大深度。
    min_samples_split:拆分内部节点所需的最少样本数,默认是2。
    min_samples_leaf:在叶节点处需要的最小样本数。默认是1。
    min_weight_fraction_leaf:在所有叶节点处(所有输入样本)的权重总和中的最小加权分数。如果未提供sample_weight,则样本的权重相等。默认是0。

2.3sklearn中使用SVR实例:


sklearn.svm.SVR(*, kernel='rbf', degree=3, gamma='scale', coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True, cache_size=200, verbose=False, max_iter=-1)
https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html?highlight=svr#sklearn.svm.SVR

  • 参数:
    kernel:核函数,{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’}, 默认=’rbf’。(后面会详细介绍)
    degree:多项式核函数的阶数。默认 = 3。
    C:正则化参数,默认=1.0。(后面会详细介绍)
    epsilon:SVR模型允许的不计算误差的邻域大小。默认0.1。

2.4岭回归实例分享:


sklearn.linear_model.ridge_regression(X, y, alpha, *, sample_weight=None, solver='auto', max_iter=None, tol=0.001, verbose=0, random_state=None, return_n_iter=False, return_intercept=False, check_input=True)
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.ridge_regression.html?highlight=rid#sklearn.linear_model.ridge_regression

  • 参数:
    alpha:较大的值表示更强的正则化。浮点数
    sample_weight:样本权重,默认无。
    solver:求解方法,{‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’}, 默认=’auto’。“ svd”使用X的奇异值分解来计算Ridge系数。'cholesky'使用标准的scipy.linalg.solve函数通过dot(XT,X)的Cholesky分解获得封闭形式的解。'sparse_cg'使用scipy.sparse.linalg.cg中的共轭梯度求解器。作为一种迭代算法,对于大规模数据(可能设置tol和max_iter),此求解器比“ Cholesky”更合适。 lsqr”使用专用的正则化最小二乘例程scipy.sparse.linalg.lsqr。它是最快的,并且使用迭代过程。“ sag”使用随机平均梯度下降,“ saga”使用其改进的无偏版本SAGA。两种方法都使用迭代过程,并且当n_samples和n_features都很大时,通常比其他求解器更快。请注意,只有在比例大致相同的要素上才能确保“ sag”和“ saga”快速收敛。您可以使用sklearn.preprocessing中的缩放器对数据进行预处理。最后五个求解器均支持密集和稀疏数据。但是,当fit_intercept为True时,仅'sag'和'sparse_cg'支持稀疏输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值