我正在尝试构建一个应用程序来检测来自网页的广告图像.一旦我发现了那些,我就不会允许那些在客户端显示.
从我对Stackoverflow问题的帮助,我认为SVM是达到我目标的最佳方法.
所以,我自己编写了SVM和SMO.我从UCI数据存储库获得的数据集有3280个实例(链接到数据集),其中大约400个来自表示广告图像的类,其余表示非广告图像.
现在我正在使用前2800个输入集并训练SVM.但在查看准确率后,我意识到这2800个输入集中的大多数来自非广告图像类.因此,我对该课程的准确性非常高.
那我该怎么办?关于我要给SVM培训多少输入集,以及每个类有多少输入集?
谢谢.干杯.(基本上提出了一个新问题,因为上下文与我之前的问题不同.优化神经网络输入数据)
谢谢回复.我想检查一下我是否正确得出广告和非广告类的C值.请给我反馈.
或者你可以在这里看到doc版本.
你可以在这里看到y1 eqaul到y2的图形
并且y1在这里不等于y2
有两种方法可以解决这个问题.一种是平衡训练数据,因此它包括相同数量的广告和非广告图像.这可以通过对400个广告图像进行过采样或对数千个非广告图像进行欠采样来完成.由于训练时间会随着使用的数据点数量的增加而急剧增加,因此您应该首先尝试对非广告图像进行欠采样,并创建一个包含400个广告图像和400个随机选择的非广告的训练集.
另一种解决方案是使用加权SVM,以便广告图像的边距误差比非广告的边际误差更重,对于包libSVM,这是通过-wi
标志完成的.根据您对数据的描述,您可以尝试权衡广告图片的重量比非广告重7倍.