我对学习神经网络很感兴趣,作为一个例子,我尝试使用以下实验得出的数据集。
我正在使用以下输入向量作为我的神经网络;
X = [1 1; 1 2; 1 3; 1 4; 4 1; 4 2; 4 3; 4 4; 7 1;7 2; 7 3; 7 4]';
Tc = [1 1 2 3 1 1 2 2 1 1 2 2];
我想将输入数据分成三个类,由输入向量Tc描述。然后我将目标类索引Tc转换为向量T,我使用的扩展值为1.
在MATLAB中使用newpnn函数,我得到了三个类的决策边界。
我对确认决策边界是否合适存在疑问。我使用单个数据X =[2;3.55]
验证输出属于第2类。它由输出图中的黑点表示。蓝色是1级。黄色是属于2级的区域。红色是3级。
如图所示,神经网络的预测被发现为2级,与该组的实际类别一致。
那么,这是否意味着我的神经网络是正确和有效的?
P.S。我对神经网络有基本的了解。此外,我理解拥有更多培训示例和验证集的概念。我希望得到一个满足可用细节的答案,因为我无法通过实验获得更多数据。
答案 0 :(得分:1)
通常,当您教授神经网络时,您应该 3套:
例如,我们正在构建一种算法,用于检查某人是否“有机会致富”。以下是制作和验证神经网络的方法。
这就是你如何建立一个可靠的神经网络(不要忘记,两个主要问题是不检查最终结果和过度拟合)。
过度拟合是一个关键概念。我会尝试定义一下并给出一个例子。过度拟合使得算法能够构建非常接近的近似但是无法预测任何东西(我称之为“虚拟算法”)。
让我们比较一个线性插值器和一个多项式(1000000度,非常高度)。我们的多项式算法可能非常适合数据(极端过度拟合恰好适合我们所有的数据)。但是,它根本无法预测任何事情。
对于下面的例子,如果我们在验证集(从真实世界数据中提取)中有一个(2,-2)和(-1,2)中的点,我们可以假设我们的多项式插值明显过度拟合,因为它表示诸如(-1,10)和(2,20)之类的值。线性的应该更接近。
我希望它会有所帮助。 (请注意,我不是该领域的专家,但我试图提出一个非常易读且简单的答案,所以如果有任何错误,请随意评论:))