代码之家  ›  专栏  ›  技术社区  ›  Blair

matlab中的神经网络输入偏差

  •  1
  • Blair  · 技术社区  · 15 年前

    在Matlab(神经网络工具箱+图像处理工具箱)中,我编写了一个脚本,从图像中提取特征并构造一个“特征向量”。我的问题是有些特性的数据比其他特性多。我不希望这些特性比其他数据较少的特性更重要。

    例如,我可能有一个由9个元素组成的特征向量:

    hProjection = [12,45,19,10];
    vProjection = [3,16,90,19];
    area = 346;
    

    FeatureVector=[项目,项目,区域];

    如果我用FeatureVector作为输入构建一个神经网络,那么这个区域只占输入数据的10%,并且不那么重要。

    我使用的是一个带有Tansig传输功能(模式识别网络)的前馈反向传播网络。

    我该怎么处理?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Amro    15 年前

    当您将输入数据呈现给网络时,特性向量的每一列都会作为一个属性被单独地馈送到输入层。 您需要担心的唯一偏差是每个特性的比例(即:我们通常将特性规范化为[0,1]范围)。

    另外,如果您认为这些特性是依赖/相关的,那么您可能需要执行某种属性选择技术。在您的例子中,它取决于hproj/vproj特性的含义…


    编辑:
    我突然想到,作为替代 feature selection ,可以使用 dimensionality reduction 技术(PCA/SVD,因子分析,ICA,…)。例如, factor analysis 可用于提取这些hproj/vproj依赖的一组潜在隐藏变量。因此,您可以得到2个特性,而不是这8个特性,这样原来的8是新两个特性的线性组合(加上一些错误项)。参照 this page 举一个完整的例子