scikit learn - Python sklearn:"sklearn.preprocessing.normalize(X, norm='l2')"和"sklearn.svm.LinearS



有两种归一化方法:

1:这个在数据预处理中使用:sklearn.预处理。正常化(X,规范= 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矩阵的每一列。一个系数应该给成本函数增加多少权重是第二个问题。

最新更新