6

我正在寻找一个好的监督神经网络的源代码示例,它接受两个以上的特征(与大多数 XY 示例不同)并将数据分类为两组。根据我的阅读,支持向量机(SVM)可能是一个解决方案?

我发现的所有分类示例都是二维的。这里有几个:

我试图将罕见事件与许多通常稳定的输入区分开来。特征是键值对,其中的值通常可以离散化为一个小数。第一类的可用训练数据非常庞大,但第二类的训练集很少,如果这会有所不同的话。

示例训练集

甲类

[2, 1, 0, 1, 4, 3] -> A  
[1, 1, 2, 3, 3, 0] -> A
[0, 0, 1, 3, 2, 0] -> A

B类

[0, 4, 4, 4, 4, 3] -> B

分类示例

[1, 3, 4, 4, 4, 0] -> ??? (probably B)

信心评级,例如。“85% 确定 B”有助于区分罕见事件的阈值。

神经网络是最好的解决方案吗?是否有任何内置的 .NET 库?

4

2 回答 2

2

实际上,所有这些机器学习技术都有其优点和缺点。在使用 NN(单层感知器)时,需要考虑是否有足够的训练数据。从技术上讲,您需要能够覆盖维度内的所有单元格才能获得良好的结果。

另一方面,SVM 会尝试找到分隔数据点的边界,因此如果您在不靠近该边界的区域中有间隙,那很好。

+/- boosting 周围有 5-6 个分类器,老实说,似乎大多数时间类型的分类器都是主观选择的。另一方面,有些人使用多个分类器并比较结果。

使用 OpenCV,很容易插入一个不同的分类器,这样你就走上了正确的道路。我在 C++ 中使用了带有 NN 分类器的 OpenCV,结果非常好:

http://www.springerlink.com/content/j0615767m36m0614/

于 2010-09-29T12:07:31.977 回答
-1

SVM 是 n 维的 - 只是示例通常是 2D 的,因为一旦达到 3 个以上,解决方案就不再适合 2D 插图。

它只有两个输出类(通常是 Good 和 Bad),但它有许多你喜欢的特性。这就是为什么分割两个 SVM 类的线被称为“超平面”的原因,因为它存在于多维空间中——每个特征都有一个维度。

于 2019-10-03T23:26:05.350 回答