入门机器学习(二)--多变量线性回归
1. 多维特征
对于房子来说,房子的大小,房间数,楼层,房领等特征都是影响房价的因素,这些称为多维特征。
如下图所示:
其中,
表示的是第i个样本中的第j个特征。
多变量线性回归的假设函数可以表示为:
对上式进行简化,另x0=1,则特征矩阵X以及系数矩阵θ可以表示为:
则假设函数可以被表示为:
2. 多元梯度下降法
假设函数为:
其中x0=1
代价函数为:
梯度下降的迭代公式为:
对于多元变量线性回归的迭代公式,其梯度下降的公式可以更具体的表示为:
举例:
一个特征缩放的方法:
如果特征之间数量级相差过大,应该对特征进行相应的缩放,缩放的方法是归一法,即(样本值-最小值)/(最大值-最小值),这样会将特征的值的范围缩放到0~1之间
特征缩放可以使梯度下降的更快以及收敛所需要的迭代次数更少。
一些多元梯度下降过程中的技巧:
根据代价函数的曲线来判断梯度下降法是否正常工作,正常的代价函数曲线是如下所示的逐步递减的曲线。
如果代价函数曲线如下所示,说明梯度下降没有正常工作,请尝试用更小的学习率
如果代价函数如下所示,说明学习率比较大,请尝试更小的学习率
如果代价函数如下所示,也请尝试更小的学习率
学习率可以从以下值尝试:...,0.001,0.01,0.1,1
3. 特征和多项式回归
线性回归并不适应与所有的数据,比如下图的数据
这是一个非线性的数据,可以假设目标函数为:
或者
后者曲线在自变量变大的时候不会下降,会趋于平滑
这样就可以将梯度下降法就可以用作在非线性回归中。
4. 正规方程
相对于梯度下降法的多次迭代,正规方程的方法,可以直接一步求出最优的参数,其方程为:
其中θ为系数矩阵,X为特征矩阵,正规方程适用的前提是X的转置与X的乘积是可逆的。
梯度下降法和正规方程的区别:
如果正规方程不可以逆怎么办?
可以使用各个工具中的伪逆函数进行计算,例如Octave中的:pinv(x'*x)*x'*y
正规方程不可逆通常出现的原因有以下两个:
① 有冗余的特征,比如特征中同时有一个房屋的面积和长宽(面积可以通过长宽表示出来)
② 特征数>=样本数
入门机器学习(二)--多变量线性回归相关推荐
- 机器学习之多变量线性回归(Linear Regression with multiple variables)
机器学习之多变量线性回归(Linear Regression with multiple variables) 1. Multiple features(多维特征) 在机器学习之单变量线性回归(Lin ...
- 机器学习:多变量线性回归
************************************** 注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的<机器学习>课程笔记.博主深感学过课程 ...
- 机器学习(四)-多变量线性回归
多变量线性回归 1 多变量线性回归应用场景 1.1 单变量线性回归案例 1.2 多变量线性回归案例 2 多元梯度下降法 2.1 一元梯度下降n=1, 重复执行,直到收敛 2.2 多元梯度下降n> ...
- 吴恩达机器学习之多变量线性回归实现部分
C++实现梯度下降法 "linear_regression.h" //多变量线性回归模型 struct elem_var2 {double y;double* x; //用数组传入 ...
- 机器学习(二)-一元线性回归算法(代码实现及数学证明)
解决回归问题 思想简单,实现容易 许多强大的非线性模型的基础 结果具有很好的可解释性 蕴含机器学习中的很多重要思想 回归问题:连续值 如果样本 特征 只有一个 称为简单线性回归 y=ax + b 通过 ...
- 入门机器学习(二十一)--大规模机器学习(Large Scale Machine Learning)
大规模机器学习(Large Scale Machine Learning) 1. 大型数据集的学习(Learning With Large Datasets) 2. 随机梯度下降法(Stochasti ...
- 入门机器学习(二十)--编程作业-异常检测和推荐系统(Python实现)
编程作业–异常检测和推荐系统 在本练习中,我们将使用高斯模型实现异常检测算法,并将其应用于检测网络上的故障服务器. 我们还将看到如何使用协作过滤构建推荐系统,并将其应用于电影推荐数据集. Anomal ...
- TensorFlow入门篇(二):线性回归
理论知识:https://www.cnblogs.com/GuoJiaSheng/p/3928160.html 环境:Python 3.7 TensorFlow 1.12 numpy 1.15.4 代 ...
- 吴恩达机器学习作业 1线性回归
一.单变量线性回归 数据可视化 import numpy as np import pandas as pd import matplotlib.pyplot as plt #print(np.eye ...
最新文章
- 微观世界探索者:15家值得关注的纳米技术公司
- 基于ESP8266WiFi步进电机控制
- 微信小程序之圆形进度条(自定义组件)
- PHP文件包含漏洞原理分析和利用方法
- android调用web service(cxf)实例
- nacos 配置动态刷新_Nacos 动态刷新@RefreshScope 【实现配置和实例刷新】
- Percona XtraDB cluster--第一部分:XtraDB cluster安装 (Centos7)
- 甲骨文通知用户需付费取得 Java 8 更新
- 实现Singleton模式
- 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
- C#枚举器:foreach语句、IEnumerable、IEnumerator以及yield return (一)
- Delphi各个版本的官方下载地址
- 微信公号开发实战之智能翻译
- Docker 的LNMP + Wordpress搭建
- 一个毕业设计 儿童趣味数学 app
- vs c语言打印心形情书,最美C语言情书(输出心形图案).doc
- Excel 2010 VBA 入门 031 批量生成上标
- 防范SQL注入式攻击
- 一个人并不寂寞,想一个人才寂寞:QQ空间情感日志
- 能力素质有所欠缺_心理素质要怎么锻炼?
热门文章
- java自动获取ip_java自动获取电脑ip和MAC地址
- 论无线网络中的网络与信息安全技术
- 基于javaweb的黑马旅游网站来源_喜讯丨创业黑马(重庆)科技孵化中心今日开业!助力重庆高新区打造人工智能创新高地...
- 标题文字超出2行 则隐藏后面显示省略号
- some daily
- 电赛总结(二)——AD芯片总结之AD7715
- 知识小结(浮点数问题)
- Ajax异步方式实现登录与參数的校验
- 关于未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值的解决方法...
- 嵌入式根文件系统的移植和制作详解