为啥要对 SVM 特征向量进行余弦归一化?

Posted

技术标签:

【中文标题】为啥要对 SVM 特征向量进行余弦归一化?【英文标题】:Why should we perform cosine normalization for SVM feature vectors?为什么要对 SVM 特征向量进行余弦归一化? 【发布时间】:2012-07-25 18:22:02 【问题描述】:

我最近正在研究用于二进制情感分析的著名电影评论数据集。它由 1,000 条正面评论和 1,000 条负面评论组成。在探索具有 unigram 特征的各种特征编码时,我注意到所有以前的研究出版物都通过它们的欧几里得范数对向量进行归一化,以便将它们缩放到单位长度。

然而,在我使用 Liblinear 的实验中,我发现这种长度归一化会显着降低分类精度。我研究了向量,我认为这就是原因:向量空间的维度是,比如说,10,000。因此,与单个投影相比,向量的欧几里得范数非常高。因此,归一化后,所有向量在每个轴上都得到非常小的数字(即在轴上的投影)。

这让我感到惊讶,因为该领域的所有出版物都声称他们执行余弦归一化,而我发现不归一化会产生更好的分类。

因此我的问题是:如果我们不对 SVM 特征向量执行余弦归一化,是否有任何特定的缺点? (基本上,我正在为这种标准化需求寻找数学解释)。

【问题讨论】:

在低维空间中,归一化有降维一维的缺点​​。但这种减少在高维度上应该无关紧要。 【参考方案1】:

在阅读了 LibSVM 的手册之后,我意识到为什么与 not 规范化相比,规范化产生的准确度要低得多。他们建议将数据缩放到 [0,1] 或 [-1,1] 区间。这是我没有做过的事情。扩大规模将解决有太多数据点非常接近于零的问题,同时保留长度归一化的优势。

【讨论】:

以上是关于为啥要对 SVM 特征向量进行余弦归一化?的主要内容,如果未能解决你的问题,请参考以下文章

怎样用matlab进行列向量归一化?

归一化输入向量

为什么要对特征进行缩放(归一化)

模式识别 - 特征归一化 及 測试 代码(Matlab)

特征归一化——l2归一化的优势

机器学习面试题