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

Posted

技术标签:

【中文标题】将多维特征分为两组的神经网络示例【英文标题】:Neural network example to classify multi-dimensional features into two sets 【发布时间】:2011-04-18 18:05:57 【问题描述】:

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

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

Single layer peceptron SVM (Support Vector Machine) in CSharp SVM.NET - 非常好,但输入仍然是二维的。

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

示例训练集

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

【问题讨论】:

神经网络与 SVM 完全不同 @Gabe:是的。我来自一个对机器学习知识知之甚少的人。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

使用 OpenCV,插入不同的分类器非常容易,因此您在正确的轨道上使用它。我在我的项目中使用了 C++ 中的 OpenCV 和 NN 分类器,结果非常好:

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

【讨论】:

版权归施普林格所有。如果您可以访问大学,则可以下载全文。 我已经弄清楚了如何在 SVM.NET 中进行多维处理!大获成功,现在开始测试。

以上是关于将多维特征分为两组的神经网络示例的主要内容,如果未能解决你的问题,请参考以下文章

n个数分为两组,两组数的个数尽可能相等,差值最小

PyTorch基础教程7多维特征input(学不会来打我啊)

1007 正整数分组

51Nod 1007 正整数分组 01背包

用于分类的深度信念网络的Matlab示例代码

神经网络中的分类特征值