请和我一起学习机器学习算法(线性回归)_请使用课堂上讲解的线性回归算法对训练集进行训练,并基于测试集进行精度评估。-程序员宅基地

技术标签: 机器学习算法学习  机器学习  

线性回归灵魂三问

  • 什么是线性回归
    所谓线性回归实际上就是利用已知的样本(已知数据),选择一个线性方程,并对其进行拟合,并通过拟合得到的方程来对未知的数据进行预测
  • 线性回归能干什么
    线性回归主要是用来预测,和判断合理性。 比如用身高预测体重,利用广告投入预测商品销售额等等。
  • 线性回归的难点是什么
    难点即是重点:变量选择(多元下的重线性)、预防过拟合、模型检验。

NOTE: 一元线性回归就不在这里赘述了,一般来说想学机器学习算法的人都有一定的数学基础。

线性回归数学分析

一般线性回归

1.公式定义

就我们所知道的那样,多元的线性方程如下。
h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_\theta(x)=\theta_0x_0+\theta_{1}x_1+\theta_{2}x_2+...+\theta_{n}x_n hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn
其中 x 0 = 1 x_0=1 x0=1表示常数项。转化成向量表达为:
h θ ( x ) = Θ T X h_\theta(x)=\Theta^TX hθ(x)=ΘTX
Θ 、 X \Theta、X ΘX为一个一行n+1列的向量。
我们用参数x表示描述一个事物的属性,用h(x)表示我们对给定属性的预测。我们希望我们的预测结果符合客观事实,并且可以作为对未知事物的推测。

要使结果符合客观事实,则我们希望我们的预测结果h(x)和实际实物的标签(比如预测的类别和实际的类别)的误差尽可能的小。于是…

2. 参数求解之梯度下降

现在我们可以将问题转化成我们熟悉的数学表达模式了:
问题:我们有m个已知的样本( ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . ( x n , y n ) (\boldsymbol x^1,y^1),(\boldsymbol x^2,y^2)...(\boldsymbol x^n,y^n) (x1,y1),(x2,y2)...(xn,yn)), 其中 x ( i ) x^{(i)} x(i)是一个n+1维的列向量。求一组参数 ( θ 0 , θ 1 , . . . , θ n ) (\theta_0,\theta_1,...,\theta_n) (θ0,θ1,...,θn),使得 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) \frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(\boldsymbol x^i)-y^i) m1i=1m(hθ(xi)yi)最小。

实际上对于上面公式的的推导,我们默认使用了一种叫做误差平方和的代价函数(预测误差的代价损失,我们希望代价函数越小越好,表示我们使用这个模型的成本越低)。也就是说如果使用不同的代价函数,则得到的误差损失的表达是不同的。 代价函数可以表示为
J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(\boldsymbol x^i)-y^i)^2 J(θ0,θ1,...,θn)=2m1i=1m(hθ(xi)yi)2
NOTE: 对于权值 1 2 m \frac{1}{2m} 2m1 不必太过纠结,实际上应该是 1 m \frac{1}{m} m1,但是为了方便后续化简,添加了一个二分之一,实际上着这并不会影响我们对其参数进行求解。

接着就可以用梯度下降来优化这些参数了。对于初学者来说,可能对于像我这样的初学者来说,梯度下降不太好理解,但是在机器学习算法中,梯度下降是无处不在的。为了更加全面和完整,这里留个空位,到时如果有必要在专门来梳理一下梯度下降。
【梯度下降 】

θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 , . . . , θ n ) \theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1,...,\theta_n) θj:=θjαθjJ(θ0,θ1,...,θn)

上面这个公式,就是使用梯度下降对参数进行更新,其中 α \alpha α表示学习速率,也就是沿着低度方向,向下迈进的步幅。 ∂ ∂ θ j J ( θ 0 , θ 1 , . . . , θ n ) \frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1,...,\theta_n) θjJ(θ0,θ1,...,θn)表示代价函数的梯度方向。
θ j : = θ j − α ∂ ∂ θ j { 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 } \theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j}\{\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(\boldsymbol x^i)-y^i)^2 \} θj:=θjαθj{ 2m1i=1m(hθ(xi)yi)2}
加法的求导是可以分别求导的,所以我们可以对括号进行求导
∂ ∂ θ j ( h θ ( x i ) − y i ) 2 ) = 2 ⋅ x j ⋅ ( h θ ( x i ) − y i ) ) \frac{\partial}{\partial \theta_j}(h_{\theta}(\boldsymbol x^i)-y^i)^2) = 2 \cdot x_j \cdot (h_{\theta}(\boldsymbol x^i)-y^i)) θj(hθ(xi)yi)2)=2xj(hθ(xi)yi))
代入上面等式,(原来的引入的那个2,就是在这里消除掉的)
θ j : = θ j − α ⋅ 1 m ∑ i = 1 m ( x j ⋅ ( h θ ( x i ) − y i ) ) ) \theta_j:=\theta_j-\alpha \cdot \frac{1}{m} \sum_{i=1}^{m}(x_j \cdot (h_{\theta}(\boldsymbol x^i)-y^i))) θj:=θjαm1i=1m(xj(hθ(xi)yi)))
我们通过随机一组参数,并且通过上面的梯度下降的方式直接求解,直到收敛。

3. 参数求解之正规方程

我们也可以通过直接解方程的方式获得最后优化参数。
为了很好的解释我们下面所描述的方程,请记得我们最初的向量表达: h θ ( x ) = Θ T X h_\theta(x)=\Theta^TX hθ(x)=ΘTX
如果我们把各个学习样本的 y i y^i yi 组成一个向量Y,则我们需要求解的方程就可以变成
min ⁡ θ ∑ i = 1 m ( Y − Θ T X ) T ( Y − Θ T X ) \min_{\theta} \sum_{i=1}^{m}(Y-\Theta^TX)^T(Y-Θ ^TX) θmini=1m(YΘTX)T(YΘTX)
对向量 Θ \Theta Θ求导(这里又是一个不好理解的点,倍感数学知识不够用啊)
∂ ∂ Θ ∑ i = 1 m ( Y − Θ T X ) T ( Y − Θ T X ) = 2 ⋅ X T ( X Θ T − Y ) \frac{\partial}{\partial \Theta}\sum_{i=1}^{m}(Y-\Theta^TX)^T(Y-Θ ^TX)=2 \cdot X^{T}(X \Theta^T-Y) Θi=1m(YΘTX)T(YΘTX)=2XT(XΘTY)
令上式为0;当 ( X T X ) − 1 (X^TX)^{-1} (XTX)1存在的时候,
Θ T = ( X T X ) − 1 X T Y \Theta^T=(X^TX)^{-1}X^TY ΘT=(XTX)1XTY
如果不存在,则可以通过求伪逆的方式代替。
实际上如果从矩阵的映射的角度来分析的话,对于这个公式就好理解了,问题的关键是,但是矩阵的映射本身就不好理解。

4. 梯度下降和正规方程的对比

梯度下降 正规方程
需要选择合适的学习率 不需选择学习率
需要多次迭代获得参数 一次计算直接获得参数
使用与特征值多的模型 适用于特征值小的模型
使用于各个类型 只使用于线性模型,其他模型不适合

正规方程由于需要求矩阵的逆,一般情况,求n介矩阵的逆需要N的三次方的算法复杂度,所以当n很大的时候(一般>10000)选择梯度下降模型

对数几率回归

在分类任务中,我们希望将线性模型产生的连续的值转化为离散的0、1值用来标记各个样本。理想中我们使用单位阶跃函数来实现,如下图的红色部分。但是由于单位阶跃函数不可微,不变与计算和使用,我们找到一个可以替代单位阶跃函数的 函数。而 对数几率函数(logistic function)就是这样一种函数。

对数几率函数是一种典型的"sigmoid 函数",所谓sigmoid 函数,就是长相是S型的函数,而对数几率函数就是其中的一种。
y = 1 1 + e − Θ T X y=\frac{1}{1+e^{-\Theta^TX}} y=1+eΘTX1
通过简单的化简:
ln ⁡ y 1 − y = Θ T X \ln \frac{y}{1-y}=\Theta^TX ln1yy=ΘTX
如果把y 考虑为正例的概率,而1-y则为反例的概率。两者的比例反映了x作为正例的相对可能性,称为“几率”。对几率取对数,则称为对数几率

实际上,y实际上使我们在X的样本存在条件下认为其为正例的概率,则可以考虑y为在x条件下的后验概率。
ln ⁡ p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) = Θ T X \ln \frac{p(y=1|x)}{p(y=0|x)}=\Theta^TX lnp(y=0x)p(y=1x)=ΘTX
则(直接计算解方程,这两货加起来为1)
p ( y = 1 ∣ x ) = e Θ T X 1 + e Θ T X p ( y = 1 ∣ x ) = 1 1 + e Θ T X p(y=1|x)=\frac{e^{\Theta^TX}}{1+e^{\Theta^TX}} \\ p(y=1|x)=\frac{1}{1+e^{\Theta^TX}} p(y=1x)=1+eΘTXeΘTXp(y=1x)=1+eΘTX1
我们希望的是,每个样本属于自己标记的概率越大越好。
接下来是一段复杂的方法,对于对数回归,先到这里,了解即可。

线性判别分析

线性判别分析 (Linear Discriminant Analysis,简称 LDA) 思想非常朴素,设法将给定样例投影到一条直 线上 ,使得同类样例的投影点尽可能接近、 异类样例 的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别. 如图
在这里插入图片描述

线性回归的变量选择

多元线性回归的核心问题应该是变量的选择。

变量选择

变量的选择也是模型的对比,我们希望用最小的变量数来获得最好的结果。

  • AIC 准则

AIC准则是由日本统计学家Akaike与1973年提出的,全称是最小化信息量准则(Akaike Information Criterion)。它是拟合精度和参数个数的加权函数:
AIC=2(模型参数的个数)-2ln(模型的极大似然函数)

这个不是太好理解,比如说模型的最大似然函数是什么呢? 在线性模型中所谓的最大似然函数指的就是残差的倒数。

  • BIC 准则

AIC为模型选择提供了有效的规则,但也有不足之处。当样本容量很大时,在AIC准则中拟合误差提供的信息就要受到样本容量的放大,而参数个数的惩罚因子却和样本容量没关系(一直是2),因此当样本容量很大时,使用AIC准则选择的模型不收敛与真实模型,它通常比真实模型所含的未知参数个数要多。BIC(Bayesian InformationCriterion)贝叶斯信息准则是Schwartz在1978年根据Bayes理论提出的判别准则,称为SBC准则(也称BIC),弥补了AIC的不足。
BIC = ln(n)(模型中参数的个数) - 2ln(模型的极大似然函数值)

  • 基于误差的准则

当把预测当成主要任务和目标的时候,通过预测误差作为判断模型的指标
P E = E ∣ ∣ y − y ′ ∣ ∣ 2 PE=E||y-y^{'}||^2 PE=Eyy2

线性回归的训练

多分类的学习

核心思路是拆解法,将类别分界,通过一对一,一对多,多对多
一对一
两两分类,选择分类多的一种
一对多
一和其余分类,选择正例
多对多
先对种类分组,而后在分

类别不平衡的问题

现有技术大体上有三类做法:

  1. 第一类是直接对训练集里的反类样例进行"欠采样" (undersampling) ,即去除一些反倒使得正、反例数日接近7 然后再进行学习;

  2. 第二类是对训练集里的正类样例进行"过来样" (oversampling) ,即增加一些正例使得正、反例数目接近,然后再进行学习;

  3. 第三类则是直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将类别比例关系嵌入到其决策过程中,称为"阔值移动" (threshold-moving)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Spring_Et/article/details/107228070

智能推荐

什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?_成员内部类和局部内部类的区别-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏42次。一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部_成员内部类和局部内部类的区别

分布式系统_分布式系统运维工具-程序员宅基地

文章浏览阅读118次。分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的..._分布式系统运维工具

用Exce分析l数据极简入门_exce l趋势分析数据量-程序员宅基地

文章浏览阅读174次。1.数据源准备2.数据处理step1:数据表处理应用函数:①VLOOKUP函数; ② CONCATENATE函数终表:step2:数据透视表统计分析(1) 透视表汇总不同渠道用户数, 金额(2)透视表汇总不同日期购买用户数,金额(3)透视表汇总不同用户购买订单数,金额step3:讲第二步结果可视化, 比如, 柱形图(1)不同渠道用户数, 金额(2)不同日期..._exce l趋势分析数据量

宁盾堡垒机双因素认证方案_horizon宁盾双因素配置-程序员宅基地

文章浏览阅读3.3k次。堡垒机可以为企业实现服务器、网络设备、数据库、安全设备等的集中管控和安全可靠运行,帮助IT运维人员提高工作效率。通俗来说,就是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。由于堡垒机内部保存着企业所有的设备资产和权限关系,是企业内部信息安全的重要一环。但目前出现的以下问题产生了很大安全隐患:密码设置过于简单,容易被暴力破解;为方便记忆,设置统一的密码,一旦单点被破,极易引发全面危机。在单一的静态密码验证机制下,登录密码是堡垒机安全的唯一_horizon宁盾双因素配置

谷歌浏览器安装(Win、Linux、离线安装)_chrome linux debian离线安装依赖-程序员宅基地

文章浏览阅读7.7k次,点赞4次,收藏16次。Chrome作为一款挺不错的浏览器,其有着诸多的优良特性,并且支持跨平台。其支持(Windows、Linux、Mac OS X、BSD、Android),在绝大多数情况下,其的安装都很简单,但有时会由于网络原因,无法安装,所以在这里总结下Chrome的安装。Windows下的安装:在线安装:离线安装:Linux下的安装:在线安装:离线安装:..._chrome linux debian离线安装依赖

烤仔TVの尚书房 | 逃离北上广?不如押宝越南“北上广”-程序员宅基地

文章浏览阅读153次。中国发达城市榜单每天都在刷新,但无非是北上广轮流坐庄。北京拥有最顶尖的文化资源,上海是“摩登”的国际化大都市,广州是活力四射的千年商都。GDP和发展潜力是衡量城市的数字指...

随便推点

java spark的使用和配置_使用java调用spark注册进去的程序-程序员宅基地

文章浏览阅读3.3k次。前言spark在java使用比较少,多是scala的用法,我这里介绍一下我在项目中使用的代码配置详细算法的使用请点击我主页列表查看版本jar版本说明spark3.0.1scala2.12这个版本注意和spark版本对应,只是为了引jar包springboot版本2.3.2.RELEASEmaven<!-- spark --> <dependency> <gro_使用java调用spark注册进去的程序

汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用_uds协议栈 源代码-程序员宅基地

文章浏览阅读4.8k次。汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用,代码精简高效,大厂出品有量产保证。:139800617636213023darcy169_uds协议栈 源代码

AUTOSAR基础篇之OS(下)_autosar 定义了 5 种多核支持类型-程序员宅基地

文章浏览阅读4.6k次,点赞20次,收藏148次。AUTOSAR基础篇之OS(下)前言首先,请问大家几个小小的问题,你清楚:你知道多核OS在什么场景下使用吗?多核系统OS又是如何协同启动或者关闭的呢?AUTOSAR OS存在哪些功能安全等方面的要求呢?多核OS之间的启动关闭与单核相比又存在哪些异同呢?。。。。。。今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXrdI0k-1636287756923)(https://gite_autosar 定义了 5 种多核支持类型

VS报错无法打开自己写的头文件_vs2013打不开自己定义的头文件-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏14次。原因:自己写的头文件没有被加入到方案的包含目录中去,无法被检索到,也就无法打开。将自己写的头文件都放入header files。然后在VS界面上,右键方案名,点击属性。将自己头文件夹的目录添加进去。_vs2013打不开自己定义的头文件

【Redis】Redis基础命令集详解_redis命令-程序员宅基地

文章浏览阅读3.3w次,点赞80次,收藏342次。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。_redis命令

URP渲染管线简介-程序员宅基地

文章浏览阅读449次,点赞3次,收藏3次。URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。_urp渲染管线

推荐文章

热门文章

相关标签