【机器学习】总结:线性回归求解中梯度下降法与最小二乘法的比较

在线性回归算法求解中,常用的是最小二乘法与梯度下降法,其中梯度下降法是最小二乘法求解方法的优化,但这并不说明梯度下降法好于最小二乘法,实际应用过程中,二者各有特点,需结合实际案例具体分析。

最后有两份最小二乘法和逻辑斯特推导方法

1.最小二乘法求解线性回归

线性回归的基本模型设定为:

在此基础上构建代价函数:

通过代价函数 求偏导并令其等于零,所得到 的即为模型参数的值:

最终得到:

这便是由最小二乘法所求得的模型参数θ的值。这里需要满的条件是(XTX)-1存在的情况。在机器学习中,(XTX)-1不可逆的原因通常有两种,一种是自变量间存在高度多重共线性,例如两个变量之间成正比,那么在计算(XTX)-1时,可能得不到结果或者结果无效;另一种则是当特征变量过多,即复杂度过高而训练数据相对较少(m小于等于n)的时候也会导致(XTX)-1不可逆。(XTX)-1不可逆的情况很少发生,如果有这种情况,其解决问题的方法之一便是使用正则化以及岭回归等来求最小二乘法。

2.梯度下降法求解线性回归

梯度下降法是一种在学习算法及统计学常用的最优化算法,其思路是对theta取一随机初始值,可以是全零的向量,然后不断迭代改变θ的值使其代价函数J(θ)根据梯度下降的方向减小,直到收敛求出某θ值使得J(θ)最小或者局部最小。其更新规则为:

其中alpha为学习率。J(θ)对θ的偏导决定了梯度下降的方向,将J(θ)带入更新规则中得到:

对于上式由于每一次迭代都需要遍历所有训练数据一次,如果训练数据庞大,则复杂度比较高,便使得收敛速度变得很慢,所以被称作批量梯度下降法。当更新参数的时候,不必遍历全部训练数据,只要一个训练数据就可以,这种方法会比较快地收敛,所以区别于批量梯度下降法被称为随机梯度下降法。

梯度下降法中学习率alpha代表了逼近最低点的速率,既不能太大也不能太小,过大可能会出现不断地在最低点附近反复震荡的情况,无法收敛;而过小,则导致逼近的速率太慢,即需要迭代更多次才能逼近最低点。因此,可以用一些数值试验。

另外,在解决实际问题中,往往会出现x里的各个特征变量的取值范围间的差异非常大,如此会导致在梯度下降时,由于这种差异而使得J(θ)收敛变慢,特征缩放便是解决该类问题的方法之一,特征缩放的含义即把各个特征变量缩放在一个相近且较小的取值范围中,例如-1至1,0.5至2等,其中,较简单的方法便是采用均值归一化,也就是标准化处理。

3. 二者的应用比较

相对于最小二乘法来说,梯度下降法须要归一化处理以及选取学习速率,且需多次迭代更新来求得最终结果,而最小二乘法则不需要。

相对于梯度下降法来说,最小二乘法须要求解(XTX)-1,其计算量为o(n3),当训练数据集过于庞大的话,其求解过程非常耗时,而梯度下降法耗时相对较小。

所以,当模型相对简单,训练数据集相对较小,用最小二乘法较好;对于更复杂的学习算法或者更庞大的训练数据集,用梯度下降法较好,一般当特征变量小于10的四次方时,使用最小二乘法较稳妥,而大于10的四次方时,则应该使用梯度下降法来降低计算量。

 

## 个人推导笔记仅供参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

struts2学习(3)struts2核心知识II

一、struts.xml配置:                                                   1.分模块配置方法: 比如某个系统多个模块,我们把资产管理模块和车辆管理模块,分开,在总…

【机器学习】逻辑斯蒂回归概率计算和手动计算对比

二分类,逻辑斯蒂回归概率计算 import numpy as np from sklearn import datasets from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_splitX,y datasets.load_iris(True)cond y!2X X[cond] y y[cond]resul…

WPF快速指导2:模板

WPF快速指导2:模板 本文摘要: 1:模板作用; 2:样式模板; 3:数据模板; 4:如何使用ControlTemplate; 5:如何使用DataTempla…

五个最佳媒体格式转换器

我们经常会遇到下载的视频文件格式不对,无法在其他播放设备(如手机、DVD)中使用的问题,现在,我们介绍五个功能强大且易于使用的媒体转换器,用于转换不同类型的视频文件。   Super (Windows) Super是一个免…

【机器学习】六种算法在人脸补全中的应用比较(K紧邻,线性,决策树,岭回归,套索回归,ElasticNet)

需求: 根据人的上半边脸预测下半边脸,用各种算法取得的结果与原图比较 思考: 这是一个回归问题,不是分类问题(人脸数据不固定) 数据集一共包含40个人,每一个人10张照片,分布规律 每…

性能优化之NSDateFormatter

为什么要优化NSDateFormatter?首先,过度的创建NSDateFormatter用于NSDate与NSString之间转换,会导致App卡顿,打开Profile工具查一下性能,你会发现这种操作占CPU比例是非常高的。据官方说法,创建NSDateForma…

QuickTime文件格式解析

QuickTime文件格式解析Peter Lee 2008-06-14 一、简介 QuickTime是Apple公司开发的一套完整的多媒体平台架构,可以用来进行多种媒体的创建,生产,和分发,并为这一过程提供端到端的支持:包括媒体的实时捕捉,…

python的数据类型转换

数据类型转换 将数据由当前类型变化为其他类型的操作就是数据类型转换。数据类型转换分为两类,分别是自动数据类型转换 和 强制数据类型转换。 自动转换(隐式转换) 自动转换时程序根据运算要求进行的转换,不许要人工干预。 1.自动类型转换不需要人工干…

Linux文件属性及如何修改文件属性

ls -al:显示文件的文件名与相关属性并列出所有文件详细的权限与属性 dr-xr-x---. 7 root root 4096 Apr3 12:31 . 权限 连接 所有者 用户组 文件容量 修改日期 文件名 第一个字符代表这个文件是“目录,文件&#x…

SyntaxError:identifier starts immediately after numeric literal

1、错误描写叙述2、错误原因因为在改动方法传參的过程,须要传个id,可是这个id是字符串类型,传入的是数值型3、解决的方法在传參时,须要加入“”,变成字符串类型User.modify("id");

python中的运算和运算符

运算和运算符 运算: 由一个以上的值经过变化得到新值得过程,就是运算。 运算符: 用于运算的符号,就是运算符 运算的分类: 1.算数运算 2.比较运算/关系运算 3.赋值运算 4.逻辑运算 5.位运算 6.成员运算 7.身份运算算术…

【数据分析】reshape(-1,1)和numpy的广播机制

在创建DataFrame的时候常常使用reshape来更改数据的列数和行数。 reshape可以用于numpy库里的ndarray和array结构以及pandas库里面的DataFrame和Series结构。 源数据 reshape函数 reshape(行,列)可以根据指定的数值将数据转换为特定的行数和…

蓝桥杯-组素数-java

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: 蓝桥杯赛题 * 作 者: 彭俊豪 * 完成日期&#xf…

AVI文件规范

AVI文件规范PeterLee 2007-10-14 一、AVI文件简介 AVI的英文全称为Audio Video Interleaved,即音频视频交错格式,是将语音和影像同步组合在一起的文件格式。AVI于1992年被Microsoft公司推出,随Windows3.1一起被人们所认识和熟知。AVI文件格式…

python中的流程控制

流程控制 流程: 计算机执行代码的顺序,就是流程。 流程控制: 对计算机代码执行顺序的控制,就是流程控制。 流程分类: 流程控制一共分为三类,分别是 顺序结构、分支(选择)结构、循环结构。 顺序结构 顺序…

tomcat jdbc SlowQueryReport的实现解读

为什么80%的码农都做不了架构师?>>> ##序 tomcat提供了JdbcInterceptor可以用来监控jdbc的执行情况,默认提供了好几个现成的interceptor可以用,SlowQueryReport以及SlowQueryReportJmx就是其中的两个。 ##JdbcInterceptor的基本原…

【机器学习】Bagging和Boosting的区别(面试准备)

Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。 Bagging: 先介绍Bagging方法: Bagging即套袋法,其算法过程如下: 从原始样本集中抽取训…

python中的循环结构

循环结构 循环结构可以减少源程序重复书写的工作量(代码量),用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。 Python中循环结构分为两类,分别是 while 和 for .. in while 格式1: num1,num2 3…

线性判别结合源码分析LDA原理

1. LDA的思想 LDA线性判别分析也是一种经典的降维方法,LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方…

RIFF文件规范

RIFF文件规范Peter Lee 2007-10-02 摘要:RIFF全称为资源互换文件格式(Resources Interchange File Format),RIFF文件是windows环境下大部分多媒体文件遵循的一种文件结构,常见的如WAV文件、AVI文件等。RIFF可以看成一种…