本文分为 理论介绍 和 Python 代码实现 两部分
理论介绍
线性回归
线性回归是回归分析的一种。
假设目标值(因变量)与特征值(自变量)之间线性相关
然后构建损失函数;
最后通过令损失函数最小来确定参数。(最关键的一步)
损失函数
正规方程
为了评估出线性函数拟合的怎么样,需要使用到 Cost Function(代价函数),代价函数越接近 0,说明越好,等于 0 的时候即为完全拟合,我们可以对损失函数求导并令其等于 0。
假设有 n 组数据,其中目标值(因变量)与特征值(自变量)之间的关系为:
$$ f(x(i))= \theta _ {0} + \theta _ {1} x_ {1}^ {(i)} + \cdots + \theta _ {n} x_ {n}^ {(i)} $$用代码可以表示为 theta = np.linalg.inv(x.T.dot(x)).dot(x.T).dot(y)
正规方程的的适用条件
在实际中可能会出现是奇异矩阵,往往是因为特征值之间不独立。这时候需要对特征值进行筛选,剔除那些存在线性关系的特征值(好比在预测房价中,特征值 1 代表以英尺为尺寸计算房子,特征值 2 代表以平方米为尺寸计算房子,这时特征值 1 和特征值 2 只需要留 1 个即可)。
正规方程很方便而且容易实现,但是如果特征变量的数量变得很大的时候,计算量就会变得非常巨大,训练的速度将会变慢,所以,在使用正规方程时,应该考虑样本的数量,如果 n 超过 10000 时,建议不使用正规方程,可以使用下节讲到的梯度下降。
均值方差
在得到 $\theta $ 后,就可以预测出结果 prediction = x_test.dot(theta)
模型评估其实是相似的法则——找真实标签和预测值的差异。
我们的回归类算法中,可以使用均值方差评判是否预测到了正确的数值、以及是否拟合到了足够的信息。
$$ MSE= \frac {1}{m} \sum _ {i=1}^ {m} (f(x_ {i})-y_ {i})^ {2} $$用代码可以表示为:mse = np.mean((prediction - y)**2)
其中 prediction
表示预测结果,y 表示目标值。
Python 代码实现
|
|