ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

机器学习:线性回归学习

机器学习:线性回归学习 本内容为个人学习心得整理基于陈老师《机器学习》课程。本篇内容理论较多。1. 问题引入从一个发硬币的小游戏说起我们先来看一个简单的小游戏老师每天给你一定数量的硬币以下是过去四天的记录日期Day1Day2Day3Day4Day5收入1234那么第五天会给多少个硬币呢我们很可能会猜测是5枚。我们是依据什么来猜测的呢不管是否意识到过去四天的数据在我们脑海中已经形成了一个规律——每天比前一天多1枚。把这些数据画在坐标系中就是一条完美的直线。现在我们把游戏难度升级数据变成这样日期Day1Day2Day3Day4Day5收入2569这次规律就不那么明显了。把数据点画在坐标系中我们发现这些点并不在一条直线上但似乎又存在某种趋势。这时候问题就来了我们能不能找到一条直线尽可能地 穿过 这些点从而预测第五天的硬币数这就是线性回归要解决的核心问题。2. 线性回归的定义2.1 什么是线性回归线性回归Linear Regression是利用回归方程函数对一个或多个自变量特征值和因变量目标值之间关系进行建模的一种分析方式。简单来说线性回归就是要找到一个线性函数用它来描述特征值和目标值之间的关系从而对新的未知数据做出预测。2.2 单变量回归vs多元回归根据自变量的个数线性回归分为两类单变量回归只有一个自变量的情况多元回归多于一个自变量的情况2.3 线性回归的数学表达线性回归试图学得一个线性模型以尽可能准确地预测实值输出标记。给定数据集其中是第个样本的个特征是对应的真实标记。线性模型的一般形式为写成向量形式其中是权重向量是偏置项。学得和之后模型就确定了。2.4 更深刻地理解线性回归我们来看几个具体的例子例1第N天发的硬币数量第N天发的硬币数量1*天数这是一个一元线性模型只有一个特征天数。例2期末成绩期末成绩0.7*考试成绩0.3*平时成绩这是一个多元线性模型有两个特征考试成绩、平时成绩。例3房子价格房价 0.02*中心区域距离0.04*一氧化氮浓度(-0.12)*自住房平均房价0.254*城镇犯罪率这也是一个多元线性模型有四个特征。从这三个例子可以看到特征值与目标值之间建立了一个线性关系这个关系就是线性模型。每个特征前面的系数代表了该特征对目标值的 贡献程度。3. 线性回归的特征与目标关系分析线性回归当中主要有两种模型关系线性关系和非线性关系。3.1 线性关系3.1.1单变量线性关系当只有一个特征时特征与目标值的关系呈直线关系。在二维坐标系中就是一条斜率为、截距为的直线。3.1.2多变量线性关系当有两个特征时特征与目标值呈现平面关系。在三维坐标系中就是一个平面。推广到个特征就是维空间中的一个超平面。3.2 非线性关系如果特征与目标值之间不是简单的线性关系那么回归方程可以理解为更复杂的形式。但需要注意的是线性回归中的 线性 是指参数和是线性的而不是指特征必须是线性的。例如虽然对来说是非线性的但对参数来说仍然是线性的因此仍然属于线性回归的范畴。4. 线性回归的应用场景线性回归是机器学习中最基础、应用最广泛的算法之一常见的应用场景包括房价预测根据房屋面积、位置、房龄等特征预测房价销售额度预测根据广告投入、促销活动、季节等因素预测销售额贷款额度预测根据收入、信用评分、负债情况等预测可贷款额度除此之外线性回归在金融、经济、医学、社会科学等领域都有广泛应用。它不仅可以直接用于预测还可以用来分析各个特征对目标值的影响程度。5. 如何建模寻找那条最合适的线回到发硬币的例子当数据点不在一条直线上时我们需要找到一条直线让它尽可能地 拟合 这些数据点。所谓 建模就是要确定线性模型中的参数斜率和截距。那么问题来了什么样的线才算 最合适直观上我们希望所有数据点到这条直线的 距离 尽可能小。这就引出了损失函数的概念。6. 损失函数如何量化 拟合得好不好6.1 残差与残差平方和对于每个样本点模型的预测值为。预测值与真实值之间的差异称为残差为了衡量整体拟合效果我们把所有残差的平方加起来得到残差平方和Residual Sum of Squares, RSS为什么要用平方而不是绝对值因为平方可以放大较大的误差让模型更关注那些偏离较大的点同时平方函数是光滑可导的便于后续的优化计算。6.2 均方误差与损失函数我们的目标是让均方误差最小化即找到最优的和使得代入线性模型可写为注意在求最优参数的表达式中前面的常数系数如不影响最优解的位置因此可以省略。而损失函数Loss Function本身的定义带均方误差的系数为其中对应斜率对应截距。损失函数也叫代价函数Cost Function它的值越小说明模型拟合得越好。补充在很多机器学习教材如吴恩达的课程中损失函数还会在前面乘以即这个是为了在求导时与平方项的抵消使梯度表达式更简洁不影响最优解。在线性回归中基于均方误差最小化来进行模型求解的方法称为最小二乘法Least Squares Method。7. 线性回归的求解方法线性回归的损失函数是一个二元凸函数对于单变量线性回归参数是和这是一个无条件极值问题。凸函数的极值点就是最小值点而极值点处梯度为0因此可以转化为求解多元线性方程组。线性回归中经常使用的两种求解方法7.1 最小二乘法正规方程法最小二乘法通过令损失函数对每个参数的偏导数为0解线性方程组直接得到最优参数的解析解。对于多元线性回归写成矩阵形式后最优参数为其中是样本特征矩阵是真实标记向量。最小二乘法的局限性在真实任务中特征矩阵往往不是满秩矩阵。当数据集有大量特征特征数目甚至超过样本数时的列数多于行数显然不满秩根本无法求逆矩阵。这时候最小二乘法就失效了。7.2 梯度下降法一个更好的处理方式是使用梯度下降算法来求取最优值。梯度下降法是一种迭代优化算法不要求矩阵可逆适用于各种复杂的优化问题。注意在真正的开发过程中梯度下降法使用最多在深度学习中更加明显。8. 梯度下降算法详解8.1 什么是梯度在理解梯度下降之前我们首先要明白什么是梯度。梯度在单变量函数中梯度其实就是函数的微分代表着函数在某个给定点的切线的斜率。在多变量函数中梯度是一个向量向量有方向梯度的方向就指出了函数在给定点的上升最快的方向。用微积分的语言来说对多元函数的参数求偏导数把求得的各个参数的偏导数以向量的形式写出来就是梯度。例如对于二元函数其梯度为8.2 梯度下降的直观理解想象自己站在一座山上的某个点你想要下山到谷底。环顾四周沿着最陡峭的方向挪一小步到达一个新的点继续环顾四周找到当前最陡峭的方向再挪一步…… 如此反复最终就能到达谷底。梯度下降就是这样一个过程从某个初始点出发每次沿着当前点梯度的反方向因为梯度方向是上升最快的方向反方向就是下降最快的方向移动一小步逐步逼近函数的最小值点。用一句话解释梯度下降法就是快速找到函数最低点的一个方法。就像山上有一个球经过几次滚动后就会来到谷底附近。9. 梯度下降法三要素方向、距离、终止条件梯度下降法的完整过程需要确定三个关键要素9.1 方向确定往哪个方向滚梯度的方向是函数上升最快的方向那么梯度的反方向就是函数下降最快的方向。因此每次迭代时我们沿着当前点梯度的反方向前进。这就是为什么梯度下降公式中梯度前面要乘以一个负号——我们要朝着与梯度相反的方向前进也就是朝着下降最快的方向走。9.2 距离确定滚多远每次移动多远呢这由学习率Learning Rate来控制通常用表示。学习率决定了每一步走的距离大小。9.3 终止条件确定滚到哪里才算结束我们不可能无限迭代下去需要设定一个终止条件。常见的终止条件包括梯度值下降到某个阈值以下如梯度的模长损失函数的变化量小于某个阈值达到预设的最大迭代次数10. 学习率对梯度下降的影响学习率也记作是梯度下降中最重要的超参数之一它的选择直接影响算法能否收敛以及收敛的速度。为了直观地对比不同学习率的效果我们统一使用以下设定目标函数最小值在处梯度起始位置迭代公式10.1 学习率太小当学习率过小时每一步移动的距离非常小。我们来看看前几次迭代的结果可以看到每次迭代只向最低点移动了一点点从10到9.6只移动了0.4导致收敛速度极慢需要迭代很多次才能到达最低点。虽然最终能收敛但效率很低。10.2 学习率合适当学习率选择合适时算法能够以较快的速度稳定收敛到最小值点。从开始迭代过程如下可以看到的值在快速减小稳步向最低点逼近没有出现震荡或发散。对应的梯度值变化为迭代次数20127.24.322.591.560.930.560.340.20.12梯度值每次乘以呈指数级下降收敛稳定且高效。10.3 学习率太大当学习率过大时每一步移动的距离太大会跨过最低点在最低点两侧来回震荡而且震荡幅度越来越大最终导致发散。我们来看看前几次迭代的结果可以清楚地看到跨过了最低点到了左边又跨过最低点到了右边而且比上次更远再次跨过更远了越来越远数值的绝对值越来越大完全无法收敛到最低点。重要提醒完成梯度下降必须选择合适的学习率不能太大也不能太小——太小会导致迟迟走不到最低点太大会导致错过最低点甚至发散。在实际应用中通常会尝试多个学习率值如 0.001、0.01、0.1、0.2、0.5等观察损失函数的下降曲线来选择最合适的学习率。11. 梯度下降的终止条件我们以学习率、函数、起始位置为例来看看终止条件是如何设定的。11.1 每次迭代后的梯度值首先计算出学习率为时每次迭代后的梯度值迭代次数20127.24.322.591.560.930.560.340.20.12可以看到随着迭代次数的增加梯度值在不断减小从初始的20到第10次迭代时已经降到了 0.12。当梯度值接近0时说明已经非常接近函数的最小值点此时。11.2 用梯度值作为终止条件既然梯度值会随着迭代不断减小我们就可以设定一个阈值当梯度值小于等于这个阈值时就认为已经足够接近最小值点可以停止迭代了。案例 1希望最后的梯度值小于等于即。由于每次迭代后梯度值乘以即令解得。因此只要迭代15次梯度值就会降到0.01以下任务完成案例 2如果要求更严格希望梯度值降到更小的阈值例如那么就需要迭代19次才能满足条件。由此可见终止条件的阈值设定直接影响迭代次数阈值越小需要迭代的次数越多结果也越精确但计算成本也越高。11.3 理论保证只要学习率选择得合适梯度就可以下降到任意小。这是有理论支撑的梯度收敛定理对于凸函数当学习率满足一定条件时梯度下降算法保证收敛到全局最小值且梯度值可以任意接近0。有了这个理论保证我们就可以放心地选择梯度值作为终止条件。11.4 常见的终止条件设定方式在实际应用中常见的终止条件有以下几种梯度的模长如最常用的方式当梯度足够小时停止损失函数变化量连续几次迭代损失函数的变化量小于某个阈值说明损失已经收敛最大迭代次数设定一个迭代上限如1000次作为安全兜底防止因学习率不合适导致无限循环。通常会将多种终止条件结合使用例如 梯度值或迭代次数达到1000次时停止既保证精度又防止死循环。12. 多元函数的梯度下降前面我们主要以单变量函数为例讲解了梯度下降的原理现在通过一个具体的二元函数例子来看看多元函数的梯度下降是如何一步步迭代的。12.1 问题设定设函数起始位置为在图中用红点表示学习率为。这个函数是一个典型的凸函数其最小值在原点处最小值为。我们的目标就是通过梯度下降法从起始点出发逐步逼近这个最小值点。12.2 计算梯度首先求函数的梯度。梯度是一个向量由各个偏导数组成在起始位置处梯度为12.3 第一次迭代梯度下降的迭代公式为将起始位置和梯度代入进行第一次迭代所以第一次迭代后位置从移动到了离原点更近了一步。12.4 后续迭代与终止条件根据迭代公式我们可以计算出每次迭代后的位置。每一次迭代都重复以下步骤计算当前位置的梯度沿梯度反方向移动一步将终止条件设为梯度的模长小于等于 0.01即。经过不断迭代到第 16 次时此时梯度已经非常小说明已经非常接近最小值点任务完成注意在更新参数时必须同时更新所有参数即使用上一次迭代的梯度值来计算所有新参数不能更新一个参数后就用新值去计算另一个参数的梯度。例如第一次迭代中和都是基于处的梯度计算的而不是先算再用去算。13. 梯度下降法总结13.1 梯度下降公式梯度下降的核心公式为其中是第个参数是学习率步长是损失函数对第个参数的偏导数13.2 学习率的含义在梯度下降算法中被称作学习率或者步长意味着我们可以通过来控制每一步走的距离。太小可能导致迟迟走不到最低点收敛缓慢太大会导致错过最低点甚至无法收敛选择合适的学习率是梯度下降成功的关键13.3 为什么梯度要乘以一个负号梯度前加一个负号就意味着朝着梯度相反的方向前进梯度的方向实际就是函数在此点上升最快的方向而我们需要朝着下降最快的方向走自然就是负的梯度的方向所以此处需要加上负号。13.4 梯度下降优化过程演示整个优化过程可以概括为1.随机初始化参数2.计算当前点的梯度3.沿梯度反方向更新参数4.检查是否满足终止条件若不满足则返回步骤25.满足终止条件得到最优参数。通过不断迭代参数会逐步逼近损失函数的最小值点模型的预测效果也会越来越好。写在最后线性回归是机器学习的入门算法也是理解更复杂算法的基础。它的核心思想非常朴素用一个线性函数来拟合数据通过最小化损失函数来找到最优参数。而梯度下降法则是机器学习中最核心的优化算法之一不仅用于线性回归更是深度学习的基石。理解梯度下降的原理方向、步长、终止条件对于学习后续的算法至关重要。希望这篇总结能帮助大家更好地理解线性回归和梯度下降。如有错误或遗漏欢迎指正交流
返回列表