机器学习-线性回归

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(权重和偏置)

基于STM32的HC-SR04超声波模块测距(新手级)

本人是嵌入式新手,学习了STM32的部分内容,最近想找些项目做,然后顺便学习了一下HC-SR04超声波模块,学习过程中也参考了一些大佬的文章。本文记录了自己的学习方法和学习过程,同时也希望能和各位大佬交流讨论。

weixin_63758495的博客 2205

[ 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

企业微信——智能表格学习

企业微信报表

qq_15138049的博客 1万+

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

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

hello.reader 1084

告别手动转换!用腾讯云轻量服务器+QMT插件,5分钟搞定聚宽策略实盘(附完整源码)

本文详细介绍如何利用腾讯云轻量服务器和QMT插件快速实现聚宽策略的自动化实盘部署。通过云端信号中转站解决协议转换、信号缓存等核心问题,5分钟完成服务器配置,并附完整源码实现零改造实盘方案,显著提升量化交易效率。

weixin_28707739的博客 659

华为OD机试真题2026双机位C卷 Java&Go 实现【用户入网定期复评】

用户开立支付账户,在开户完成后立即对用户进行一次风险模型评级,输出一个评分风险,评分范围1-100,等区间的分为5个等级,1-19为等级1,20-39为等级2,40-59为等级3,60-79为等级4,80-100为等级5,系统每天会任务对全量入网用户进行计算复评时间,输出评分给出新的风险等级。复评规则如下:

MISAYAONE的博客 148

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

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

是十一月末的博客 1886

地表最强之Android微信语音/腾讯会议通话录音

地表最强之Android微信语音/腾讯会议通话录音

cczhengv 6103

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

线性回归原理和分析

1641

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

此时我们的卡顿优化基本完成了,我们应该要考虑内存是否会泄漏,如果大家不知道哪些需要回收可以用leakcanary和android profiler进行内存检测,看代码有没有内存泄漏。

龚礼鹏的博客 2546

【Matlab】matlab代码实现迭代学习控制

该文介绍了在Matlab中实现迭代学习控制(ILC)的方法。ILC通过利用历史轨迹数据来优化重复任务的控制性能。文章提供了一个步进电机控制示例,包括:1)定义正弦轨迹;2)设置100次迭代和0.1学习率;3)建立二阶系统模型;4)执行ILC算法计算控制输入;5)绘制期望轨迹与实际输出的对比图。该示例展示了ILC的基本实现过程,并指出实际应用可能需要更复杂的设计。代码演示了误差计算、控制输入更新和结果可视化等关键步骤。

unber的博客 200

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

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

weixin_39676242的博客 420

RTK_ROS_导航(4):接入move_base

现在我们要将之前的数据接入到Move_base中,使得机器人能够根据Map上的终点进行导航,并且实现避障效果如下图。

旋风小短腿 1947

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

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

weixin_46449024的博客 1426

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

ls秦 5万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

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

weixin_50804299的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值