1. 线性回归
1.1 引言
给定数据集 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x n , y n ) } \{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\} { (x1,y1),(x2,y2),⋯,(xn,yn)},线性回归试图学得一个线性模型以尽可能准确地预测实值输出标记。其中,我们称该数据集中的 x i x_i xi 为输入(特征), y i y_i yi 为输出(标记)。下面的波士顿房价数据集[1]就是一个简单的例子:
面积(平方英尺) | 卧室数量 | 价格(千美元) |
---|---|---|
2104 | 3 | 400 |
1416 | 2 | 232 |
1534 | 2 | 315 |
852 | 1 | 178 |
在这个例子中,每一个输入拥有两个特征:面积与卧室数量, x 1 = [ 2104 , 3 ] T x_1 = [2104, 3]^T x1=[2104,3]T, x 2 = [ 1416 , 2 ] T x_2 = [1416,2]^T x2=[1416,2]T, ⋯ \cdots ⋯;输出为房屋价格, y 1 = 400 y_1 = 400 y1=400, y 2 = 232 y_2 = 232 y2=232, ⋯ \cdots ⋯
另外,我们在此约定另外几个符号:
- m m m:数据集中有 m m m 组数据,即训练数据的个数;
- n n n:特征的数量,也即向量 x i x_i xi 的维数;
- θ \theta θ:我们需要学习的模型中的参数,它的意义是每一个特征在影响输出时的权重;
- ( x , y ) (x,y) (x,y):训练数据集;
- ( x ( i ) , y ( i ) ) \left(x^{(i)},y^{(i)}\right) (x(i),y(i)):第 i i i 组训练数据。
1.2 线性回归的假设 (hypothesis)
线性回归试图学得一个由输入的各个特征的线性组合表示的模型来尽可能准确地预测实值输出标记:
h θ ( x ) = θ o + θ 1 x 1 + ⋯ + θ n x n (1) h_{\theta}(x) = \theta_o + \theta_1x_1 + \cdots + \theta_nx_n \tag{1} hθ(x)=θo+θ1x1+⋯+θnxn(1)
其中 θ = [ θ 0 , θ 1 , ⋯ , θ n ] T \theta = [\theta_0, \theta_1, \cdots, \theta_n]^T θ=[θ0,θ1,⋯,θn]T, h θ ( x ) h_{\theta}(x) hθ(x) 为假设的记号。我们的目标就是找到一组 θ \theta θ 值,使得 h θ ( x ) h_{\theta}(x) hθ(x) 的值尽可能接近实际的输出值 y y y。
1.3 代价函数 (cost function)
代价函数,有时也被称为平方误差函数、平方误差代价函数(实际上是两种最常用的代价函数)。在实际问题中,我们想要尽量的减少预测值和实际值的平方差,即使得平方误差代价函数的值最小。
前面我们说到,我们希望让 h θ ( x ) h_{\theta}(x) hθ(x) 的值尽可能接近实际的输出值 y y y,即让 ( h θ ( x ) − y ) 2 \left(h_{\theta}(x) - y\right)^2 (hθ(x)−y)2 的值尽可能小。现在我们来定义这个问题的代价函数:
J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 (2) J(\theta) = \frac{1}{2}\sum_{i=1}^m\left(h_{\theta}(x^{(i)}) - y^{(i)}\right)^2 \tag{2} J(θ)=21i=1∑m(hθ(x(i))−y(i))2(2)
现在我们的目标转化为了找到一组 θ \theta θ 的值,使得