### 使用SVC时,特征向量中的极大(或极小)值会影响偏差吗? [scikit-learn]

我正在尝试更好地理解我的特征向量的值如何可能影响结果。例如,假设我有一个如下所示的向量,最后一个值是结果(这是一个使用SVC的分类问题):

0.713, -0.076, -0.921, 0.498, 2.526, 0.573, -1.117, 1.682, -1.918, 0.251, 0.376, 0.025291666666667, -200, 9, 1

你会注意到,大多数值都集中在0附近,但是有一个值的数量级要小得多,为-200。

我担心这个值会使预测结果偏斜,并且由于这个值与其他值差异很大,它会被不公平地赋予更高的权重。

在创建特征向量时,这是需要担心的问题吗?还是我用来评估向量的统计测试会根据我提供的训练集来控制这个大(或小)值?在sci-kit learn中是否有你推荐的专门用于标准化向量的方法?

谢谢你的帮助!


回答:

是的,这是你应该担心的问题。SVM对任何特征尺度的变化都非常敏感,因此你需要使用预处理技术来减少这种可能性,以下是最常用的几种方法:

  1. 将每个特征维度线性缩放到[0,1]或[-1,1]区间
  2. 标准化每个特征维度,使其均值为0,方差为1
  3. 通过变换sigma^(-1/2)*X来去相关值,其中sigma = cov(X)(数据协方差矩阵)

这些都可以使用scikit-learn轻松实现(虽然要实现第三种方法,你需要scipy来进行矩阵的平方根和求逆)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注