线性回归是一种发现独立变量和因变量之间关系的统计方法。让我们用一个简单的数据来解释线性回归模型。
表1:薪酬数据示例
表2:散点图图
“经验年数”列是独立变量,“1000美元薪金”列值是因变量。原因是,我们无法在数学上确定经验值的年份(独立变量)。但是,我们可以根据多年的经验确定/预测工资栏值(相关变量)。如果您查看数据,根据经验年数的多少,相关列值(薪水)正在增加/减少。
为了拟合上述分散图中各点之间的最佳截距线,我们使用了一个称为“误差平方和”的度量,并通过比较这些线来找出最佳拟合,以减少误差。误差是实际值与预测值的差值。
为了找出每个因变量的错误,我们需要使用下面的公式。
SSE输出的误差平方总和为5226.19。为了做到最佳直线截距,我们需要应用线性回归模型尽可能降低SSE值。为了识别斜率截距,我们使用方程
y = m x + b,
'm'是斜率
'x'→独立变量
'b'是截距
我们将使用普通最小二乘法来找到最佳直线截距 (y) 斜率(m)
要使用OLS方法,我们应用下面的公式来找到方程
我们需要计算斜率'm'和直线截距'y'。以下是计算这些值的简单表格。
m = 1037.8 / 216.19
m = 4.80
b = 45.44-4.80 * 7.56 = 9.15
因此,y = m x + b→4.80x + 9.15
y = 4.80x + 9.15
让我们将我们的OLS方法结果与MS-Excel进行比较。是。我们可以在Microsoft Excel中测试我们的线性回归最佳线条。
使用MS-Excel的线性回归
我们的OLS方法非常接近于MS-Excel输出的' y '。
我们的OLS方法→输出y = x 4.80 + 9.15
ms excel输出y = 4.79x + 9.18。
让我们用我们的输出方程再次计算SSE
现在,平方和误差从5226.19显着减少到245.38。
普通最小二乘法看起来很简单,计算起来更容易。但是,这种OLS方法只适用于单变量和单变量的单变量数据集。多变量数据集是单个独立变量和多个因变量,我们更喜欢使用称为“梯度下降算法”的最佳机器学习算法之一。
梯度下降算法的主要目标是最小化成本函数。它是最小化误差(实际值和预测值的差异)的最佳优化算法之一。
我们来表示假设h,它是函数或学习算法。
目标与上述操作类似,我们在斜坡'm'中找到最佳拟合的截距线'y'。通过使用梯度下降算法,我们将通过应用θ0和θ1的各种参数并查看斜率截距直到收敛,找出最小cost function。
在现实世界的例子中,找出走下坡路的最佳方向是相似的。
我们朝着下降的方向迈出了一步。从每一步开始,你都会再次看到方向,快速下坡。在这个算法中使用类似的方法来最小化成本函数。
我们可以通过使用成本函数来衡量我们的假设函数的准确性,公式为
为什么我们在方程中使用偏导数?由于偏导数代表了函数变化的速度,因此变量变化。在我们的情况下,我们更改theta 0和theta 1的值并确定变化率。为了应用θ0和θ1的变化率,以下是将θ0和θ1应用于每次迭代的方程式。
要找到最佳最小值,请重复步骤以应用θ0和θ1的各种值。换句话说,重复步骤直至收敛。
alpha (a)是一个学习率/下坡有多大步幅
批量梯度下降
随机梯度下降
小批量梯度下降
在批量梯度下降中,为了计算成本函数的梯度,我们需要对每个步骤的所有培训示例进行求和
如果我们有3百万个样本(m个训练样本),那么梯度下降算法应该为每个epoch求和3百万个样本。为了移动一个单步,我们需要计算每个步骤300万次!
批量梯度下降不适合于大型数据集。
下面是批量梯度下降算法的python代码实现。
def gradientDescent(X, y, theta, alpha, num_iters):
"""
Performs gradient descent to learn theta
"""
m = y.size # number of training examples
for i in range(num_iters):
y_hat = np.dot(X, theta)
theta = theta - alpha * (1.0/m) * np.dot(X.T, y_hat-y)
return theta
在随机渐变下降中,我们在每次迭代时使用一个示例或一个训练样本,而不是使用整个数据集来对每个步骤进行总和
SGD广泛用于大型数据集培训,计算速度更快,可以并行训练
在计算之前需要随机shuffle 训练实例
以下为SGD的Python代码实现
def SGD(f, theta0, alpha, num_iters):
"""
Arguments:
f -- the function to optimize, it takes a single argument
and yield two outputs, a cost and the gradient
with respect to the arguments
theta0 -- the initial point to start SGD from
num_iters -- total iterations to run SGD for
Return:
theta -- the parameter value after SGD finishes
"""
start_iter = 0
theta= theta0
for iter in xrange(start_iter + 1, num_iters + 1):
_, grad = f(theta)
theta = theta - (alpha * grad) # there is NO dot product!
return theta
它与SGD类似,它在每次迭代中使用n个 样本而不是1个
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【最小二乘法案例(线性回归简化)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态
