浪子归家|求解线性回归应使用哪些方法?( 二 )


import numpy as npfrom matplotlib import pyplot#creating our dataX = np.random.rand(10,1)y = np.random.rand(10,1)#Computing coefficientb = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)#Predicting our Hypothesisyhat = X.dot(b)#Plotting our resultspyplot.scatter(X, y, color='red')pyplot.plot(X, yhat, color='blue')pyplot.show()
浪子归家|求解线性回归应使用哪些方法?在这里 , 我们首先创建了数据集 , 然后使用
浪子归家|求解线性回归应使用哪些方法?优点:
LSM的重要优点是:

  • 没有学习率
  • 没有迭代
  • 不需要功能缩放
  • 当“功能数量”较少时 , 效果很好 。
缺点:
重要的缺点是:
  • 当数据集很大时 , 计算量很大 。
  • 功能数量多时速度慢
  • 运行时间为O(n3)
  • 有时 , 您的X转置X是不可逆的 , 即 , 没有逆的奇异矩阵 。 您可以使用np.linalg.pinv代替 np.linalg.inv 来解决此问题 。
Adam方法ADAM代表自适应矩估计 , 是一种在深度学习中广泛使用的优化算法 。
这是一种迭代算法 , 适用于嘈杂的数据 。
它是RMSProp和小批量梯度下降算法的组合 。
除了存储像Adadelta和RMSprop这样的过去平方梯度的指数衰减平均值之外 , Adam还保留了过去梯度的指数衰减平均值 , 类似于动量 。
我们分别计算过去和过去平方梯度的衰减平均值 , 如下所示:
浪子归家|求解线性回归应使用哪些方法?mtvt初始化为0的向量时 , Adam的作者观察到它们偏向零 , 特别是在初始时间步长中 , 尤其是在衰减率较小时(即β1β1和β2β2接近1) 。
他们通过计算经过偏差校正的第一和第二矩估算值来抵消这些偏差:
浪子归家|求解线性回归应使用哪些方法?然后 , 他们使用以下命令更新参数:
浪子归家|求解线性回归应使用哪些方法?#Creating the Dummy Data set and importing librariesimport mathimport seaborn as snsimport numpy as np from scipy import statsfrom matplotlib import pyplotx = np.random.normal(0,1,size=(100,1))y = np.random.random(size=(100,1))现在 , 让我们找到线性回归的实际图形以及数据集的斜率和截距值 。
print("Intercept is " ,stats.mstats.linregress(x,y).intercept)print("Slope is ", stats.mstats.linregress(x,y).slope)
浪子归家|求解线性回归应使用哪些方法?现在 , 让我们使用Seaborn regplot 函数查看线性回归线。
pyplot.figure(figsize =(15,8))sns.regplot(x , y)pyplot.show()
浪子归家|求解线性回归应使用哪些方法?


推荐阅读