机器学习-线性回归

python机器学习-线性回归(LinearRegression)算法 用python进行线性回归分析非常方便,如果看代码长度你会发现真的太简单。但是要灵活运用就需要很清楚的知道线性回归原理及应用场景。现在我来总结一下用python来做线性回归的思路及原理。 线性回归应用场景 线性回归介绍 机器学习中的线性回归 简单的线性回顾实例 线性回归应用场景 线性回归介绍 ——线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系... 阅读详情
一、模型表示(Model Representation)


现在假设有了更多的房屋价格数据,需要用一条直线来近似房屋价格的走势,如下图所示:

回顾笔记(一)中所讲 监督学习、非监督学习、回归 和 分类 的概念:

1. 监督学习(Supervised Learning)

    对于数据的每一个样例,都有明确的输出值与之对应。

2. 非监督学习(Unsupervised Learning)

    对于数据的每一个样例,其输出值名不明确。

3. 回归(Regression)

    对于输入样本,预测的输出值是连续的实数。

4. 分类(Classification)

    对于输入样本,预测的输出值是离散的。

由此可见,房价问题是一个 监督学习 问题,需要使用 回归 方法求解。

下面给出该问题的一些概念:

  • m: 训练样本个数

  • x: 输入变量/特征

  • y: 输出变量/目标变量

  • (x(i), y(i)): 第i个训练样本

对于给定的训练集(Training Set),我们希望利用学习算法(Learning Algorithm)找到一条直线,以最大地近似所有的数据,然后通过这条直线所表示的函数(h),来推测新的输入(x)的输出值(y),该模型表示如下:

h往往被称为假设函数,对应着x到y的映射,由于在本文例子中为一条直线,用上图右侧绿色公式表示。

由于假设函数为线性函数,且训练样本中输入变量只有一个特征(即尺寸),将此类问题称之为 单变量线性回归(Linear Regression with One Variable,或 Univariate Linear Regression)问题。

二、代价函数(Cost Function)

继续讨论上述问题的假设函数h:

如上图所示,hθ(x) 表示一条关于 x 的直线, θ0 和 θ1 是它的两个参数,要求 hθ(x),就必须确定这两个参数。

那么,如何选择这两个参数呢?

对于只有数据的我们,并不知道 hθ(x) 的参数值,最简单的办法就是假设两个 θ 。对于不同的假设,hθ(x) 表示如下:

那么,怎么样选择参数 θ ,才能让 hθ(x) 与数据最近似?

一个很好的想法:选择 θ0 和 θ1 ,以使得对于所有的训练样本 (x, y) , hθ(x) 都与 y 最相近。

如何才能说明最相近?我们可以通过调节参数 θ,以最小化所有训练样本点 (x, y) 与预测样本点(x,hθ(x)) 的距离的平方和来求得。

具体叙述如下:

注:m表示训练样本个数。将距离的平方和除以 2m,是为了后期求导方便二考虑,对最后结果不会造成影响。

因此,训练的目标,即是调节参数 θ0 和 θ1 ,以最小化代价函数 J(θ0, θ1)。

三、代价函数 直观展现 I(Intuition I)

为了方便的说明求解过程,先做一定的简化,假设 θ0 = 0,如下图右方所示,那么代价函数J只与 θ1相关。

当 θ1 = 1 时,求解过程如下,可得 J(1) = 0 。

当 θ1 = 0.5 时,求解过程如下,可得 J(0.5) ≈ 0.58 。

通过不断的尝试 θ1 的值,可以求出相应的 J(θ1) 的值,可以发现, J(θ1) 是关于 θ1 的二次函数,并且对于此样例中的三个数据,在 θ1 = 1 时, J(θ1) 取得最小值,且仅有一个最小值。

那么,我们可以猜想一下,最快速的方法求 J(θ1) 的最小值,就是求其关于 θ1 的导数。

四、代价函数 直观展现 II(Intuition II)

在 Intuition I 中,为了求解方便,我们残忍地抛弃了 θ1 ,但是 θ0 和 θ1 同等重要。现在,我们要将θ0 捡回来,并加以悉心照料。

现在假设 θ0 = 50, θ1 = 0.06 ,得到直线如下图所示:

在Intuition I中, J(θ1) 是关于 θ1 的二次函数。由于现在有两个参数 θ0 和 θ1 ,J(θ0, θ1) 利用 matlab/octave 绘图结果表示如下:

但是,这样的显示,尽管我们能够大致的了解到J的最小值所在的位置,但是并不太明显,因此,利用等值线的显示方法,可以将 θ1 ,J(θ0, θ1) 更加直观地展现。

等值线:处在该曲线上的所有点的值都相等,且越往内值越小。

例如,对于下面的 hθ(x) ,其 J(θ0, θ1) 的值在等值线中表示如图中红X所示:

选取另外的 θ 值, J(θ0, θ1) 的值更加接近最小值:

选取到合适的 θ 值后,J(θ0, θ1) 的值基本完全接近最小值:

五、梯度下降法(Gadient Descent)

现在我们已经知道,需要选择适当的 θ ,以将 J(θ0, θ1) 最小化,如下图所示:

在平面内, θ 的取值有无限种, 从而 J(θ0, θ1) 所表示的函数有无限种可能,我们不可能仅仅用猜测的方法得到所需要的结果。因而,寻求一种求 J(θ0, θ1) 最小值的方法极其重要。

典型的方法就是 梯度下降 法,如下图所示:

假设你现在站在一个山坡上,想要以最快的方法到达山底,通常我们会选择每一次向下迈一步,在多步之后到达山底。然而,有一种情况需要考虑,就是多多个山底的情况,在你选择不同的出发点时,可能会到达不同的山底:

我们所说的山底,就是 J(θ0, θ1) 的一个局部最优解,有时候局部最优解并不能代表全局最优解。庆幸的是,在文中的例子中,我们选择的假设函数 hθ(x) 是一条直线,从而 J(θ0, θ1) 是一个二次函数,它只有一个最优解,利用梯度下降方法可以很好的解决问题。

那么,如何迈每一步,也就是说如何执行梯度下降算法?其执行过程如下:

对于 θj ,先求 J(θ0, θ1) 关于 θj 的偏导,在乘以 α(称为学习率),再用 θj 减去这个值,相当于所有的 θj 都在一定程度上向最小值所表示的点迈进,这在图中就表示 J(θ0, θ1) 向下迈了一步。一直重复这一步骤,直到 θ0和θ1 基本不变即结束。

此处,需要注意以下几点,非常重要:

    1. := 符号表示赋值,= 符号表示求真;
    2. α 表示学习率,决定了梯度下降的步子迈得有多大,α > 0;
    3. 所有的 θ 值必须同步更新。

六、梯度下降 直观展现(Gradient Descent Intuition)

我们知道了梯度下降方法的相关概念,现在进行直观的展现以解释梯度下降的执行过程。梯度下降算法如下:

为了更方便的解释,先让 θ0 := 0,这样 J 简化为关于 θ1 的一元二次函数。当 J(θ1) 关于 θ1 的导数大于0时, θ1 左移, J(θ1) 下降。当 J(θ1) 关于 θ1 的导数小于0时, θ1 右移, J(θ1) 仍然下降。

那么问题来了。 如果迈的步子太小, J(θ1) 每次只降低一点点,什么时候才能到最底部? 如果迈的步子太大, J(θ1) 越过了最小值到达另一边,会出现什么情况?

这两个问题,跟学习率 α 有着极大的关系。如果 α 太小,梯度下降算法将会相当慢。如果 α 太大,梯度下降可能越过最小值,导致不收敛,甚至发散。

让人欣慰的一件事是,在大部分的问题中,随着 θ 逐渐靠近最优解,J(θ) 关于 θ 的偏导的绝对值将会更小,也就是说曲线更加平滑。这意味着 θ 的减少或增加逐渐缓慢,也就意味着,J(θ) 的减小将会逐渐缓慢。因此,我们并不需要在每一步去降低 α 的值。

七、线性回归梯度下降(Gradient Descent for Linear Regression)

现在,了解了梯度下降与线性回归,现在需要将它们进行结合,以求解本文中的房价问题的单变量线性回归模型。

对于线性回归模型,由于可以求 J(θ) 关于 θ 的偏导:

因而,梯度下降方法转化为如下形式(θ0 和 于 θ1 必须同步更新):

而且,由于 J(θ0, θ1) 的形状是一个碗形的,因此梯度下降最后将收敛到最小值:


Spark-ML 线性回归 LinearRegression (1) Spark-ML 线性回归 LinearRegression参数详述: 阅读详情

相关推荐

机器学习之线性回归(Linear Regression)

线性学习中最基础的回归之一,下面从线性回归的数学假设,公式推导,模型算法以及实际代码运行几方面对这一回归进行全面的剖析~

July_sun的博客 3万+

头歌实训-机器学习(线性回归)

1.建立模型并拟合# 2.赋值给变量lr# 1.得到回归模型的k值并赋值给变量k# 2.得到回归模型的b值并赋值给变量bprint("回归直线方程为:" + "y = {:.3f}".format(k) + "x" + " + " + "{:.3f}".format(b))

weixin_63566653的博客 6131

【机器学习小论文】sklearn线性回归LinearRegression代码及调参

一、前言 最近在写小论文,就是硕士毕业论文的部分成果,需要用到线性回归,所以就把相关代码贴上,便于日后写论文时总结,也顺便给后来者提供思路。小论文的思路主要是,先用线性回归,再用随机森林,最后再用xgboost,来预测房价,最后得出结论。所以,这个会陆续的贴出相关代码。至于数据清洗那一块,暂时不贴上了,主要原因就是数据清洗不容易,并且每个人的清洗方法也不一样,所以主要还是看思路。 二、算法简介 2.1 什么是回归分析 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关

xiaohutong1991的专栏 7107

Machine Learning笔记(二) 单变量线性回归

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34072159的博客 114

【Python-ML】SKlearn库线性回归器LinearRegression

# -*- coding: utf-8 -*- ''' Created on 2018年1月24日 @author: Jason.F @summary: 有监督回归学习-基于最小二乘法构建线性回归模型 最小二乘法(Ordinary Least Square,LOS),估计回归曲线的参数,使得回归曲线到样本点垂直距离(残差或误差)的平方和最小 ''' import pandas as pd impo

医疗影像检索 1646

sklearn机器学习:线性回归LinearRegression

LinearRegression类格式 sklearn.linear_model.LinearRegression (fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) 参数 fit_intercept 布尔值,可不填,默认为True 是否计算此模型的截距。如果设置为False,则不会计算截距 normalize 布尔值,...

The Zen of Data Analysis 1095

头歌平台(EduCoder)—— 数据挖掘算法原理与实践:线性回归(房价预测)

线性回归是属于机器学习里面的监督学习,与分类问题不同的是,在回归问题中,其目标是通过对训练样本的学习,得到从样本特征到样本标签直接的映射,其中,在回归问题中,样本的标签是连续值。 本实训项目的主要内容是基于Python语言搭建出一个线性回归模型,训练出一个能够对房价进行预测的模型。 第1关:线性回归算法思想 第2关:动手实现线性回归 第3关:衡量线性回归的性能指标 ...

dbdxmm的博客 7598

机器学习笔记一:使用LinearRegression实现Boston房价线性回归

一、LinearRegression类 sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) 参数 含义 fit_intercept 是否有截据,如果没有则直线过原点 normalize 是否将数据归一化 copy_X 默认为True,当为True时,X会被copi

耐心的小黑的博客 2780

机器学习——线性回归(头歌实训)

【头歌实训】代码、答案,机器学习——线性回归

HL031125的博客 1万+

机器学习——线性回归

完成一个线性回归的算法,其中train.npz是数据 读取数据的方式为: import numpy as np data = np.load("train.npz") x_array,y_array = data['x'],data['y'] 其中x_array是对2000组特征,每个特征为五维,y_array是这2000组特征的输出,并输出对应的w和b(权重和偏置)

搭建云平台 1 Day 虚拟机安装(超详细)

点击OFF 那个按钮看看网络的地址和速度有没有显示,如果有 则到目前为止都是成功的。Host name随便起一个名字就行了**-_-**文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**,如果我们安装的VMware14就会默认为。因为我的是VMware16,所以默认。也是可以的,但是千万不要用。

2401_84009679的博客 563

[ Spark ml ] 线性回归LinearRegression案例

案例实现 **内有详情备注 import org.apache.spark.ml.linalg.Vectors import org.apache.spark.ml.regression.{LinearRegression, LinearRegressionModel, LinearRegressionTrainingSummary} import org.apache.spark.sql.{DataFrame, SparkSession} object linearregression { def

weixin_52299264的博客 1828

墨水屏高效开发:架构、开源库与实战优化指南

嵌入式显示技术中,电子墨水屏以其类纸观感和超低功耗特性,在电子书阅读器、智能办公本及工业仪表等场景中占据独特地位。其工作原理基于微胶囊电泳技术,仅在画面刷新时消耗电能,静态显示时功耗近乎为零,这带来了极致的续航优势。为实现流畅的交互体验,开发者需构建分层渲染架构,通过硬件抽象层统一驱动接口,并引入帧缓冲与差异比较算法智能决策局部刷新区域,从而大幅降低刷新延迟与功耗。开源库如GxEPD2和LVGL为墨水屏适配提供了关键支持,结合波形文件管理与电源优化策略,能有效解决残影与卡顿问题。本文聚焦于eink墨水屏高效

weixin_42545636的博客 411

Flink ML LinearRegression 用 Table API 训练线性回归并输出预测值

Flink ML 的 LinearRegression 实现了线性回归算法,通过训练数据学习权重参数,预测连续值目标。输入需要特征向量(featuresCol)和标签(labelCol),可选权重列(weightCol)。训练时可调参数包括正则化系数、学习率等。特征预处理推荐标准化(StandardScaler)以提高收敛性。使用流程包括fit训练模型和transform预测,输出包含预测值(predictionCol)。支持数值和类别特征处理,适用于多种回归场景。

hello.reader 1084

金蝶K3系统物料主数据后台表对应字段一览

我们说到物料表,一般是指t_icitem,但正确的说t_icitem并不是一张有,而是一张视图,不过我们对于数据库物料表中的大部分操作,都是通过此视图来完成。比如经常通过此视图,来成批修改数量,单价精度,是否启用批次等一些字段,有的时候,对于账套已经启用,并且已经有业务发生的物料,有一些关键属性也需要通过修改物料表t_icitem来进行。 当然修改的时候,需要考虑一些前提条件的。 比如说我有一个客户新建的账套,在月底结账时发现,要改一种成本核算方法,启用时用的是加权平法,现在想改成移动平均法,这样的情况,

hzfw2008的博客 1万+

导出库的版本_Windows下PaddleOCR在C++中的推理部署(CPU版本)CMake + VS2017

PaddleOCR是一个与OCR相关的开源项目,不仅支持超轻量级中文OCR预测模型,总模型仅8.6M(单模型支持中英文数字组合识别、竖排文本识别、长文本识别,其中检测模型DB(4.1M)+识别模型CRNN(4.5M)),而且提供多种文本检测训练算法(EAST、DB)和多种文本识别训练算法(Rosetta、CRNN、STAR-Net、RARE)。本文将教大家通过PaddleOCR(CPU版...

weixin_31304817的博客 1914

机器学习之线性回归算法预测数据

机器学习之线性回归算法预测数据,包括线性回归算法的理解、LinearRegression理解以及预测一元线性回归数据、预测二元线性回归数据、预测多元线性回归数据。

是十一月末的博客 1886

基于 FPGA Vivado 示波器设计(附源工程)

今天给大侠带来基于 FPGA Vivado 示波器设计,开发板实现使用的是Digilent basys 3,如有想要入手basys3开发板的,可以联系牛总:18511371833。话不多说,上货。 本篇掌握基于添加文件和IP的Vivado工程设计流程,掌握基于Tcl的Vivado工程设计流程,学习示波器的基本组成结构。获取本篇相关源工程代码,可在公众号内回复“示波器设计源工程”。 原理介绍 数字存储示波器能够将模拟信号进行采样、存储以及显示。本系统在DIGILENT ...

7386

机器学习—线性回归(Linear Regression)

线性回归原理和分析

1641

制作一个完整的Shopify主题

Liquid是Shopify的模板语言,用于动态渲染页面内容。Liquid是Shopify的模板语言,用于动态渲染页面内容。Shopify主题包含多个文件和文件夹,包括布局、模板、部分、配置和资产文件夹。Shopify主题包含多个文件和文件夹,包括布局、模板、部分、配置和资产文件夹。准备好你的主题后,可以将其提交到Shopify主题商店。确保你的主题符合Shopify的质量标准和指南。准备好你的主题后,可以将其提交到Shopify主题商店。确保你的主题符合Shopify的质量标准和指南。

luckucu的博客 175

SAP CRP能力计划详细说明操作及相关配置

2、求助朋友同事的希望破灭后,网上找了资料发现在百度搜索的资料基本都是没有说明白什么才产能计划,都没有详细的操作说明,然后用google去搜索了一些相关的文章,好像也没有详细的文章。然后也去SAP的官网搜索了相关的文章,都是文字性的表述,对系统的配置都没有很大的帮助,很久之前有记得在隐身人的博客中有提到CRP的能力计划的文章,然后试着去找了一下相关的文章。5、首先产能排产肯定涉及的就是是能力的问题,能力第一个能想到的就是工作中心中的能力页签,在流程制造中也叫资源,其实都是一个东西。

我小时候很黑的博客 4518

linearregression_机器学习(2)——线性回归(Linear Regression)

学习阶段:大学计算机,人工智能。前置知识:多元微积分、线性代数、编程基础。从简单的情况开始,渐渐地了解机器学习。1. 单变量线性回归单变量线性回归,简而言之,就是提供一堆数据点 作为训练集,要机器拟合出一条线性函数 . 对于新提供的横坐标,机器就能预测其对应的纵坐标。拟合效果大致如下图所示:单变量线性回归的效果1.1 单变量线性回归建模符号约定: 表示训练样本数。 表示输入变量/特征。(比如说...

weixin_39676242的博客 420

经典的YOLOv3和YOLOV5算法详解及代码复现

yolov3和yolov5算法详解及代码复现

hasakie的博客 770

20241230 机器学习ML -(1)线性回归(scikitlearn)

线性代数理论及证明过程请参考教材。公式推理可以参考AI。

weixin_46449024的博客 1426

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Python机器学习 — 线性回归(Linear Regression)

线性回归 -- 简介        线性回归是机器学习算法中最简单的算法之一,它是监督学习的一种算法,主要思想是在给定训练集上学习得到一个线性函数,在损失函数的约束下,求解相关系数,最终在测试集上测试模型的回归效果。          线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为, 为误差服从均值为0的正态分布。 ...

ls秦 5万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

4.机器学习-十大算法之一线性回归算法(LinearRegression)案例讲解

线性回归是一种用于预测数值型数据的统计学分析方法,它通过建立一个或多个自变量与因变量之间的线性关系来进行预测。线性回归的基本思想是通过拟合最佳直线(也就是线性方程),来描述自变量和因变量之间的关系。这条直线被称为回归线,其目的是使得所有数据点到这条直线的垂直距离(即残差)的平方和最小。这个最小化过程通常称为最小二乘法。以山河作礼。🎖️🎖️:Python领域新星创作者,优快云实力新星认证,优快云内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。💕💕悲索之人烈焰加身,堕落者不可饶恕。

weixin_50804299的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: Android开发实用开源工具
下一篇: 卷积神经网络
xb_smart
博客等级 码龄16年 124粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值