- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Liblinear/Libsvm 很陌生,这里遇到了一个好问题。
我有非常大的训练数据(2.883.584 个高度不平衡的样本,每个样本都是 21 维),还有用于测试的大数据(262.144 个样本也有 21 维)。我使用 LIBSVM(或 LibLinear)的线性内核实现,因为我的数据具有大数据性质。文献警告我使用 RBF 核处理这些数据的问题。
我的问题是:无论我做什么,分类器都只预测一个类(样本较多的类,或者我实验中的负类)。
到目前为止我尝试过:
1-训练平衡和不平衡数据,不缩放数据,不选择参数。
2-训练平衡和不平衡数据,使用不同范围([-1,1]和[0,1])缩放数据,但不选择参数。
3-训练平衡和不平衡数据,通过参数选择将数据缩放到不同范围([-1,1]和[0,1])。
所有这些实验的准确率都是 81%,但这些正确的预测都来自负类。所有正类都被线性支持向量机错误分类。
.model 文件非常奇怪,如下所示:
solver_type L2R_L2LOSS_SVC_DUAL
nr_class 2
label 1 -1
nr_feature 21
bias -1
w
0
0
nan
nan
0
0
0
0
0
nan
nan
0
0
0
0
0
nan
nan
0
0
0
当我通过网格搜索进行参数选择时,最佳 C 总是为我提供 50% 的 5 倍交叉验证最佳准确度。这就是我在 Matlab 中进行网格搜索的方法:
for log2c = 1:100,
cmd = ['-v 5 -c ', num2str(2^log2c)];
cv = train(label, inst, cmd);
if (cv >= bestcv),
bestcv = cv; bestc = 2^log2c;
end
fprintf('%g %g (best c=%g, rate=%g)\n', log2c, cv, bestc, bestcv);
end
编辑:这是我的训练数据的一个正样本和负样本:
1 1:4.896000e+01 2:3.374349e+01 3:2.519652e-01 4:1.289031e+00 5:48 6:4.021792e-01 7:136 8:4.069388e+01 9:2.669129e+01 10:-3.017949e-02 11:3.096163e+00 12:36 13:3.322866e-01 14:136 15:4.003704e+01 16:2.168262e+01 17:1.101631e+00 18:3.496498e+00 19:36 20:2.285381e-01 21:136
-1 1:5.040000e+01 2:3.251025e+01 3:2.260981e-01 4:2.523418e+00 5:48 6:4.021792e-01 7:136 8:4.122449e+01 9:2.680350e+01 10:5.681589e-01 11:3.273471e+00 12:36 13:3.322866e-01 14:136 15:4.027160e+01 16:2.245051e+01 17:6.281671e-01 18:2.977574e+00 19:36 20:2.285381e-01 21:136
这是我的测试数据的一个正样本和负样本:
1 1:71 2:2.562365e+01 3:3.154359e-01 4:1.728250e+00 5:76 6:0 7:121 8:7.067857e+01 9:3.185273e+01 10:-8.272995e-01 11:2.193058e+00 12:74 13:0 14:121 15:6.675556e+01 16:3.624485e+01 17:-1.863971e-01 18:1.382679e+00 19:76 20:3.533593e-01 21:128
-1 1:5.606667e+01 2:2.480630e+01 3:1.291811e-01 4:1.477127e+00 5:65 6:0 7:76 8:5.610714e+01 9:3.602092e+01 10:-9.018124e-01 11:2.236301e+00 12:67 13:4.912373e-01 14:128 15:5.886667e+01 16:3.891050e+01 17:-5.167622e-01 18:1.527146e+00 19:69 20:3.533593e-01 21:128
我的数据有问题吗?我应该增加网格搜索中的 C 范围吗?或者我应该使用另一个分类器?
最佳答案
对于不平衡的情况,假阳性和假阴性错误的成本不一样,因此正类和负类的惩罚应该不同。您可能需要为每个类别选择权重 C+ 和 C-。如果负模式多于正模式,那么您可能想让 C+ 大于 C−
model = svmtrain(trainLabels, trainFeatures, '-h 0 -b 1 -s 0 -t 0 -c 10 -w1 C+ -w-1 C-');
通常C+ * N+ = C- * N-
其中N+和N-分别是正类和负类的样本数。
还要确保您选择正确的 options 。对于您的训练样本数远大于特征数的情况,线性内核是您在帖子中所说的最佳选择。
关于matlab - lib Linear 的 50% 准确度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20634601/
由于我正在为 iPhone 进行开发,所以我刚刚购买了 iPhone 4 来测试我的应用程序,该应用程序需要测量我的位置坐标。我的 iPhone 上没有任何互联网(3GS、GPRS 或其他...),问
我正在尝试构建一个正则表达式,对于“人类导航的浏览器”的User-Agent:计算结果为 true,但对于机器人则为 false。不用说,匹配不会精确,但如果在 90% 的情况下都能正确匹配,那就足够
我将使用 Python 中的 OpenCV 和 pytesseract 的 OCR 从图片中提取文本。我有这样一张图片: 然后我编写了一些代码来从该图片中提取文本,但它没有足够的准确性来正确提取文本。
我正在尝试使用 vars 学习向量自回归模型R 中的包。这个包没有任何方法来衡量返回模型的准确性。 具体来说,我想使用 accuracy 中定义的 MASE来自 forecast 的函数R 中的包,以
我的工作是计划使用UIMA集群运行文档以提取命名实体,而不提取命名实体。据我了解,UIMA打包的NLP组件很少。我已经测试GATE一段时间了,对此相当满意。在普通文本上还可以,但是当我们通过一些代表性
我正在使用 libSVM(带有线性内核)训练和交叉验证(10 倍)数据。 数据由 1800 个 fMRI 强度体素组成,表示为单个数据点。svm-train 的训练集文件中约有 88 个数据点。 训练
我正在运行一个很大的单元测试列表,这些单元测试正在检查各种不同的类获取和设置。我遇到了一些错误,因为我的测试运行太快?!? 举个简单的例子,单元测试从模拟一个带有评论的博客开始; Blog b = n
我正在进行一项实验,其目标是将脑电图时间序列数据分为 3 类。然而,每当我进行训练时,我的损失都是 NaN,准确度是 0.0。 我的数据有 150 步长,有 4 个 channel 。全部归一化在 0
我已经编写了一个检测 IBeacons 的应用程序(swift,IOS)。虽然我可以正确检测到另一部 iPhone 的 RSSI、准确性和接近度,但在检测到我的信标 (Qualcomm) 时,它会被发
我有包含两列的 csv 文件: category, description 文件中有 1030 个类别,只有大约 12,600 行 我需要获得一个文本分类模型,并根据这些数据进行训练。我使用 kera
问题描述 我正在阅读 François Chollet ( publisher webpage , notebooks on github ) 的“Python 中的深度学习”。复制第 6 章中的示例
我对深度学习非常陌生:我正在 Udemy 上学习深度学习类(class)。一旦我执行我的代码,它会说: ValueError:模型未配置为计算准确性。您应该将 metrics=["accuracy"]
我是一名优秀的程序员,十分优秀!