神经网络模型特点:
训练模型的时间比较长;对于训练数据没涵盖到的数据,也有比较好的预测能力。相对于决策树,它处理连续型的输入输出能力比较好。神经网络模型不容易解释。
神经网络分三层,input layer, hidden layer和output layer. 理论上hidden layer可以有任意多层,在实际中,往往只有一层被使用。
对输入数据的每个属性进行标准化可以提高训练速度。对于连续型的属性,往往每个domain value一个input unit. 如果是classification,对于二值型的output, 可以用一个output unit(0,1)表示。如果有多个class, 每种class可以用一个output unit.
hidden layer里放多少unit往往是慢慢尝试出来的。
贴书上的图,看文字叙述很难懂,但是看一个具体的例子是怎么算的数就比较容易:
其中: 是算某一个节点输入值的. Wij是权重值,每个节点的初始权重值是随机的,往往是-1到1或者-0.5到0.5, 是Bias.
算某个节点的output,是这样算的: , 这样可以得到一个0到1之间的数,range比较小。
神经网络的大致思路是,如果经过神经网络后预测的值不对,就返回来调整hidden layer units的权重,做错了事就回头反思一下,直到总做对事为止。
计算误差的方式,output layer:
hidden layer: ,其中Wjk是从j到下一层的k节点的权重。所以这个过程叫backpropagate.
backpropagate是为了修改权重和bias。
修改权重:
其中l叫learning rate, 通常是0到1之间的数。
修改bias:
神经网络结束调节可以有多种,比如 足够小,或者misclassification足够小或者已经走过了预先设定那么多次的epochs
例子:
神经网络往往被批评可解释性不好,一种解释的方式是sensitivity analysis.就是x如果减5%,y会增加8%这种风格。