神经网络示例将多维特征分为两组

时间:2010-09-29 10:22:58

标签: c# neural-network classification

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

我发现的所有分类示例都是二维的。以下是一些:

我正在尝试区分罕见事件和一些通常稳定的输入。 功能是键值对,其中值通常可以作为一个小数字离散化。第一类的可用培训数据非常庞大,但第二类培训数据很少,如果这样做有所不同。

训练集示例

A类

[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库?

2 个答案:

答案 0 :(得分:2)

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

另一方面,

SVM试图找到一个分隔数据点的边框,这样如果你的边界区域有间隙,那就没关系了。

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

使用OpenCV,可以很容易地插入不同的分类器,因此您可以正确地使用它。我在C ++中使用OpenCV和NN分类器来完成我的项目,结果非常好:

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

答案 1 :(得分:-1)

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

它只有两个输出类(通常是Good和Bad),但是具有您喜欢的许多功能。这就是为什么将您的两个SVM类分开的线称为“超平面”的原因,因为它存在于多维空间中-每个要素一个维。