草庐IT

机器学习1:监督学习

无知猫 2023-03-28 原文

监督学习

参考吴恩达2022MachineLearning视频教程

视频教程:(强推|双字)2022吴恩达机器学习Deeplearning.ai课程

机器学习分类

监督学习和无监督学习

  • 监督学习:回归、分类

  • 无监督学习:聚集、异常检测、降维

回归问题

利用大量的样本,通过有监督的学习,学习到由x到y的映射f,利用该映射关系对未知的数据进行预估,其中y为连续值

1.线性回归

  • 常用符号说明:

  • 拟合函数:

    利用一个线性函数去拟合数据:

    \[f_{w, b}(x) = wx +b ,其中w,b为参数 \]

  • 损失函数(loss function)

    利用最小二乘法(最小平方法)计算其损失函数为:

    \[L(w,b) =\frac{1}{2} (\hat{y} - y)^2 = \frac{1}{2} (f_{w, b}(x) - y)^2 \]

  • 代价函数(cost function)

    代价函数是所有样本误差总和(所有损失函数总和)的平均值:

    \[J(w,b) = \frac{1}{2m} \sum_{i=1}^m(f_{w, b}(x^{(i)}) - y^{(i)})^2 \]

    拟合的目标就是找到合适的\(w,b\)参数能够使得代价函数最小,即\(\hat{y}\)\(y\)最接近

  • (批量)梯度下降算法

    可以使用梯度下降算法来更新\(w,b\)参数,从而找到最合适的值:

    \[\left\{ \begin{matrix} w=w-\alpha \frac{\partial}{\partial w} J(w, b) \\ b=b-\alpha \frac{\partial}{\partial b} J(w, b) \end{matrix}\right. ,其中\alpha 是学习率,\partial表示偏导数 \]

    将代价函数代入进去即可得到:

    \[\left\{ \begin{matrix} w= w-\alpha\frac{1}{m}\sum\limits_{i=1}^m (f_{w, b}(x^{(i)}) - y^{(i)})x^{(i)}\\ b= b-\alpha \frac{1}{m}\sum\limits_{i=1}^m (f_{w, b}(x^{(i)}) - y^{(i)}) \end{matrix}\right. ,其中\alpha 是学习率 \]

    运行梯度下降算法:

2.多元线性回归

  • 拟合函数:

    当数据集中有多个特征\(x_{1},x_{2},...x_{n}\)时:

    \[f_{w_1,w_2,...,b}(x_1,x_2...) = w_{1}x_{1} +w_{2}x_{2} + ... +w_{n}x_{n} +b ,其中w_{1},w_{2},...,b为参数 \]

  • 向量化

    将参数\(w\)和特征\(x\)进行向量化:

    \[f_{\vec{w}, b}(\vec{x}) = \vec{w}\vec{x}+b ,其中\vec{w},b为参数, \]

  • 梯度下降算法:

    原来的公式变为:

    \[\left\{ \begin{matrix} w_1= w_1-\alpha\frac{1}{m}\sum\limits_{i=1}^m (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)})x_1^{(i)}\\ …… \\ w_n= w_n-\alpha\frac{1}{m}\sum\limits_{i=1}^m (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)})x_n^{(i)}\\ b= b-\alpha \frac{1}{m}\sum\limits_{i=1}^m (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) \end{matrix}\right. ,其中\alpha 是学习率 \]

3.多项式回归

  • 特征工程

    特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性,直接决定了模型预测的结果好坏。俗话说就是对已有的特征进行预处理,比如已知房子的长和宽,此时可以增加房子的面积作为其新的特征,然后对模型进行预测。

  • 多项式回归

    根据所给的特征,利用该特征对数据进行预处理,拟合函数为原特征的多项式类型。

    比如原始特征为\(x\),拟合函数为\(f_{\vec{w},b}=w_1x+w_2x^2+w_3x^3+b\)

分类问题

利用大量的样本,通过有监督的学习找到一个决策边界来完成分类的决策,其中决策为离散值

逻辑回归

线性回归可以预测连续值,但是不能解决分类问题,我们需要根据预测的结果判定其属于正类还是负类。所以逻辑回归就是将线性回归的\((-\infty,+\infty)\)结果,通过\(sigmoid\)函数映射到\((0,1)\)之间,来作为该结果的概率

线性回归:\(z=\vec{w}\vec{x}+b\)

将其通过\(g(x)= sigmoid\)函数,获得逻辑回归的决策函数:

\[f_{\vec{w},b}(\vec{x})=g(z)=sigmoid(z)=\frac{1}{1+e^{z}}=\frac{1}{1+e^{-(\vec{w} \cdot \vec{x}+b)}} \]

  • 极大似然估计

    极大似然估计是数理统计中参数估计的一种重要方法。其思想就是一个事件发生了,那么发生这个事件的概率就是最大的。对于样本\(i\),其类别为\(y_{i}\epsilon (0,1)\)。对于样本\(i\),可以把\(h(\mathbf{x}_i)\)看成是一种概率\(\mathbf{x}_i\)对应是1时,概率是\(h(\mathbf{x}_i)\),即\(\mathbf{x}_i\)属于1的可能性;\(\mathbf{x}_i\)对应是0时,概率是\(1-h(\mathbf{x}_i)\),即\(\mathbf{x}_i\)属于0的可能性 。那么它构造极大似然函数:

    \[\prod_{i=1}^{i=k} h\left(\mathbf{x}_{i}\right) \prod_{i=k+1}^{m}\left(1-h\left(\mathbf{x}_{i}\right)\right) \\ 其中i从0到k是属于类别1的个数k,i从k+1到m是属于类别0的个数m-k。 \]

    由于\(y_i\)是标签0或1,所以上面的式子也可以写成:

    \[\prod_{i=1}^{m} h\left(\mathbf{x}_{i}\right)^{y_{i}}\left(1-h\left(\mathbf{x}_{i}\right)\right)^{1-y_{i}} \]

    这样无论\(y\)是0还是1,其中始终有一项会变成0方,也就是1,和第一个式子是等价的。

    为了方便,我们对式子取对数。因为是求概率最大,即式子的最大值,可以转换成式子乘以-1,之后求最小值。同时对于\(m\)个数据,累加后值会很大,之后如果用梯度下降容易导致梯度爆炸,所以可以除以样本总数\(m\),式子变为:

    \[\frac{1}{m} \sum_{i=1}^{n}-y_{i} \ln \left(h\left(\mathbf{x}_{i}\right)\right)-\left(1-y_{i}\right) \ln \left(1-h\left(\mathbf{x}_{i}\right)\right) \]

  • 代价函数

    可以根据上面的最大似然估计定义逻辑回归的代价函数:

    \[J(\vec{w},b) =-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \ln \left(f_{\vec{w}, b}\left(\vec{x}^{(i)}\right)\right)+\left(1-y^{(i)}\right) \ln \left(1-f_{\vec{w}, b}(\vec{x}^{(i)})\right)\right] \]

  • 梯度下降算法

    此处涉及数学求导,可以跳过

    已知代价函数,梯度下降的目标就是找到合适的\(\vec{w},b\)参数能够使得代价函数最小,即使得预测结果的概率最大。根据梯度下降算法的流程,我们需要对代价函数做导数运算:

    \[\begin{array}{l} \frac{\partial J(\vec{w},b)}{w_j}=- \frac{1}{m} \sum \limits_{i=1}^{m}[{y}^{(i)} \frac{1}{g(z)}-(1-y^{(i)}) \frac{1}{1-g(z)}] \frac{\partial g(z)}{\partial w_j} \\ =- \frac{1}{m} \sum \limits_{i=1}^{m}[y^{(i)} \frac{1}{g(z)}-(1-y^{(i)}) \frac{1}{1-g(z)}] \cdot g(z)(1-g(z)) \cdot \frac{\partial z}{\partial {w}_{j}} \\ =- \frac{1}{m} \sum \limits_{i=1}^{m}[y^{(i)}(1-g(z))-(1-y^{(i)}) g(z)] \cdot x_j^{(i)} \\ =- \frac{1}{m} \sum \limits_{i=1}^{m}(y^{(i)}-g(z)) \cdot x_j^{(i)} \\ =\frac{1}{m} \sum \limits_{i=1}^{m}(g(z)-y^{(i)}) \cdot x_j^{(i)} \\ =\frac{1}{m} \sum \limits_{i=1}^{m}[f_{\vec{w}, b}(\vec{x}^{(i)})-y^{(i)}] \cdot x_j^{(i)} \end{array} \]

    其中\(\frac{\partial g(z)}{\partial w_j}\)的计算如下:

    \[\frac{\partial g(z)}{\partial w_j} =\frac{\partial \frac{1}{1+e^{-z}}}{\partial w_j} = - \frac{1}{(1+e^{-z)^2}} \cdot e^{-z} \cdot (-1) \cdot \frac{\partial z}{\partial {w}_{j}} = g(z)(1-g(z)) \cdot \frac{\partial z}{\partial {w}_{j}} \]

    然后进行梯度下降:

    \[\left\{ \begin{matrix} w_1= w_1-\alpha\frac{1}{m}\sum\limits_{i=1}^m (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)})x_1^{(i)}\\ …… \\ w_n= w_n-\alpha\frac{1}{m}\sum\limits_{i=1}^m (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)})x_n^{(i)}\\ b= b-\alpha \frac{1}{m}\sum\limits_{i=1}^m (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}) \end{matrix}\right. ,其中\alpha 是学习率 \]

    可以发现其形式竟然和线性回归的形式一样,不过这里的\(f_{\vec{w}, b}(\vec{x}^{(i)})\)和线性回归的已经不一样了。

数据处理

特征缩放(归一化)

可以通过变换来将各个特征统一到一个合适的范围内,数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解:

  • 线型比例变换

    \[x_{i}^{\prime}=\frac{x_{i}}{\max (x)} \]

  • 极差变换:

    • 归一到\((0,1)\)范围:

    \[x_{i}^{\prime}=\frac{x_{i}-\min (x)}{\max (x)-\min (x)} \]

    • 归一到\((-1,1)\)范围:

    \[x_{i}^{\prime}=\frac{x_{i}-mean (x)}{\max (x)-\min (x)} \\ mean(x)为平均值 \]

  • 标准差变换(Z-score):

    \[x_{i}^{\prime}=\frac{x_{i}-μ}{\sigma} \\ μ为所有样本数据的均值,σ为所有样本数据的标准差 \]

过拟合和欠拟合

Overfitting : If we have too many features, the learned hypothesis may fit the training set vey well, but fail to generalize to new examples.

过拟合其实就是为了得到一致假设而使得假设过于地严格。使得其在训练集上的表现非常地完美,但是在训练集以外的数据集却表现不好。

  • 解决过拟合的方法:

    • 收集更多的数据

    • 减少特征值的数量:

      • 人工选择哪些特征需要保留
      • 使用模型选择算法
    • 正则化

  • 正则化

    在原来的代价函数中添加正则化项,主要是通过正则项来限制权重\(w\)参数的值的变化,使其尽可能的小或者尽可能地趋于0,以达到稀疏参数的效果,进而使得模型复杂度下降,避免过拟合(一般不对参数\(b\)进行正则化)。

    • 线性回归

      \[J(\vec{w},b) = \frac{1}{2m} \sum_{i=1}^m(f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)})^2 + \frac{\lambda}{2 m} \sum_{j=1}^{n} w_{j}^{2} \\ ,\lambda为正则化系数 \]

    • 逻辑回归

      \[J(\vec{w},b) =-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \ln \left(f_{\vec{w}, b}\left(\vec{x}^{(i)}\right)\right)+\left(1-y^{(i)}\right) \ln \left(1-f_{\vec{w}, b}(\vec{x}^{(i)})\right)\right]+\frac{\lambda}{2 m} \sum_{j=1}^{n} w_{j}^{2} \]

  • 正则化后的的梯度下降算法:

其中对于参数w的那一项还可以写成:

\[w_j= (1-\alpha\frac{\lambda}{m})w_j-\alpha\frac{1}{m}\sum\limits_{i=1}^m (f_{\vec{w}, b}(\vec{x}^{(i)}) - y^{(i)}){x_j}^{(i)}\\ \]

原来\(w\)前系数为1,现在\(w\)前面系数为 ,因为\(\alpha、\lambda、m\)都是正的,所以 \(1-\alpha\frac{\lambda}{m}\)小于1,它的效果是减小\(w\),这也就是权重衰减的由来。

参考资料

  1. 线性回归和逻辑回归
  2. 逻辑回归详解
  3. 逻辑回归的本质——极大似然估计
  4. 机器学习笔记:过拟合(Overfitting)
  5. 【深度学习】——过拟合的处理方法

有关机器学习1:监督学习的更多相关文章

  1. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  4. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  5. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  6. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  7. ruby - 我如何学习 ruby​​ 的正则表达式? - 2

    如何学习ruby​​的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby​​的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/

  8. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  9. 机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值 - 2

    文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk​=Var(yt​)Cov(yt​,yt−k​)​其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞

  10. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

随机推荐