### 使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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