简单线性回归

简单线性回归

什么是线性回归呢?举个例子,房价和房屋面积的关系中,当房屋面积增大,则房屋价格也会增大。呈现出一条线性分布,如图 横坐标为房屋面积,纵坐标为房屋价格 每个点表示一个房子的面积和对应的价格 直线为他们的线性分布

简单线性回归_第1张图片
image

直线可以表示为函数

image

拟合结果为

image

我们如何寻找最佳拟合函数呢?当拟合结果越接近真实结果时拟合的效果越好

我们用最小二乘法来表示拟合程度,用来表示误差大小的也称为损失函数

image

什么时候损失函数会最小呢?

当损失函数导数为0时,损失函数取得最小值。当我们对损失函数求导后可以得到最优的a,b值

简单线性回归_第2张图片
image

最后当我们计算出最小a,b值将新的x,y调用y=ax+b即可获得预测值

损失函数or评价函数

  • 均方误差MSE

    前面的损失函数其实有个缺陷,因为损失函数最终会和m有关所以我们需要把损失函数最后除以m,这样损失就和样本数无关了。而形成的新的损失函数就是我们说的均方误差

    image

    原理

      np.sum((y_predict - y_test)**2) / len(y_test)
    

    scikit-learn

      from sklearn.metrics import mean_squared_error
      mean_squared_error(y_test, y_predict)
    
  • 均方根误差RMSE

    因为MSE会放大误差,量纲和原Y的量纲相差较大,所以有的时候会在MSE上在加一个根号来解决这个问题

    简单线性回归_第3张图片
    image

    原理

      from math import sqrt
      sqrt(np.sum((y_predict - y_test)**2) / len(y_test))
    
  • 平均绝对误差MAE (因为绝对值不适合求导所以不适合做损失函数,但是可以做评价函数)

    image

    原理

      np.sum(np.absolute(y_predict - y_test))/len(y_test)
    

    scikit-learn

      from sklearn.metrics import mean_absolute_error
      mean_absolute_error(y_test, y_predict)
    
  • R Squared

    RMSE和MAE最终计算出来结果的量纲和预测结果的量纲时相近的,而分类的准确度是用0~1之间的数来评价准确度的。

    简单线性回归_第4张图片
    image

    推导

    简单线性回归_第5张图片
    image

    原理

      1 - mean_squared_error(y_test, y_predict)/np.var(y_test)
    

    scikit-learn

      from sklearn.metrics import r2_score
      r2_score(y_test, y_predict)
    
      #LinearRegression中的score返回就是r2_score

你可能感兴趣的:(简单线性回归)