机器学习1

张开发
2026/4/7 7:26:16 15 分钟阅读

分享文章

机器学习1
一、我的疑问什么是机器学习机器学习算法有什么如何应用机器学习可以应用到哪些地方机器学习可以做出什么样的东西注意函数模型是为了预测某结果而代价函数是为了修正函数模型的参数使其更好地预测。二、机器学习的分类监督学习X-Y数据集含标签Y给学习算法提供包含正确答案的示例1.回归任务预测某个值无限可能中的某一种填空题。eg根据往年房价预测今年房价2.分类任务有限可能中的的某一种选择题。eg标记邮件为垃圾/非垃圾邮件3.非监督学习X数据集不含标签Y模型f自行在数据中找到某种结构or模式1.聚类算法簇。eg将新闻自动按某些关键词纳入某些簇2.异常检测检测异常事件3.学习降维压缩数据集三、线性回归模型填空题X特征输入特征Y目标变量输出变量y-hatf(x)模型fxwxb成本函数代价函数。方差除以2不除以2也有效只是这样更整洁也称平方误差代价函数。若b0则此时J是关于w的函数而不是关于x的函数一元函数导数。b≠0时J是关于w、b的函数多元函数偏导数。当w、b不同时模型产生的损失/代价/成本/误差是不同的一对w、b对应了一个模型f而代价函数反映了每对w、b值与真实模型f的关系也就是当前模型与真实模型的关系多大程度的接近真实。loss越小当前模型与真实f的拟合程度越好。所以目标找到参数w或w、b使得loss更小也就是使得代价函数/成本函数最小这样期望值会更接近真实值。解决算法梯度下降。四、梯度下降可以用来尝试最小化任何函数的代价的算法。可能存在不止一个可能的最小值eg多个山谷的最低点的海拔不同但已经是局部最低点。在山上某一点处下山尽可能快的下降每步朝向偏导数最小的方向移动实现梯度下降更新步骤如下。重复这两步直到算法收敛当达到局部最小值时w、b不再随着采取的每一步而显著变化。为学习率通常为0-1。学习率后面的导数看作采取小步的方向学习率控制下坡时步子的大小不太懂同步当b0时更新过程如下学习率小步长小精确但工作loss下降速度慢学习率大步长大工作快但实际效果可能差超过最小值且永远无法达到最小值梯度下降可能无法收敛甚至可能发散。如下图如果有多个局部最小值且这些局部最小值不同怎么办线性回归的梯度下降方法及推导过程当使用线性回归的平方误差代价函数时代价函数J平方差不会有多个局部最小值因为它具有弓形有一个单一的全局最小值。批量梯度下降在梯度下降的每一步我们都在查看所有的训练样本而不是训练数据的一个子集。其他梯度下降可能每次更新步骤中查看训练数据的较小子集。五、更强大的线性回归多特征多特征-向量表示表示第i行x向量的第i个参数的第j行x向量的第i个参数目标函数的向量化表示其他形式慢numpy点积快能够利用计算机中的并行硬件。多元多特征回归的梯度下降正规方程方法通过使用高级线性代数库一次性求解w和b而无需迭代梯度。仅适用于线性回归的算法几乎不适用于本专业其他算法缺点不能推广到其他算法如果特征数量n很大正规方程方法也会相当慢。六、梯度下降better使梯度下降工作更好的技术特征缩放使梯度下降运行更快特征x的可能取值范围较大时参数w的合理值将相对较小x较小时参数w的合理值将相对较大。等高线又高又窄梯度下降可能会在找到通往全局最小值的路径之间来回反弹很长时间。how缩放1.除以范围最大值x/max-min2.均值归一化算均值-x-均值/max-min-3.Z分数归一化梯度下降是否收敛左←横坐标表示迭代次数纵坐标表示代价函数。如果整体函数曲线J随着迭代次数增加而越来越小则说明学习率选择OK否则选择不当太大或者代码中可能有错误。若曲线最终趋于平缓则说明梯度下降已基本收敛因为曲线不再减少。右→自动收敛测试判断何时完成训练测试J是否小于一个很小的值ε。收敛通常表示找到了接近J最小可能值的参数w、b。为梯度选择学习率异常情况1.学习率太大导致J有增有减or导致J增加。eg1则dJ2w。ww-λ*dJ。令w3λ1时w1w-λ*dJ3-1*6-3J19w2w1-λ*dJ1-3-1*2-33J29J大小不变。λ1.5时w1w-λ*dJ3-1.5*6-6J136w2w1-λ*dJ1-6-1.5*2-612J2144J变大。eg22.代码错误减去学习率×导数-加上学习率×导数✗。导致J增加。解决办法先尝试减小学习率多次尝试后仍不行则考虑代码错误情况。实际操作中可以先将学习率设置的小一点逐步增大。tips1.特征工程自定义一些特征x2.多项式回归多元线性回归特征方程思想多项式回归。可以将特征x从一次提升到多次特征范围变大记得要进行缩放。也可以降次如同样要进行缩放。作用可以将曲线、非线性函数拟合到数据中。如何选择不同的特征/模型七、分类选择题逻辑回归用于解决二分类问题输出标签为0或1即使当前特征对应的曲线值为小数输出标签仍然为0或1看更接近谁。几个可选项就称为几元分类。sigmoid函数逻辑函数逻辑回归模型此处是线性函数作为sigmoid的输入也可能是其他函数作为输入比如多项式函数作为输入n次幂函数。输出的概率f 给定输入x时类别或标签y等于1的概率。决策边界设定一个阈值超出阈值则预测为1小于则预测为0.阈值应该是自己设定的吧可以不是0.5吧egsigmoid函数设定阈值为0.5则决策边界为直线z0zw1x1 w2x2 b。当z0时预测为1当z0时预测为0.注意z输入函数令z0即令输入函数0即可算出决策边界的曲线函数。如何训练一个逻辑回归模型线性回归模型中使用该代价函数后J关于参数的函数为凸函数只有一个全局最小值。如左图而在逻辑回归模型中如若仍旧使用该代价函数则代价函数的图像为非凸函数有多个局部最小值无法保证梯度下降能够收敛到全局最小值。新的代价函数损失函数衡量的是在单个训练样本上的表现通过将所有训练样本的损失相加可以得到代价函数它衡量的是在整个训练集上的表现。对于当前损失函数当真实标签y1时loss关于f的图像如右图所示。又因为逻辑回归模型的输出范围为0-1所以f的范围为0-1局部图像如上面左图。真实标签y1预测值越接近于1则损失越小趋近于0预测值越接近于0则损失越大趋近于无穷。对于当前损失函数当真实标签y0时loss关于f的图像如上面右图所示。又因为逻辑回归模型的输出范围为0-1所以f的范围为0-1局部图像如上面左图。真实标签y0预测值越接近于1则损失越大趋近于无穷预测值越接近于0则损失越小趋近于0。注意此处损失函数时局部样本的损失多个损失相加的和才是代价函数。通过这种损失函数的选择整体成本函数是凸的可以使用梯度下降法达到全局最小值。下面式子与上面分段式完全相同梯度下降推导中的1/ ln10怎么消失不见了八、过拟合欠拟合模型欠拟合训练数据算法具有高偏差未能很好拟合。泛化在训练集之外的例子上也能表现良好。过拟合过于拟合完美拟合训练数据具有高方差不能很好的泛化。我们希望找到一个既不高偏差也不高方差的模型。既能较好的模拟又能较好的泛化。how解决过拟合办法1.获取更多训练数据2.尝试使用更少的特征3.正则化✓将参数设置为0等同于消除一个特征。是一种更温和的减少某些特征影响的方法。正则化鼓励学习算法缩小参数的值而不一定要求参数精确的设置为0。保留所有特征但防止特征产生过大影响。通常只减少wj参数的大小是否也正则化参数b并没有太大区别。九、正则化正则化的介绍“更大的权重赋予了模型更强的 拟合训练数据 的潜力但通常这会损害其 泛化到新数据 的能力。”正则化的作用正是为了进行这种权衡· 它承认大权重有更强的拟合能力。· 但它通过惩罚大权重主动约束模型的这种能力防止其滥用。· 它强迫模型用更“保守”的方式去拟合数据优先学习那些稳健的、显著的模式而不是去记忆噪声。最终我们得到的模型可能训练误差不是绝对最低的但它的测试误差泛化误差会远低于那个过拟合的复杂模型。我们牺牲了一点训练集上的“完美”换来了在真实世界中表现的“优秀”。它倾向于找一条更平滑、更简单的曲线。它可能不会完美穿过每一个点但它捕捉到了数据主要的上升趋势。最小化第一项鼓励算法最小化预测值与真实值的之间的平方差来很好的拟合数据。最小化第二项算法试图保持参数wj较小这将倾向于减少过拟合。λ过小则过拟合过大则欠拟合。正则化线性回归正则化逻辑回归梯度下降正则化的个人理解正则化是干嘛的前提欠拟合模型错误则预测值不准过拟合则无法掌握规律无法预测最佳拟合模型预测趋势是对的。拟合训练集更能很好的预测真实数据值解决过拟合问题权重w不要太大。如何解决的呢使权重w不大也不小。对于代价函数我们不仅要使它尽可能小代价小意味着预测与真实的误差小还要使参数w不要太大权重w大则曲线会迅速变化w小则曲线变化缓慢太大的话则过于拟合不利于泛化太小的话则欠拟合所以要找一个合适的值。权重越大拟合的越好w与拟合程度的关系no想象你用一条高阶多项式曲线来拟合数据y w₀ w₁x w₂x² w₃x³ ... w_n x^n· 权重 w_i 的大小直接控制了函数曲线的“弯曲程度”或“灵活性”。· 如果一个特征 x^i 对应的权重 w_i 非常大那么 x 的微小变化就可以导致 y 的剧烈变化。这允许模型在数据点上“急转弯”从而完美地穿过每一个点。所以w大则可以完美拟合w小则欠拟合。综上w不能过大也不能过小要取合适的值这样才能既拟合的好又可以泛化。正则化的目标训练的模型不仅仅要很好的拟合训练集更重要的是能很好的预测真实世界的值不含于训练集的数据。错误目标最小化训练误差 Minimize( Error(Training Data) )。· 这会导致过拟合模型复杂度高权重大。正确目标最小化真实世界中的预期误差 Minimize( Error(Real-World Data) )。· 但我们永远无法直接计算真实世界的误差。· 因此我们用一个代理目标来替代Minimize( Error(Training Data) λ * Complexity(Model) )。· 这里的 Complexity(Model) 就用权重的范数大小来衡量。所以保持权重小不是目的而是手段。其真正目的是通过限制模型的复杂度来换取模型在未知数据上更稳定、更出色的表现泛化能力。 正则化就是在“拟合训练数据”和“保持模型简单”之间寻找一个最佳平衡点而这个平衡点通常泛化能力最强。有/无正则化代价函数的对比没有正则化的损失函数 Loss Error(Training Data) 目标最小化训练误差。这会导致模型不惜一切代价包括变得非常复杂来降低训练误差。· 带有正则化的损失函数 Loss Error(Training Data) λ * Regularization Term(Model Weights) 目标同时最小化训练误差和模型复杂度。这里的两个关键部分是1. 正则化项这个项与模型的权重参数直接相关。模型权重越大这个惩罚项就越大。权重的大小通常代表了模型的复杂度一个非常曲折的曲线需要一些非常大的权重值来实现急剧的弯折。2. 超参数 λ读作“lambda”它控制正则化的强度。· λ 0正则化项失效模型退回到原来的过拟合状态。· λ → 无穷大为了防止巨大的惩罚项所有权重都被迫趋近于0模型会变成一条水平的直线欠拟合。· λ 取一个合适的值在“过拟合”和“欠拟合”之间找到最佳平衡获得一个泛化能力好的模型。

更多文章