1. 线性回归
对于含有n个特征的样本i,其回归结果对应如下方程:
z i = b + w 1 x i 1 + w 2 x i 2 + . . . + w n x i n z_i = b+w_1x_{i1} + w_2x_{i2}+ ... +w_nx_{in} zi=b+w1xi1+w2xi2+...+wnxin
其中, w w w和 b b b是模型的参数;b是截距(intercept),也叫偏差(bias); w 1 w_1 w1~ w n w_n wn是回归系数,也叫权重(weights)。
假设当前数据是2个特征,则上面的方程可写成如下形式:
z = b + w 1 x 1 + w 2 x 2 z = b+w_1x_{1} + w_2x_{2} z=b+w1x1+w2x2
对于上述方程,输入特征取值 x 1 x_1 x1, x 2 x_2 x2就可以得到预测结果 z z z的值。而在神经网络中,也是从神经元左侧输入特征,接着神经元对数据处理后,右侧输出结果。所以,可以用神经网络来表达线性回归过程:
特征对应的权重即
w
w
w越大,表明传到下一层神经元信息就越大。
上面这种网络结构一般被称为“单层神经网络”(不考虑输入层)。
2. 模拟实现
用下面这组数据
x 1 x_1 x1 | x 2 x_2 x2 | z z z |
---|---|---|
1 | 0 | -0.05 |
1 | 1 | 0.05 |
0 | 1 | -0.05 |
0 | 0 | -0.15 |
import numpy as np
X = np.array([[1, 0], [1, 1], [0, 1], [0, 0]])
z = np.array([-0.05, 0.05, -0.05, -0.15])
def linear_regression(x1, x2):
w1, w2, b = 0.1, 0.1, -0.15 # 给定回归系数和截距
z = w1*x1 + w2*x2 + b
return z
z_re = linear_regression(X[:, 0], X[:, 1])
print(z_re)
输出结果:
[-0.05 0.05 -0.05 -0.15]