这里对一些零碎的知识点进行补充,由于内容比较少,不再做详细的介绍。
模型判断
M
S
E
=
1
m
∑
i
=
1
m
(
y
i
−
y
i
^
)
2
MSE = \frac{1}{m} \sum_{i=1}^m (y_i - \hat{y_i})^2
MSE=m1i=1∑m(yi−yi^)2
R
M
S
E
=
M
S
E
=
1
m
∑
i
=
1
m
(
y
i
−
y
i
^
)
2
RMSE = \sqrt{MSE}= \sqrt{\frac{1}{m} \sum_{i=1}^m (y_i - \hat{y_i})^2}
RMSE=MSE=m1i=1∑m(yi−yi^)2
R
2
=
1
−
R
S
S
T
S
S
=
1
−
∑
i
=
1
m
(
y
i
−
y
i
^
)
2
∑
i
=
1
m
(
y
i
−
y
ˉ
)
2
y
ˉ
=
1
m
∑
i
=
1
m
y
i
R^2 = 1 - \frac{RSS}{TSS} = 1 - \frac{\sum_{i=1}^m (y_i - \hat{y_i})^2}{\sum_{i=1}^m (y_i - \bar{y})^2} \,\,\,\,\,\,\,\, \bar{y} = \frac{1}{m} \sum_{i=1}^m y_i
R2=1−TSSRSS=1−∑i=1m(yi−yˉ)2∑i=1m(yi−yi^)2yˉ=m1i=1∑myi
MSE:误差平方和,越趋近于0表示模型越拟合训练数据。
RMSE:MSE的平方根,作用同MSE
R²:取值范围(负无穷,1],值越大表示模型越拟合训练数据;最优解是1,即预测值等于真实值;当模型预测为随机值的时候,有可能为负;若预测值恒为样本期望,R²为0
分类模型中经常用到准确率,但回归没有,所以经常用R²当作准确率。为1也就是100%时,是最优的。api中就是lr.scorce
TSS:总平方和TSS(Total Sum of Squares),表示样本之间的差异情况,是真实方差的m倍
RSS:残差平方和RSS(Residual Sum of Squares),表示预测值和样本值之间的差异情况,是MSE的m倍
机器学习调参——交叉验证
这里介绍一种常用的模型选择方法是交叉验证 (cross validation) 。
如果给定的样本数据充足,进行模型选择的一种简单方法是随机地将数据集切分成三部分,分别为训练集( training set )、验证集 (validation set) 和测试集 (test set) 。训练集用来训练模型,验证集用于模型的选择,而测试集用于最终对学习方法的评估。在学习到的不同复杂度的模型中,选择对验证集有最小预测误差的模型。由于验证集有足够多的数据,用它对模型进行选择也是有效的。
但是,在许多实际应用中数据是不充足的。为了选择好的模型,可以采用交叉验证方法。交叉验证的基本想法是重复地使用数据;把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择。
在实际工作中,对于各种算法模型(线性回归)来讲,我们需要获取θ、λ、p的值;θ的求解其实就是算法模型的求解,一般不需要开发人员参与(算法已经实现),主要需要求解的是λ和p的值,这个过程就叫做调参(超参)
交叉验证:将训练数据分为多份,其中一份进行数据验证并获取最优的超参:λ和p;比如:十折交叉验证、五折交叉验证(scikit-learn中默认)等
1.简单交叉验证
简单交叉验证方法是:首先随机地将已给数据分为两部分,一部分作为训练集,另一部分作为测试集(例如, 70% 的数据为训练集, 30% 的数据为测试集);然后用训练集在各种条件下(例如,不同的参数个数)训练模型,从而得到不同的模型;在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
2. S 折交叉验证
应用最多的是 S 折交叉验证( S -fold cross validation ),方法如下:首先随机地将已给数据切分为 S 个互不相交的大小相同的子集;然后利用 S - 1 个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的 S 种选择重复进行;最后选出 S 次评测中平均测试误差最小的模型。
3.留一交叉验证
S 折交叉验证的特殊情形是 S = N,称为留一交叉验证( leave-one-out crossvalidation ),往往在数据缺乏的情况下使用.这里, N 是给定数据集的容量。