神经网络的新手

时间:2014-09-06 17:13:04

标签: neural-network prediction predict

在玩一些基本的线性回归后,开始玩神经网络以获得乐趣。我是一名英语老师,所以没有数学背景,试着读一本关于这些东西的书是我的想法。我认为这是一个更好的途径来解决一些基本问题(即使我怀疑没有简单的答案)。只是寻找一些普通人的一般指导。我正在使用名为NEURO XL的Excel加载项的试用版。如果这些问题太“基本”,我会道歉。

我的第一个项目涉及根据多项考试成绩,GPA,练习考试成绩等预测SAT学生的口语成绩以及一些定性数据(性别:M = 1,F = 0;参加SAT预科班:Y = 1,N = 0;参加校队运动:Y = 1,N = 0)。

总的来说,我有21个变量,我想进入网络,输出是实际分数(200-800)。

我有9000多年的数据记录/学生。以下是我的问题:

  1. 我应该用9000多个记录来训练网络? 1A。我是否应该完全随机选择此培训数据或更多地参与其中并确保我包含各种输出分数和各种输入变量?

  2. 如果我将数据分成偶数,例如9x1000(或多个),并为每个数据创建一个网络,然后在其他8个集合上测试这9个中的每一个的结果,看看哪个具有样本中MSE最低,如果我想预测入学学生的分数(根本不包括在这些数据中),这是“选择”最佳网络的有效方式吗?

  3. 由于我作为输入使用的测试分数在规模上有所不同(例如,有些在1-100,有些在1-20),我应该将所有输入归一化为各自的z-成绩吗?建议什么时候推荐?不推荐?

  4. 我在预测实际得分,但实际上,我并不关心确切得分,而是关注范围。如果我将输出分数分组到桶中,然后尝试预测这个数字而不是实际分数,我的网络会更准确吗?

  5. E.g。

    750-800 = 10

    700-740 = 9

    这样做有什么好处,还是我应该继续尝试预测确切分数?

    1. 如果我关心的是分数是高于还是低于600,那么我会把输出0(低于600)还是1(高于600)?

      5a上。我在某处读到使用0和1并不好,而是使用0.1和0.9 - 为什么会这样?

      5b中。怎么样-1(低于600),0(正好600),1(高于600),这会起作用吗?

      图5c。网络是否总是输出-1,0,1 - 或者它会输出分数,然后我必须进行综合或向下舍入以完成预测?

    2. 一旦我找到问题#3中的“最佳”网络,我是否可以使用不同的参数(时期数,隐藏层中的神经元数,动量,学习率等)来玩进一步优化?

      6a上。激活功能怎么样? Log-sigmoid会不会这样做,或者我应该尝试我的软件所具有的其他选项(阈值,双曲正切,零基log-sigmoid)。

      6b中。 log-sigmoid和从零的log-sigmoid有什么区别?

    3. 谢谢!

1 个答案:

答案 0 :(得分:4)

首先是关于问题本身的一些元内容(而不是关于问题的答案)。

我必须笑一点,你说'如果这些问题太过基本,我会道歉。"'然后继续问一个最彻底,最深思熟虑的问题,我被视为某人在SO上的第一篇文章。 我不会太担心你会因为问这些东西而让人低头看着你。

就所需知识的深度和范围而言,这是一个非常大的问题,尤其是所需的统计知识和对神经网络的熟悉程度。 您可能希望尝试将其分解为分布在不同StackExchange站点上的几个问题。

在我的头顶,其中一些绝对属于统计StackExchange,交叉验证:https://stats.stackexchange.com/

您可能还想试用https://datascience.stackexchange.com/,这是一个专门针对机器学习和相关领域的测试版网站。


也就是说,有一些我认为我可以帮忙回答。 我无法回答的任何事情都是我没有资格帮助你的。

问题1

  

我应该用9000多条记录来训练网络? 1A。我是否应该完全随机选择此培训数据或更多地参与其中并确保我包含各种输出分数和各种输入变量?

随机选择训练数据可能不是一个好主意。 请记住,真正的随机数据包括群集。 随机选择的学生可能恰好只包括那些在ACT考试中得分超过30分的学生,这可能会导致你的结果出现偏差。 同样,如果您只选择SAT分数低于700的学生,您构建的分类器将无法区分预期得分为720的学生和预计得分为780的学生 - 他们将会看到与分类器相同,因为它是在没有相关信息的情况下进行训练的。

您希望确保不同输入和不同输出的代表性样本。 因为您正在处理可能相关的输入变量,所以您不应该尝试在选择此数据时执行任何过于复杂的操作,否则您可能会错误地在输入中引入另一个偏差。 也就是说,您不想选择主要由异常值组成的训练数据集。 我建议您尝试确保输入涵盖您正在观察的所有变量的所有可能值,以及输出的所有可能结果(SAT分数),而不限制如何满足这些要求。 我确信那里有算法可以做到这一点,但我自己也不了解它们 - 对于Cross Validated而言,这本身就是一个很好的问题。

问题3

  

由于我作为输入使用的测试分数在规模上有所不同(例如,有些是1-100,有些是1-20),我应该将所有输入归一化为各自的z分数吗?建议什么时候推荐?不推荐?

我的理解是,不建议将其作为Nerual Network的输入,但我可能错了。

网络的融合应该为您处理。 网络中的每个节点都会为其输入分配权重,将它们乘以权重,并将这些产品作为其计算的核心部分求和。 这意味着网络中的每个节点都在为每个输入搜索一些系数。 为此,所有输入都将转换为数字值 - 因此性别等条件将被转换为" 0 = MALE,1 = FEMALE"或类似的东西。

例如,节点的指标在给定时间点可能看起来像这样:

2*ACT_SCORE + 0*GENDER + (-5)*VARISTY_SPORTS ...

每个值的系数正是网络在收敛时搜索的内容。 如果更改值的比例,例如ACT_SCORE,则只需更改该比例因子的接收器所找到的系数的比例。 结果应该仍然相同。

在准确性方面存在其他问题(计算机代表小分数的能力有限)和可能进入此速度的速度,但不熟悉NEURO XL,我不能说它们是否适用于此技术

问题4

  

我正在预测实际得分,但实际上,我并不关心确切得分,而是更关注范围。如果我将输出分数分组到桶中,然后尝试预测这个数字而不是实际分数,我的网络会更准确吗?

虽然您应该以更少的可能输出(分数)更快地收敛到解决方案,但这会降低准确性。

神经网络实际上在其输入变量中描述了非常高维的函数。 如果减小该函数输出空间的粒度,则基本上表明您不关心该函数中的局部最小值和最大值,尤其是在输出得分之间的边界附近。 因此,您正在牺牲可能是" true"的重要组成部分的信息。您正在搜索的功能。


我希望这会有所帮助,但你真的应该把这个问题分解成它的许多组件并在不同的网站上分别询问它们 - 可能它们中的一些也属于StackOverflow。

相关问题