线性回归Linear regression
线性回归算法
- 解决回归问题
- 思想简单,容易实现
- 是许多强大的非线性模型的基础
- 结果具有很好的可解释性
- 蕴含机器学习中的很多重要思想
基本思想:寻找一条直线,最大程度的“拟合”样本特征和样本输出标记之间的关系
如横轴房屋面积,纵轴房屋价格
由实际值x(i)代入到拟合直线方程中得到的y_hat, 即y的预测值。
假设找到最佳拟合的直线方程:y = ax + b, 则对于每一个样本点x(i),根据直线方程其预测值为:, 真值为y(i)。
因此,我们当然希望y(i)和y_hat(i)的差距尽量小。其差距可表示为:
(用绝对值表示的话,它不是一个处处可导的表达式,不便于后续计算)
考虑所有样本,其总差距为:
理所当然,我们希望其总差距尽可能小,将代入上式可得:
------------------------(1)
(在(1)式中,只有a,b两个未知数,监督学习中x(i)和y(i)都是已知数。)
损失函数: 度量出模型没有拟合住的那一部分
效用函数:度量拟合的程度
一类机器学习算法的基本思路:
通过分析问题,确定问题的损失函数或效用函数;通过最优化损失函数或效用函数,获得机器学习的模型。近乎所有参数学习的算法都是这样的套路。
如线性回归,多项式回归,逻辑回归,SVM,神经网络,...
它们都是学习相应参数来最优化其目标函数。其区别在于他们的模型不同,建立的目标函数不同,优化的方式不同。
P.S.
对于分类问题(左图),横纵坐标都是样本的特征,输出标记由点是红色还是蓝色表示。而对于回归问题(右图),纵轴是样本的输出标记。
因为在回归问题中,我们需要预测的是连续的值,而不是简单的用红色蓝色就可以表示。因此当要表示两个特征的回归问题时,就需要在三维空间中进行数据可视化。
样本特征只有一个,称为:简单线性回归
样本特征多个,多元线性回归
多元线性回归
数据有多少个特征,相应前面就有多少个系数(西塔1到西塔n,西塔0是截距),对比简单线性回归,a是西塔1,b就是西塔0,区别就是特征数从1拓展到了n
其中,
(写出列向量的形式,所以加了一个转置)--------(1)
为了使式子看起来更一致,方便后续推导,我们加上第0个特征,其值恒等于1,
(行向量的形式。对于X来说,每一行代表一个样本,每一列代表一个特征。X(i)代表从X中抽出一行)----------(2)
结合(1)(2),可将 y 的预测值写成,
(相乘再相加->点乘)
推广到所有样本,
Xb (m*(n+1)) 与 X (m*n) 区分开,区别在于多了第一列我们虚拟出来的列,值全部为1。西塔为有n+1个元素的列向量。其中 西塔0 是截距,剩下的 西塔1 到西塔n 是系数coefficients. 西塔0 与数据特征无关,其只表示偏移,剩下的西塔与数据特征相关。
综上,
(y_hat 得到的值是一个列向量,其有m个元素,每个元素对应原来的大X中每一个样本经过西塔后得到的预测值)
目标,
平方的和的形式可表示成两个向量点乘的形式,因此目标可写成,
本来是列向量(m * 1),转置完成了行向量(1*m)。相乘的结果是一个值。
总结,
看起来这个式子很好,给Xb和y就能求出西塔,但为问题是其实现时间复杂度高: O(n^3),即使优化了,复杂度也有n^2.4。
其优点是不需要对数据做归一化处理,它没有量纲的问题。直接将数据通过数学公式的运算就可以得到系数的值。这点与KNN不同。
=====>解决方案
线性回归算法总结
- 典型参数学习
- 对比KNN:非参数学习
- 只能解决回归问题
- 虽然很多分类方法中线性回归是基础(如逻辑回归)
- 对比KNN:既可解决分类问题,也可解决回归问题
- 对数据有假设:线性
- 对比KNN对数据没有假设
- 优点:对数据具有强解释性。(白盒)
线性回归Linear regression的更多相关文章
- Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable
原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
- 机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables)
机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables) 同样是预测房价问题 如果有多个特征值 那么这种情况下 假设h表示 ...
- Ng第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 2.4 梯度下降 2.5 梯度下 ...
- 斯坦福第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 I 2.4 代价函数的直观理解 I ...
- 机器学习方法:回归(一):线性回归Linear regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...
- 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...
- 机器学习 (一) 单变量线性回归 Linear Regression with One Variable
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...
- 机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...
- ML 线性回归Linear Regression
线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...
- TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现
此系列将会每日持续更新,欢迎关注 线性回归(linear regression)的TensorFlow实现 #这里是基于python 3.7版本的TensorFlow TensorFlow是一个机器学 ...
随机推荐
- Linux在线安装pip和numpy
最近写Python需要用到numpy包 运行pip install numpy就会自动安装 一.因此需要先安装pip 1.如果安装的是Python>=2.7.9或者Python>=3.4, ...
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你. 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的 ...
- vijos 1053 Easy sssp
描述 输入数据给出一个有N(2 <= N <= 1,000)个节点,M(M <= 100,000)条边的带权有向图. 要求你写一个程序, 判断这个有向图中是否存在负权回路. 如果从一 ...
- [Github筆記] 清除所有 Commit 紀錄
# 把原來的 git 移除掉 sudo rm .git -r # 初始化 git init git remote add origin https://github.com/username/repo ...
- InvocationTargetException异常的深入研究-servlet的setAttribute与getAttribute
在某项目中,前端jsp传入的用户id数据通过session域传入后台servlet进行处理的过程中,无意间出现了InvocationTargetException异常 前端部分代码如下:测试代码,非原 ...
- PHP CLI应用的调试原理
我们在Eclipse里选中一个PHP文件,右键选择Debug As->PHP CLI Application. 所谓CLI应用,是指这种脚本文件不需要任何Web服务器即可运行,当然, PHP运行 ...
- 【Conclusion】MySQL的安装和使用
MySQL使用 因为数据库实验用到了MySQL,这里对现在已经涉及到的MySQL部分操作做一个简单的小结. 1.安装MySQL 上MySQL的官网下载对应自己OS平台的MySQL安装文件,有在线安装和 ...
- Unity3D 在自定义脚本中实现Button组件上的OnClick面板
下述内容不对c#语法做过多讲解,仅对已入门并有兴趣的同学做为学习和拓展的资料 大家在Unity制作的过程中一定都使用过UI功能,那么很多人也一定见过这个面板: 那么我们如何能在自己的脚本中添加上像On ...
- easyui实现增删改查
陈旧的开发模式 美工(ui工程师:出一个项目模型) java工程师:将原有的html转成jsp,动态展示数据 缺点: 客户需要调节前端的展示效果 解决:由美工去重新排版,重新选色. 前后端分离: 前端 ...
- 【eclipse】使用说明
一. 设置jdk版本 1. Window->Preferences->Java->Installed JREs,选择jdk安装目录: 2. Window->Preference ...