本文共 2184 字,大约阅读时间需要 7 分钟。
L2正则化,可以使系数w的绝对值变小,使对应的特征项对结果的影响变小。如果数据没有问题,多元线性回归和多项式回归中,才有使用正则化的必要,一元线性回归不需要L2正则化。
在岭回归中,经常能看到共线性(collinearity)这个词,其实就是特征之间线性相关。 X m n = [ x 1 , x 2 , . . . , x n ] X_{mn}=[x_1, x_2, ... , x_n] Xmn=[x1,x2,...,xn] 这里假如m表示样本数量,n表示特征数,那么 x 1 , x 2 , . . . , x n x_1, x_2, ... , x_n x1,x2,...,xn均为列向量,若 x 1 , x 2 , . . . , x n x_1, x_2, ... , x_n x1,x2,...,xn线性相关,则说明特征之间存在共线性。 因此当特征之间存在共线性时,X不可逆, X T X X^T X XTX也不可逆,那么正规方程 w = ( X T X ) − 1 X T y w=(X^{T}X)^{-1}X^{T}y w=(XTX)−1XTy就不能使用,L2正则化,就是为了解决这个问题而诞生的,即令 w = ( X T X + λ ∗ I ) − 1 X T y w=(X^TX+λ*I)^{-1}X^Ty w=(XTX+λ∗I)−1XTyI是单位矩阵,λ是超参数 在线性回归的损失函数中,添加一个L2正则化项,即为岭回归的损失函数,为其中,J1(θ)是没加L2正则化项时的损失函数,即
岭回归是在构建损失函数的时候,在普通线性回归损失函数的基础上加上L2正则化项,如果加的不是L2正则化项,而是L1正则化,那么就是Lasso回归。
关于L1正则化,详见这篇知乎文章:https://zhuanlan.zhihu.com/p/38309692 Lasso回归的目标函数为:先说一下何为多任务,如果要用同一条数据做多个预测,比如用一个人的身高、体重预测他的体脂率、血压、血糖等信息,这就是多任务,说白了,就是目标值不止一个。
而多任务Lasso回归,其实就是对每个目标值都用Lasso回归进行预测。 多任务Lasso回归的目标函数:弹性网络的正则化项综合了L1和L2范数,其目标函数为
随机梯度下降,在每次迭代参数时,都只使用一个样本,而非遍历所有训练样本,这样与普通梯度下降比起来,计算量就会小很多,从而使得参数快速接近局部最优解。但随机梯度下降仅以当前样本点进行梯度更新,通常无法达到真正局部最优解,只能比较接近,属于用精度换效率。
sklearn.linear_model.SGDRegressor()
关于在函数中出现参数 * ,可以阅读这个问题下的回答:https://www.zhihu.com/question/287097169
在回归问题中,不能再像分类一样用准确率来估计误差,sklearn中自带的评价标准为R^2
如果不建模,直接用训练集目标值的平均值进行估计(暴力估计),假如 y_i 为真实值,那么误差平方和为如果要计算建模后的误差相对于建模前降低了多少,那么可以用1减上面的数,得到:
为何不用均方差来作为模型评价的标准,可以看这篇知乎专栏:https://zhuanlan.zhihu.com/p/158817889?utm_source=wechat_session
在sklearn的线性回归模型中,默认使用 R^2 作为模型的评价标准
np.logspace()是获取一个在log尺度上等距分布的序列,即等比数列
转载地址:http://hnqh.baihongyu.com/