- 监督学习:训练集都有正确的输出,算法是基于这些输出进行处理,并且认为输入和输出之间存在关系。 监督学习问题分为“回归”和“分类”问题: 回归问题(regression problem):在回归问题中,我们试图在连续输出中预测结果,这意味着我们正在尝试将输入变量映射到某个连续函数。 分类问题(classification problem):我们试图在离散输出中预测结果。换句话说,我们试图将输入变量映射到离散类别。
- 无监督学习:无监督学习使我们能够在很少或根本不知道我们的结果应该是什么样的情况下解决问题。从大量数据中进行分类分析关系 聚类:收集1,000,000个不同基因的集合,并找到一种方法将这些基因自动分组成不同的相似或通过不同变量相关的组,例如寿命,位置,角色等。 非聚类:“鸡尾酒会算法”允许您在混乱的环境中查找结构。 (即在鸡尾酒会上识别来自声音网格的个别声音和音乐)。
- 用Octave或者Matlab进行算法比较方便
- 用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型 张量(tensor),多维数组(列表) 阶:张量的维数 0阶= 标量 1阶=向量 2阶=矩阵 n阶=张量 计算图(Graph):搭建神经网络的计算过程,不计算结果 会话(sessison):执行计算图中的节点运算
- TensorFlow.constant 定义常量
- 神经网络实现过程: 1、准备数据集,提取特征 2、搭建NN结构,从输入到输出(先搭建计算图,再用会话执行) NN向前传播算法->计算输出 3、大量特征数据喂NN,迭代优化NN参数 NN反向传播算法->优化参数模型 4、使用训练好的模型预测和分类
- m = 数据集数量
- 代价函数(cost function)通常是用于在线性回归中找出合理y的常用函数 平方误差代价函数最常用
- 如果θ1和θ2(也就是w,d)接近训练集的公式,J函数越最小,越接近0
- 梯度下降算法(Gradient descent)就是用于把w,d的最小值算出来,使J函数最小化(使∂/∂θ*J(θ0,θ1)接近0) 大部分除了线性回归外,其他机器算法也会用到梯度下降算法
- 学习率控制,【:=】符号等同计算机的赋值
- θ0和θ1要同时update
- 偏导数符号:∂(mac系统上option+d),ƒ´(x,y),梯度下降算法计算,使用偏导数推导,算θ1θ2
- 推导.png
- 多线性回归,假设入参有多个x(特征量),并且为了设置常数d,x0为1
- 函数J依然不变,但变成返回的是n+1维的
梯度下降算法也变成多个:
θ0-n的梯度下降算法偏导数
- 特征缩放,用于降低不同特征值之间的差异性,优化梯度计算公式的运算速度:
- 特征没有进行特征缩放和进行特征缩放之后的区别
- 均值归一化:
- 特征值减去平均值,再除以总量差,使全部-0.5<xi<0.5这个范围内
- 学习率的调整α 如果 α太小:收敛慢。 如果 α太大:可能不会在每次迭代时减少,因此可能不会收敛。
- 多项式回归 如果特征值不能很好地拟合数据,我们的假设函数不必是线性的(直线)。 我们可以通过使其成为二次,三次或平方根函数(或任何其他形式)来改变我们的假设函数的行为或曲线。 把
- 转换成
- 正规方程 使用正规方程不需要进行归一化特征变量
正规方程
梯度下降法
不需要学习率
需要学习率α
一次计算
需要多次迭代计算
因为要计算(XT * X)-1(也就是逆矩阵),复杂度很高,为log(n^3),所以特征变量多的时候很慢
很多特征变量的时候运行很好
有时候XTX是不可逆的(奇异矩阵)。造成不可逆的原因通常是以下两个:
1、有冗余特征: 有两个特征之间存在着一定联系,比如一个单位x1是米,另一个x2单位是千米,但表示的是同一个特征,这时候这两个特征之间存在着关系x2=x1。 根据线性代数的知识, 线形相关的矩阵不可逆的。
2、特征数n>训练集数m