4

我正在尝试构建一个应用程序来检测来自网页的广告图像。一旦我检测到这些,我将不允许它们显示在客户端。

根据我在Stackoverflow question上获得的帮助,我认为 SVM 是实现我目标的最佳方法。

因此,我自己编写了 SVM 和 SMO。我从 UCI 数据存储库获得的数据集有 3280 个实例(链接到数据集),其中大约 400 个来自代表广告图像的类,其余代表非广告图像。

现在我正在获取前 2800 个输入集并训练 SVM。但在查看准确率后,我意识到这 2800 个输入集中的大多数来自非广告图像类。因此,我在该课程中获得了非常好的准确性。

那么我可以在这里做什么?我应该给 SVM 多少个输入集来训练,每个类有多少个输入集?

谢谢。干杯。(基本上提出了一个新问题,因为上下文与我之前的问题不同。神经网络输入数据的优化


谢谢回复。我想检查我是否正确导出了广告和非广告类的 C 值。请给我反馈。

在此处输入图像描述

或者你可以在这里查看文档版本。

你可以在这里看到 y1 eqaul 到 y2 的图表 在此处输入图像描述

并且 y1 不等于 y2 这里 在此处输入图像描述

4

2 回答 2

6

有两种方法可以解决这个问题。一种是平衡训练数据,使其包含相同数量的广告和非广告图像。这可以通过对 400 个广告图像进行过采样或对数千个非广告图像进行欠采样来完成。由于训练时间会随着使用的数据点数量而显着增加,因此您可能应该首先尝试对非广告图像进行欠采样,并创建一个包含 400 个广告图像和 400 个随机选择的非广告图像的训练集。

另一种解决方案是使用加权 SVM,以便广告图像的边距误差比非广告图像的边距误差权重更大,对于包 libSVM,这是通过-wi标志完成的。根据您对数据的描述,您可以尝试将广告图片的权重设为非广告图片的 7 倍左右。

于 2010-02-18T20:16:18.040 回答
4

所需的训练集大小取决于特征空间的稀疏性。据我所知,您不是在讨论您选择使用哪些图像功能。在训练之前,您需要将每张图像转换为描述图像的数字(特征)向量,希望能捕捉到您关心的方面。

哦,除非您为运动重新实现 SVM,否则我建议您只使用libsvm

于 2010-02-17T20:32:54.090 回答