Machine learning 如何为LibSVM选择合适的训练数据?
我有一个数据集,其中每一行代表广告/横幅印象。 一些印象属于+1类-这意味着用户在这个印象之后点击了广告,其他的属于-1类。 数据集包含1%的+1行和99%的-1行。总行数约为600万行 我做了两个实验:Machine learning 如何为LibSVM选择合适的训练数据?,machine-learning,svm,libsvm,Machine Learning,Svm,Libsvm,我有一个数据集,其中每一行代表广告/横幅印象。 一些印象属于+1类-这意味着用户在这个印象之后点击了广告,其他的属于-1类。 数据集包含1%的+1行和99%的-1行。总行数约为600万行 我做了两个实验: 当我将数据集分成两个大小相同的部分时,我得到99,95% 总精度,但+1级的精度为0% 当我拿走一半的时候 +将1行添加到训练集中,并附加相同数量的-1行(因此训练集中包含50%的+1行和50%的-1行),然后将其余的 测试数据中+1行的一部分和-1行的另一部分 设置-我获得95%的准确率。但
在我的例子中,如何正确地训练模型?在这种设置中,通常会做很多事情,称为不平衡数据。计算机科学中有许多重要的问题是这样的:搜索引擎有数百万个文档,只有少数与搜索词相关,人脸检测器必须在没有人脸的地方(自然场景等)进行数百万次无检测。可以做很多事情 第一件事是你需要改变一下你测量准确度的方式。正如您已经看到的,只要说所有数据点都是负类,就可以获得99.5%的准确率,但是从预测的角度来看,这个分类器是绝对无用的 一种常用的技术是构建或确定分类器的合理操作点 在许多情况下,问题的目标决定了LIBSVM支持的每个类的不同权重。例如,将正片和负片混淆比将负片和正片混淆要贵100倍吗?训练SVM时,可以使用w1 100 w-1 1 当然,不要忘记找到一个好的C(或者如果使用RBF,找到一个好的C和gamma)的重要性 一般来说,这不是选择要训练的子集,而是调整训练和测试机制,使其在设置中合理工作