热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

线性回归算法原理及实现

导读今天是该系列第四篇文章,介绍线归原理及实现。由该系列第一篇文章中的逻辑回归出发,来讲讲本文的方法(其实正常的顺序应该是先讲线归再讲逻辑回归hhh)。

导读

今天是该系列第四篇文章,介绍线归原理及实现。

    由该系列第一篇文章中的逻辑回归出发,来讲讲本文的方法(其实正常的顺序应该是先讲线归再讲逻辑回归hhh)。

    回归是是另一类重要的监督学习算法。与分类问题不同的是,在回归问题中,其目标是通过对训练样本的学习,得到从样本特征到样本标签之间的映射,其中,在该性质的问题中,样本标签是连续值。而本文即将介绍的线性回归中标签与特征之间存在线性相关的关系。

Linear Regression

     线归方程一般可表示为:

    线性回归模型的性能可通过度量预测值与标签之间的接近程度来得到,损失函数可以是绝对损失或者平方损失。其中平方损失函数为: 

    

    由于平方损失处处可导,在这里使用其作为损失函数,用一定数量的样本可将其表示为:

    求解目标就是使得损失函数取最小值的wj

最小二乘法---矩阵法

     可用最小二乘法里的矩阵法来进行求解,该方法不同于迭代法和代数法,但最终目标都是一致的,预测函数可表示为:

    Y对W求导可得:

    梯度为0时可整理得:

    现在可以让我们用代码实现求解了:

import numpy as np
def lr_least_square(feature, label):'''input: feature特征label标签output: w权重系数'''w = (feature.T * feature).I * feature.T * labelreturn w

存在的问题

     可在处理较为复杂的数据的回归问题时,普通的线性回归算法通常会出现预测精度不够,再加上如果模型中的特征之间有相关的关系,就会增加模型的复杂程度,并且对整个模型的解释能力并没有提高,用普通最小二乘法估计模型参数,往往参数估计的方差太大,此时求解出来的模型就很不稳定。这就需要对数据中的特征进行选择,而Ridge回归和Lasso回归就是属于通过正则化方法改进的线归方法,可实现对特征的选择。

Ridge Regression

     引入L2正则项的目标函数为:

Lasso Regression

     引入L1正则项的目标函数为:

    与岭回归不同的是,上述的目标函数在wj=0处是不可导的,因此传统的基于梯度的方法不能直接应用在上述形式的函数求解上。为了求解这样的问题,一些近似的优化算法被采用,或者可以采用一些简单的方法来近似这样的优化过程。

求解Ridge Regression

     本文以Ridge Regression为例来进行求解,其中λ为超参,通过确定λ的值可以使得在方差和偏差之间达到平衡:随着λ的增大,模型方差减小而偏差增大。

    求解方法与求解普通的线归一致,也通过矩阵法求解,对W求导后得:

    令导数为0,可得:

    其中I为单位对角矩阵,求解代码如下:

import numpy as np
def rr_least_square(feature, label, lam):'''input: feature特征label标签output: w权重系数'''n = np.shape(feature)[1]w = (feature.T * feature + lam * np.mat(np.eye(n))).I * feature.T * labelreturn w

     到这里整个流程基本就结束了~

- end -


推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 学习Java异常处理之throws之抛出并捕获异常(9)
    任务描述本关任务:在main方法之外创建任意一个方法接收给定的两个字符串,把第二个字符串的长度减1生成一个整数值,输出第一个字符串长度是 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有