regression
单变量线性回归univariate linear regression
代价函数square error cost function : \(J(\theta)=\frac{1}{2m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2\)
\(2m\)的\(2\)是为了消去后续求导时的\(2\)
其中单变量时 \(h_{\theta}(x) =\theta_0 + \theta_1 x\) (h是hypothesis的意思)
上标(i)是指第i组训练数据
梯度下降法gradient decent:
脑补一个三维图像:\(\theta_0,\theta_1,J(\theta)\)
\(\theta_i -= \alpha \frac{\partial}{\partial \theta_i}h(\theta)\)
(导为正数时,\(\theta\)应减小;导为负数时,\(\theta\)应增大。 陡的时候快,缓的时候慢)
随着过程的执行, 可以让\(\alpha\)递减去更好的接近(不过即使\(\alpha\)是定值也能走到局部最优点)
只要 \(\alpha\)不会过大 (过大时J可能甚至越大,脑补一个人在盆地两边跳来跳去越跳越高)
无论单变量还是多变量,这种线性回归代价函数一定是bowl shape
当J经过一次迭代后变化不超过原来的\(10^-3\)时认为converage(如果是陡完平一段继续陡怎么办?)
多变量线性回归multivariate linear regression
\(h_{\theta} = \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n\) 其中\(x_0 = 1\)
\(J(\theta)=\frac{1}{2m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2\)
\(\theta_j\) -= \(\alpha \frac{\partial}{\partial \theta_j}h(\theta) = \alpha \frac 1 m \sum_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_j\) (展开h,求偏导)
\(x^{(i)}_j\)表示第i组训练数据的第j个feature
(脑补表格:每列一个特征,最左添加一列\(x_0=1\),最后一列是标准值y,每行一个example)
令\(X\)为\(m\times(n+1)\)矩阵,\(Y\)为\(m\times1\)列向量
令\(theta\) 为\((n+1)\times1\)列向量,\(H\)为\(m\times1\)列向量
H= X * theta
del = H - Y
J = 1 / (2*m) * sum(del.^2)
theta -= alpha / m * (X’ * del)
为便于观察并减少迭代次数,我们需要对特征进行缩放,使其范围不至于过大,也不至于过小
例如\(\alpha\frac{x-min}{max-min}\), \(\alpha\frac{x-mean}{max-min}\) 具体情况而定
注意缩放后,predict时的特征也要对应用同种方式缩放
注意不要一个for循环过去把\(x_0\)也改了(另外注意octave是从一开始存的)
线性回归其他函数设计
如给定房子的长和宽和房价,特征不应是长和宽两个,而应该是占地面积
如给定数据点明显不是直线,可以考虑\(\theta_0 + \theta_1 x + \theta_2 x^2\)之类的,x是同一个feature, 令\(x_i\)为\(x^i\)转多变量问题
根号和ln其实长得很像
正规方程normal equation
公式:\(\theta = (X^TX)^{-1}X^TY\) (why?)
其中\(X\)为\(m*(n+1)\), \(Y\)为\(m*1\)
求逆即使是伪逆也能算对
使用时建议\(m>n\)
优势:不必要缩放features,不需要跑多次调整\(\alpha\)
效率比较:梯度下降(省去重复运算)是\(n*m*iter\),这个是\(n^3+n^2m\)。
n大的时候这个方法肯定不行。但一般来说n应该不大?m比较大?
regression的更多相关文章
- 逻辑回归 Logistic Regression
逻辑回归(Logistic Regression)是广义线性回归的一种.逻辑回归是用来做分类任务的常用算法.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.比如一个人有没有病,又因为噪声的 ...
- logistic regression与SVM
Logistic模型和SVM都是用于二分类,现在大概说一下两者的区别 ① 寻找最优超平面的方法不同 形象点说,Logistic模型找的那个超平面,是尽量让所有点都远离它,而SVM寻找的那个超平面,是只 ...
- [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族
声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号 ...
- 机器学习 1 regression
Linear regerssion 线性回归 回归: stock market forecast f(过去10年股票起伏的资料) = 明天道琼指数点数 self driving car f(获取的道路 ...
- 线性回归 Linear Regression
成本函数(cost function)也叫损失函数(loss function),用来定义模型与观测值的误差.模型预测的价格与训练集数据的差异称为残差(residuals)或训练误差(test err ...
- Logistic Regression - Formula Deduction
Sigmoid Function \[ \sigma(z)=\frac{1}{1+e^{(-z)}} \] feature: axial symmetry: \[ \sigma(z)+ \sigma( ...
- 线性回归、梯度下降(Linear Regression、Gradient Descent)
转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 实例 首先举个例子,假设我们有一个二手房交易记录的数据集,已知房屋面积.卧室数量和房屋的交易价格,如下表: ...
- 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)
欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...
- PRML读书笔记——3 Linear Models for Regression
Linear Basis Function Models 线性模型的一个关键属性是它是参数的一个线性函数,形式如下: w是参数,x可以是原始的数据,也可以是关于原始数据的一个函数值,这个函数就叫bas ...
- logistc regression练习(三)
% Exercise 4 -- Logistic Regression clear all; close all; clc x = load('E:\workstation\data\ex4x.dat ...
随机推荐
- Maven和Gradle对比(转载)
转载出处:http://www.cnblogs.com/huang0925 Java世界中主要有三大构建工具:Ant.Maven和Gradle.经过几年的发展,Ant几乎销声匿迹.Maven也日薄西山 ...
- ORA-04031: Unable To Allocate 32 Bytes Of Shared Memory
记录一次生产库遇到的4031错误,后来通过调整sga大小将问题解决了 报错信息: ORA-04031: 无法分配 32 字节的共享内存 ("shared pool","s ...
- Ubuntu 下使用虚拟串口进行开发测试
1. python 工具 #coding = utf-8 import pty import os import select def mkpty(): master1, slave = pty.op ...
- vim粘贴取消自动缩进
Vim 复制粘贴探秘 Vim 作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情.每当学会了vim的一个新功能,就会很大地提高工作效率.有人使用vim几 十年,还没有完全掌握vi ...
- 分数调查 HihoCoder - 1515
小Hi的学校总共有N名学生,编号1-N.学校刚刚进行了一场全校的古诗文水平测验. 学校没有公布测验的成绩,所以小Hi只能得到一些小道消息,例如X号同学的分数比Y号同学的分数高S分. 小Hi想知道利用这 ...
- Robo 3T
开源,免费的MongoDB桌面管理工具. [官方地址] https://robomongo.org/ https://studio3t.com/
- C# Redis存Session Hash存对象
1.新建一个控制台程序,并新建一个类“UserInfo” 2.从github下载redis的windows服务 https://github.com/ServiceStack/redis-window ...
- Django基础之数据库与ORM
一.数据库配置 1.django默认支持sqlite,mysql, oracle,postgresql数据库. django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称 ...
- 【Rotate Image】cpp
题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwis ...
- ogre3D学习基础15 -- 创建BSP Scene Manager
BSP(binary-space partitioning) Scene Manager(二叉空间分割)场景管理器比较适合用于室内场景. 第一,添加框架代码如下 #include "Exam ...