[英]What does norm='l2' in sklearn.preprocessing.normalize do for matrix normalization?
[英]python sklearn: what is the different between “sklearn.preprocessing.normalize(X, norm='l2')” and “sklearn.svm.LinearSVC(penalty='l2')”
这是两种规格化方法:
1:这是在数据预处理中使用的:sklearn.preprocessing.normalize(X,norm ='l2')
2:分类方法中使用了另一种方法:sklearn.svm.LinearSVC(penalty ='l2')
我想知道,它们之间有什么区别? 这两个步骤是否必须在完整模型中使用? 仅使用一种方法就足够了吗?
这两个是不同的东西,通常您都需要它们,以便建立一个良好的SVC模型。
1)第一个意味着要缩放(规格化)X数据矩阵,您需要用每列的L2范数除,就是这样: sqrt(sum(abs(X[:,j]).^2))
,其中j是数据矩阵X中的每一列。 这样可以确保每一列的值都不会太大,这使得某些算法难以收敛。
2)无论您的数据如何缩放(以及值的大小),仍然可能存在异常值或某些特征(j)过于占主导地位,并且您的算法(LinearSVC())可能过度信任它们,而不应该如此。 这就是L2正则化发挥作用的地方,也就是说,除了算法最小化的功能外,还会对系数施加成本,以使系数不会变得太大。 换句话说,模型的系数成为SVR成本函数的额外成本。 多少费用 ? 由C(L2)值决定为C*(beta[j])^2
总结起来,第一个告诉用哪个值划分X矩阵的每一列。 第二个系数应该使成本函数负担多少权重。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.