sklearn.model_selection.GridSearchCV
- 具体在scikit-learn中,主要是使用网格搜索,即GridSearchCV类。
- estimator :即调整的模型
- param_grid:即要调参的参数列表,以dict呈现。
- cv: S折交叉验证的折数,即将训练集分成多少份来进行交叉验证。默认是3,。如果样本较多的话,可以适度增大cv的值。
- scoring: 评价标准。
- 获取最好的模型grid.best_estimator_及参数 grid.best_params_
交叉验证(Cross Validation)
- 交叉验证用在数据不是很充足的时候。如果样本大于一万条(充足),可以随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。用训练集来训练模型,用验证集来评估模型预测的好坏和选择模型及其对应的参数。把最终得到的模型再用于测试集,最终决定使用哪个模型以及对应参数。
- 简单交叉验证:首先,随机将样本数据(train_data)分为两部分(比如: 70%的训练集,30%的测试集),然后用训练集来训练模型,在测试集上验证模型及参数。接着,再把样本打乱,重新选择训练集和测试集,继续训练数据和检验模型。最后选择损失函数评估最优的模型和参数。
- S折交叉验证(S-Folder Cross Validation)。S折交叉验证会把样本数据随机的分成S份,每次随机的选择S-1份作为训练集,剩下的1份做测试集。当这一轮完成后,重新随机选择S-1份来训练数据。若干轮(小于S)之后,选择损失函数评估最优的模型和参数。
- 留一交叉验证(Leave-one-out Cross Validation),它是第二种情况的特例,此时S等于样本数N,这样对于N个样本,每次选择N-1个样本来训练数据,留一个样本来验证模型预测的好坏。此方法主要用于样本量非常少的情况(N小于50时)。
SVM RBF
SVR&SVC
- 惩罚系数𝐶即SVM松弛变量的系数。它在优化函数里主要是平衡模型的复杂度和误分类率这两者之间的关系,可以理解为正则化系数。当𝐶比较大时,损失函数也会越大,这意味着不愿意放弃比较远的离群点,这样会有比较少的支持向量,也就是说支持向量和超平面的模型也会变得越复杂,也容易过拟合。反之,当𝐶比较小时,意味我们不想理那些离群点,会选择较多的样本来做支持向量,最终的支持向量和超平面的模型也会简单。
- RBF核函数的参数𝛾。RBF 核函数 K ( x , z ) = e x p ( − γ ∣ x − z ∣ 2 ) , γ > 0 K(x,z)=exp(-\gamma|x-z|^2),\;\gamma>0 K(x,z)=exp(−γ∣x−z∣2),γ>0,𝛾主要定义了单个样本对整个分类超平面的影响,当𝛾比较小时,单个样本对整个分类超平面的影响距离比较远,容易被选择为支持向量,反之,当𝛾比较大时,单个样本对整个分类超平面的影响距离比较近,不容易被选择为支持向量,或者说整个模型的支持向量也会少,模型会变得更复杂。
SVR
- 损失距离度量𝜖,它决定了样本点到超平面的距离损失,当𝜖比较大时,损失|𝑦𝑖−𝑤∙𝜙(𝑥𝑖)−𝑏|−𝜖较小,更多的点在损失距离范围之内,而没有损失,模型较简单,而当𝜖比较小时,损失函数会较大,模型也会变得复杂。