Machine Learning 第一二周
ML week 1 2
一、关于machine learning的名词
学习
从无数数据提供的E:experience中找到一个函数使得得到T:task后能够得到P:prediction
监督学习
experience中的数据都是有t和p的,计算机通过t和p得到函数
1.分类
p是明确的类 如:书有小说,教科书,故事书
2.回归
p是线性的,如:书的价格
非监督学习
experience中的数据只有t没有p,计算机仅通过t得到可以分成不同类的p函数
1.聚类
将产生的结果分成不同的集合,每个集合中的对象相似
二、单元线性回归方程与cost fnction
单元线性回归方程

单元 J() (cost function)
cost function的结果(训练拟合度),越小拟合度越好

梯度下降算法与单元cost function
梯度下降算法

- alpha为学习速率
- 求J的偏导可以看出当前距离局部最低点远近程度
- thetaj为单元cost function中的参数,通过梯度下降法迭代调整参数,达到局部最低点
1.使用梯度下降法迭代
因为需要让J逐渐减小,所以要使用梯度下降

结合cost function和梯度下降算法(下图)

- iteration J中的所有参数应同时更新(下图)

- 我们常称x为feature(关联特征方程中的特征),h(x)为hypothesis
2.
alpha*J 得到的值并不是一个固定的值,随着迭代,J会越来越小接近0(拟合程度越来越好,下降的越少,逐渐接近局部最优解)

3.alpha也在不断变化
如果alpha无限大,虽然刚开始下降很快,但可能会遇到下图overshoot minimum现象这个问题,所以alpha在算法中应自适应调整

4. alpha 应如何调整
- 1.自动收敛法为根据J(theta)下降小于10-3,则缩小alpha
- 2.调试收敛法,根据迭代次数,或者J(theta)上升了则需要下降alpha(如下图几种需要降低alpha)(推荐)

三、根据数据建立多元线性高次回归方程
1.样本表中得到信息

从图中可以得到信息:
- Y1~Xn指输出变量
- X1~Xn指样本变量,在h(theta)中为特征变量
- M:样本个数
- N:特征变量个数
2.多元一次线性回归方程

- theta指的是参数
- X0默认0
- X1~Xn指的是一组数据的n个特征变量
- 若有X(2),(2)指的是第二个样本
3.特征缩放 feature scaling(重要)
当不同的特征值之间数据差距过大的时候,可能造成梯度下降很难到达最低点(这里不做介绍)
所以在使用h(theta)时,应先进行feature scaling
- 数据之间越接近下降越容易
- 数据应尽量缩小到-1和1左右(不要求很准确,(-3,3 )(-1/3,1/3)都可以,但不能 太小如-0.001 或 太大如100)
- 常用方法:
x'=\frac{x-a}{b}
a:{x}特征平均值
b:max(x)-min(x)或者方差
4.
当特征值有多个的时候,可以将特征值合并
例: 由房子的长宽特征预计价格,可以变为用房子的面积预计价格
5.

当样本数据如上图所示明显不符合线性,则使用高次的特征方程,如下图

6.疑问
- 两个特征值的合并是否一定要符合现实逻辑,比如长宽合成面积?
- 如果结果就是需要长宽分别和价格之间的关系怎么办?
- 上图中绿线是因为蓝线会在后方下降才改的,但没有数据的情况下谁都不能确定会是怎么样的,所以我觉得这样改没有意义,结果需要确定一个可预测价格范围(和给的数据样本差不多的范围)?
- 是否只有在单一变量的时候才能将它化成有高次的特征方程?
四、 多元线性回归与梯度下降
1. 多元cost function

- 可以看下图,这两个式子等价于上式

2.结合特征方程和cost function

- 将多元特征方程带入cost function可得到拟合程度J(theta)
3.多元情况下 梯度下降方程

4.
- 和单元一样,多元也要同时更新
- 可以观察一下theta0可以发现由于X0=1,所以theta0式子和单元情况下一样

五、正规方程(normal equation)
除了梯度下降法的另一种方法,也可以找到局部最优解
正规方程
\theta = (X^T X)^{-1}X^T Y
计算步骤
- 从表格中提取信息
| Size(feet2) | Number of bedrooms |
Number of floors |
Age of house(years) |
Price(*1000) | |
|---|---|---|---|---|---|
| x0 | x1 | x2 | x3 | x4 | y |
| 1 | 2104 | 5 | 1 | 45 | 460 |
| 1 | 1416 | 3 | 2 | 40 | 232 |
| 1 | 1534 | 3 | 2 | 30 | 315 |
| 1 | 852 | 2 | 1 | 36 | 178 |
- 化成矩阵形式

- 代入正规方程
比较梯度下降和正规方程优劣势
| 梯度下降 | 正规方程 |
|---|---|
| 需要选择α | 不需要选择α |
| 需要许多迭代 | 不需要迭代 |
| O(KN2) | O(N3),需要计算逆矩阵XTX |
| 当N较大时工作正常 | 如果N非常大会很慢 |
当n<10,000时,适合用正规方程
矩阵不可逆没关系,octave会算出伪逆,结果是一样的
Machine Learning 第一二周的更多相关文章
- Machine Learning - 第6周(Advice for Applying Machine Learning、Machine Learning System Design)
In Week 6, you will be learning about systematically improving your learning algorithm. The videos f ...
- Machine Learning - 第3周(Logistic Regression、Regularization)
Logistic regression is a method for classifying data into discrete outcomes. For example, we might u ...
- Machine Learning第十一周笔记:photo OCR
博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕了Cousera上Machine Learning的最后一周课程.这周介绍了 ...
- Machine Learning第十周笔记:大规模机器学习
博客已经迁移到Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕了Andrew Ng在Cousera上的Machine Learning的第 ...
- Machine Learning – 第2周(Linear Regression with Multiple Variables、Octave/Matlab Tutorial)
Machine Learning – Coursera Octave for Microsoft Windows GNU Octave官网 GNU Octave帮助文档 (有900页的pdf版本) O ...
- Machine Learning - 第7周(Support Vector Machines)
SVMs are considered by many to be the most powerful 'black box' learning algorithm, and by posing构建 ...
- Machine Learning - 第5周(Neural Networks: Learning)
The Neural Network is one of the most powerful learning algorithms (when a linear classifier doesn't ...
- Machine learning 第7周编程作业 SVM
1.Gaussian Kernel function sim = gaussianKernel(x1, x2, sigma) %RBFKERNEL returns a radial basis fun ...
- Machine learning第6周编程作业
1.linearRegCostFunction: function [J, grad] = linearRegCostFunction(X, y, theta, lambda) %LINEARREGC ...
随机推荐
- node.js官方文档解析 02—buffer 缓冲器
Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的.且在 V8 堆外分配物理内存.Buffer 的大小在被创建时确定,且无法调整. Buffer 类在 Node.js 中是一个全局 ...
- 201771010126 王燕《面向对象程序设计(Java)》第七周实验总结
实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: private--私有域或私有方法:只能在定义它的类中使用 public--公 ...
- ProjectEuler && Rosecode && Mathmash做题记录
退役选手打发时间的PE计划 挂在这里主要是dalao们看到有什么想交流的东西可以私聊哦(站内信或邮箱吧) 2017/8/11 PE595 :第一题QAQ 2017/8/12 PE598 2017/ ...
- Linux安装nginx详细步骤
安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 在/usr/local/下创建一个nginx的文件夹 ...
- C# 换行
要让一个Windows Form的TextBox显示多行文本就得把它的Multiline属性设置为true. 要让TextBox里面的文本换行大家往往会想到直接在要换行的地方加个转义的换行符&quo ...
- 【LookLook文档】通过less 定制自己的Bootstrap 样式
闲话 学习还是看文档最快,看文档要仔细点,不可走马观花.感谢 “Bootstrap中文网” 思路 1.早在2015开始接触,由于公司中使用的是easyui 固一直没完全使用Bootstrap,开始接触 ...
- 报文分析4、TCP协议的头结构
TCP协议的头结构 来源端口(2字节) 目的端口(2字节) 序号(4字节) 确认序号(4字节) 头长度(4位) 保留(6位) URG ACK PSH RST SYN PIN 窗口大小(2字节) 校验和 ...
- 关于JQuery中$.get()和$.post()和$.ajax()的区别和使用
首先,这三个方法都是Ajax方法中一种与服务器交换数据的请求类型. 一.$.get() $.get() 方法使用 HTTP GET 请求从服务器加载数据. 使用格式: $.get(url,[data] ...
- Ultimate Facebook Messenger for Business Guide (Feb 2019)
Ultimate Facebook Messenger for Business Guide (Updated: Feb 2019) By Iaroslav Kudritskiy November 2 ...
- tableview Footerview有多余的间距
调整footerView的高度 UIView *footerV = [[UIView alloc] initWithFrame:CGRectMake(, , Main_Screen_Width, )] ...