机器学习定义:计算机程序从经验E中学习解决某一任务T,进行某一性能度量P,通过P测定再T上因经验E而提高
学习算法:
- 监督学习:我们给的数据集,我们会告诉程序什么是正确的,什么是错误的或者数据集中包括正确答案;算法的目的是给出更多的正确答案
- 无监督学习:我们给的数据集,没有标记或者只有一种标记,从中找到某种结构
回归问题:预测连续值输出
分类问题:预测离散值输出。有两种显示形式(平面坐标系,数轴)
聚类问题:给定数据,并将他们分成不同的簇
符号:
- m ->训练样本的数量
- x ->输入变量,输入样本
- y -> 输出变量
- (x, y) -> 训练样本
- (x^i, y^i) -> 第i 个训练样本
-
-> 个数的缩写
- h -> 假设函数, 引导从 x 得到 y 的函数
过程:
- 第一步:设计训练样本 Training Set
- 第二步:通过学习算法Learning Algorithm获得假设函数h(x)
- 第三步:输入 x 经过 h(x) 得到 y
设计单变量线性回归算法:
- 设假设函数为 h(x) = θ0 + θ1*x
- 设代价函数(平方误差代价函数)为 J(θ0, θ1) = 1/2*m * Σ(1 - m)(h(x^i) - y^i)²
- 优化目标 找到最合适的 θ0 和θ1 使代价函数 最小;代价函数越小,拟合越完美
- Batch 梯度下降算法 :①首先设定θ0,θ1…为 0;
②更新数据θ0,θ1…,temp0 = θ0 - α/m Σ(1 - m)(h(x^i) - yi)*x0
temp1 同理
③一步一步求,直到找打优化目标
矩阵版本 :
n ->特征值的数目
x^i -> 输入第 i 个训练样本的输入特征值
x^i,下边为 j -> 第 i 个 训练样本中第 j 个特征量的值
设h(x) = θ0 + θ1x1 +θ2x2 + θ3*x3 +…
设x0 = 1
x 列向量 = [x0 , x1, x2, x3 , …]
θ 列向量 = [θ1, θ2, θ3, θ4, …]
h(x) = θ^T * x
θj= θj - α/m Σ(1 - m)(h(x^i) - yi)*xj
特征缩放:
为什么需要特征缩放:如果 特征值的比值相差非常大的话,就会导致J(θ)的图像非常陡,迭代的次数也非常多,我们要把他们缩小,这样子可以大幅度的减少迭代次数
例如;
房子大小: x1 = (size - 平均size) / max(size)
卧室个数:x2 = (#bedrooms - 2) / 5
常见的 x1 = (x1 - 平均值)/ (max - min)
学习率:
通过改变α的值观察图像的符合度区寻找α的值,三倍寻找
正规方程
θ = (x^T * x)^-1 X^Ty
正规方程不用特征缩放