matlab - 神经网络模型无法预测外部世界数据

标签 matlab machine-learning neural-network classification prediction

我建立了一个神经网络来预测某种数据(生物序列)。它有 32 个特征,其中 12 个具有特定单位,20 个只是整数(但为正数)。我的正集有 648 个样本,负集有 9000 多个样本。

为了训练我的网络,我对两者都采集了 500 个样本,其余的用于测试。当我使用 3 倍交叉验证来训练和测试我的网络时,只要我在将输入数据划分为训练集和测试集之前对输入数据进行归一化,它就可以为所有情况提供 100% 的准确度。准确率和召回率均为 100%

当我不对其进行标准化时,同一实验的准确度会下降至 65-70%。准确率和召回率分别为 5% 和 80%。

案件变得更加奇特。当我使用在第一个(标准化模型)模型中训练的网络来测试训练集中存在的几个随机数据集时,没有标准化(因为外部世界数据无法标准化,因为我们处理单个实例),它预测所有样本为1 或正数,完全偏向于正数。

当我使用第二个模型(非标准化模型)时,它会预测更多的误报。

如果“outp”是训练集正值的输出预测,“outn”是训练集负值的输出预测,我将网络的阈值计算为:

[ mean(outp) - std_dev(outp) + mean( outn) + std_dev(outn)] / 2 

第一个模型的值为 0.5,第二个模型的值为 0.489

1)问题出在哪里?有人能给我解释一下吗?

2)当我们训练时,建议对数据进行归一化,但这是否意味着如果由将要使用预测工具的用户提供输入值,分类器会错误解释输入值,因为单个样本不能正常化吗?

3)此外,在此类问题或一般分类器问题中找到阈值的最佳方法是什么?

4) 我不知道还应该提供哪些信息。请也让我知道这一点。

我提供了错误图纪元的链接。

https://www.dropbox.com/s/1gideuvbeje2lip/model2_unnormalised.jpg https://www.dropbox.com/s/nb4zyt3h370pk8m/model1_normalised.jpg

我还想提一下,为了标准化,我使用了 MATLAB 的内置函数

我的正矩阵是 32 个特征乘以 648 个样本(即 32 x 648)

负矩阵是 32 个特征乘以 9014 个样本(即 32 x 9014)

在任何分区之前,首先使用 MATLAB 的 normr 函数将两者归一化为训练集、测试集或验证集。

最佳答案

您可以标准化数据,但是当您收到用户的新输入时,您必须使用训练网络时使用的相同“最小值”和“最大值”来标准化其数据。 由于内置函数不会为您提供这些值,因此您可能需要手动标准化矩阵,然后存储“最小值”和“最大值”以便稍后标准化用户输入。

我使用这个公式,但还存在其他公式:

MatNorm = (Mat - min(Mat)) / (max(Mat) - min(Mat))

另外,您使用了多少正测试数据进行训练?

关于matlab - 神经网络模型无法预测外部世界数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20570029/

相关文章:

matlab - MATLAB 中逻辑类型的混淆

performance - 在 MATLAB 中用 bsxfun 替换 repmat

machine-learning - 使用 Keras 进行文本分类 : How to add custom features?

machine-learning - keras 模型中的 NaN 损失

matlab - 配置多 channel ASIO4ALL v2.13

c++ - 如何将 MATLAB Lab 色标转换为 OpenCV Lab 色标?

python-3.x - sklearn 中的 K 最近邻 - ValueError : query data dimension must match training data dimension

machine-learning - 数据集极不平衡的 Tensorflow 分类

python - 如何在 python 中的同一图形上以升序绘制压缩列表的前 5 和后 5?

python - 如何训练具有 2D 输出的网络? ( python ,凯拉斯)