数据挖掘:基于R语言的实战 | 第7章:神经网络的基本方法
上一章我们简单介绍了有监督学习方法中最常用的线性模型和广义线性模型,第7章我们来认识一下神经网络的基本方法。本章先介绍了单个神经元和神经网络,然后介绍神经网络的训练方法,接着介绍提升模型泛化能力的一些方法,以及训练前的数据准备过程,最后给出了一个使用R语言建立神经网络模型的示例,供小伙伴们动手学起来!
7.1节首先介绍了单个神经元的结构,即信号、连接权、组合函数、激活函数及输出值,其中详细介绍了多种激活函数,包括Logistic函数、Tanh函数、Eliot函数、Arctan函数、指数函数、Softmax函数和恒等函数。随后这一节介绍了多层感知机的架构。多个神经元连接在一起就形成了神经网络,而多层感知机就是一种常用的结构较为简单的神经网络。各自变量通过输入层的神经元输入到网络中,输入层的神经元与第一层隐藏层的神经元连接在一起,各隐藏层之间也是如此连接,从而将输入的自变量层层转换,在输出层形成输出值。多层感知机可以形成非常复杂的非线性模型,但是缺点也是显而易见的,因为自变量与因变量之间的关系是复杂而非线性的,神经网络的可解释性比较差。
7.2节主要介绍神经网络模型的训练方法,首先讨论了不同因变量形式下神经网络的误差函数形式,包括因变量为二值变量或比例、多种取值的定类变量、定序变量、计数变量、取值可正可负的连续变量或非负连续变量的情形。然后介绍了神经网络经典的反向传播算法,包括算法的思想、相关概念、局限性及改进方法。
7.3节主要介绍提高神经网络模型泛化能力的方法。神经网络的复杂程度与隐藏单元的数目、参数值的大小有关。我们需要足够复杂的模型来拟合因变量与自变量之间的关系,但如果模型过于复杂,会将训练数据的噪声也学习进来,造成过度拟合,模型不易用于其他数据集。两种常用的方法可以提高神经网络的泛化能力,一种是穷尽搜索,设置不同数目的隐藏单元,从中选择最优,另一种方法是权衰减法,对权重施加惩罚,可以使得对模型预测精度没有什么影响的单元参数更接近0,以限制模型的复杂度。
7.4节主要介绍训练前的数据预处理过程。数据标准化和预处理可能会提升神经网络的性能,还可以降低训练的计算量。自变量之间的多重共线性会造成参数冗余,消除它的一种有效方法就是主成分分析。对于数据缺失的情况,可以预先进行插补。此外,对于自变量中的分类变量也需要进行一定的转换,才能输入到模型中。
7.5节给出了一个使用R语言建立神经网络模型的案例,然后介绍在移动运营商数据中如何应用神经网络模型。代码给出了非常详细的注释,大家快跟着学起来吧!