神经网络对名义数据的标准化处理,适用于单输出神经元

我刚开始学习机器学习和人工智能,最近开始接触神经网络。

我在stackoverflow上已经获取了一些信息,但目前我还无法理解从这些信息中得出的逻辑。

假设我们有4个名义值(但不是顺序的)[A, B, C, D]和2个已经标准化的数值[0.35, 0.55] – 因此有2个输入神经元,一个用于名义值,一个用于数值。我在神经网络文献中看到的通常是需要使用4个输入神经元进行编码。但我并不需要预测这些名义值。我只有一个输出神经元,它最多表示一种关系,就像我使用专家系统和规则时那样。

如果我将它们标准化为[0.2, 0.4, 0.6, 0.8],神经网络难道不能区分它们吗?对于神经网络来说,这只是一个数字,不是吗?

我的 naive 思路和想法如下:

A 与 0.35 的数值导致理想的 1。B 与 0.55 的数值导致理想的 0。C 与 0.35 的数值导致理想的 0。D 与 0.55 的数值导致理想的 1。

我的这种思考方式是否有误?

补充信息(编辑):这些名义值被包含在决策过程中(通过与数值结合使用统计工具来衡量其重要性),取决于它们是真是假。我知道它们可以二进制编码,但名义值的列表稍微大一些。

另一个例子:

症状 A 与血液测试 1 导致诊断 X(理想情况)症状 B 与血液测试 1 导致诊断 Y(理想情况)

实际上使用了专家系统。症状是名义值,但结合血液测试值可以得到诊断。最终的主要问题是:我必须以二进制方式编码症状,还是可以用数字替换症状?如果不能用数字替换,为什么在使用神经网络时二进制表示是唯一的方式?


回答:

输入

理论上,如何编码你的输入并不重要。只要不同的样本在输入空间中被表示为不同的点,就有可能用一条线将它们分开——这就是输入层(如果是线性的)所做的——它线性地组合输入。然而,数据在输入空间中的布局方式对学习过程中的收敛时间有巨大影响。一个简单的方式来理解这一点是:想象一组线在二维空间中穿过原点。如果你的数据散布在原点周围,那么这些线中的一些可能会将数据分成几部分,并且只需要很少的“移动”,特别是如果数据是线性可分的。另一方面,如果你的输入数据密集且远离原点,那么大多数初始的输入区分线甚至不会“触及”数据。因此,需要大量的权重更新才能到达数据,并且需要大量的精确步骤来将其“切割”成初始类别。

输出

如果你有类别,那么以二进制方式编码它们是相当重要的。想象一下,你有三个类别:ABC。如果你用三个神经元将它们编码为 1;0;00;1;00;0;1,那么在学习过程中以及后来处理噪声数据时,网络在“拿不准”的点可能会在输出层上显示为 0.5;0.0;0.5。这有意义,如果它真的是概念上介于 AC 之间,但肯定不是 B。如果你选择一个输出神经元并将 ABC 编码为 123,那么在相同的情况下,网络会给出 13 之间的平均值输入,这会给你 2!所以答案会是“肯定是 B”——显然是错误的!

参考:ftp://ftp.sas.com/pub/neural/FAQ.html

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注