目录

  • 1 介绍
    • 1-3 监督学习
    • 1-4 无监督学习
  • 2 单变量线性回归
    • 2-2 代价函数
    • 2-5 Batch 梯度下降算法
  • 4 多变量线性回归
    • 4-1 多特征
    • 4-2 多元梯度下降法
    • 4-3 多元梯度下降法I——特征缩放
      • 缩放
      • 归一化
    • 4-4 多元梯度下降法演练I——学习率α
    • 4-5 特征和多项式回归
    • 4-6 正规方程(Normal Equation)(区别于迭代方法的直接解法)
  • 6 逻辑回归
    • 6-1 逻辑分类算法
    • 6-2 假设表示
    • 6-3 决策边界
    • 6-4 代价函数
    • 6-4 简化代价函数与梯度下降
    • 6-5 高级优化
    • 6-7 多元分类:一对多
  • 7 正则化
    • 7-1 过拟合问题
    • 7-2 (正则化更改)代价函数
    • 7-3 线性回归的正则化
    • 7-4 逻辑回归的正则化
  • 8 神经网络的表示
    • 8-1 非线性假设
    • 8-2 神经元与大脑
    • 8-3 前向传播-模型展示I
    • 8-4 前向传播-模型展示II
    • 8-5 例子与理解I
    • 8-6 例子与理解II
    • 8-7 多元分类
  • 9 神经网络:Learning
    • 9-1 应用于神经网络的代价函数
    • 9-2 反向传播算法
    • 9-3 理解反向传播
    • 9-4 展开参数
    • 9-5 梯度检测
    • 9-6 随机初始化
    • 9-7 回顾总结
  • 10 应用机器学习的建议
    • 10-1 决定下一步做什么
    • 10-2 评估假设函数
    • 10-3 模型选择和训练、验证、测试集
    • 10-4 判断偏差与方差
    • 10-5 正则化和偏差、方差
    • 10-6 学习曲线
    • 10-7 决定接下来做什么
  • 11 机器学习系统设计
    • 11-1 确定执行的优先级:以垃圾邮件分类为例
    • 11-2 误差分析
    • 11-3 不对称性分类的误差评估
    • 11-4 查准率和召回率的平衡
    • 11-5 机器学习数据
  • 12 支持向量机(SVM)
    • 12-1 优化目标
    • 12-2 大间距的理解
    • 12-3 支持向量机的数学原理
    • 12-4 核函数I
    • 12-5 核函数II
    • 12-6 使用支持向量机(SVM)
  • 13 聚类算法
    • 13-1 无监督学习
    • 13-2 K均值(K-means)算法
    • 13-3 优化目标
    • 13-4 随机初始化(K均值聚类算法)
    • 13-5 如何选择聚类数量K
  • 14 降维
    • 14-1 目标I:数据压缩
    • 14-2 目标II:可视化
    • 14-3 主成分分析方法(PCA)
    • 14-4 主成分分析算法(PCA)
    • 14-5 压缩重现(解压缩)
    • 14-6 选择主成分数量
    • 14-7 应用PCA的建议
  • 15 异常检测
    • 15-1 问题动机
    • 15-2 高斯分布(正态分布)
    • 15-3 算法
    • 15-4 开发和评估异常检测系统
    • 15-5 异常检测vs监督学习
    • 15-6 选择要使用的特征
    • 15-7 多元高斯分布
    • 15-8 使用多元高斯分布的异常检测

1 介绍

1-3 监督学习

  • 包括线性回归和逻辑回归

1-4 无监督学习

  • 无监督学习不需要给数据打上标签,也就是不需要人告诉机器一部分正确答案是什么

2 单变量线性回归

2-2 代价函数

  • Hypothesis即假定函数,是线性回归时机器推测出来的对已经给定的一堆离散点进行拟合之后的函数
  • θ0和θ1是待求的参数,求出这两个参数后,就能得出一条直线进行拟合
  • Cost Function即代价函数,是对数据集中每个点与假定函数进行作差再平方再相加后求得的平均值再乘12\frac{1}{2}21​得到的,乘12\frac{1}{2}21​只是为了之后求导方便,式中m为数据集中数据个数共有m个,x(i)x^{(i)}x(i)指的是数据集第i行的x的值,y(i)y^{(i)}y(i)指的是数据集第i行的y的值,y即为需要通过机器学习推测的值
  • 目标是求代价函数的最小值(并求出此时θ0和θ1的值),因为在代价函数的值最小时,假定函数距离各离散点的距离最近

    由于有两个参数θ0和θ1,所以得出的代价函数图形是一个如上图所示的3D曲面图

    3D曲面图也可以用上图的等高线图表示

2-5 Batch 梯度下降算法


梯度下降算法用于如上图的函数:在图上取一个点,向四周寻找最快的下山方向,并迈出一步,重复执行上述步骤,就可以找到代价函数的最小值(上图仅用于解释梯度下降算法,线性回归的代价函数永远是一个凸函数,只会存在一个全局最优解,不会像上图一样出现局部最优解和全局最优解)

在这里:=是赋值符号,=是两边等价的意思

如上图,θ0和θ1需要同步更新来实现梯度下降,α是学习率,α越大,相当于下山的步子越大,下山就越快


如上图,θ1从右侧较大时开始逐渐向左侧递减,α是常数不改变,代价函数的导数项(这个导数项其实是偏导数)会随着代价函数逐渐降低而变小(因为斜率变小了),在到达最小值时,导数会变为0


将梯度下降式子里的导数项求出后得到上面的式子

4 多变量线性回归

4-1 多特征

  • 用n来表示数据集中特征的数量,这里有4个特征
  • y表示输出量
  • 用x(i)x^{(i)}x(i)来表示第i行的数据(输入量)
  • 用xj(i)x^{(i)}_jxj(i)​来表示第i行的第j个特征


上图是新的假定函数

  • x1,x2,x3……x_1,x_2,x_3……x1​,x2​,x3​……是多个特征
  • 可以假定一个x0(i)=1x^{(i)}_0=1x0(i)​=1,这样x和θ就可以写成两个列向量,假定函数就可以写作θTxθ^TxθTx,即求两个矩阵的内积

4-2 多元梯度下降法

  • 如上图,从θ1θ_1θ1​到θnθ_nθn​同步更新,同时特征xxx需要对应

4-3 多元梯度下降法I——特征缩放

缩放

  • 这里假设只有两个特征值,特征x1x_1x1​的取值范围是0-2000,特征x2x_2x2​的取值范围是1-5,之后作出的代价函数的等高线图会是一个又高又瘦的椭圆,在进行梯度下降算法时,可能会反复震荡导致收敛太慢,如上图左侧
  • 将特征x1x_1x1​和x2x_2x2​缩放,使这两个特征值的范围都在0-1,这样产生的代价函数的图像会变成向上图右侧一样的圆形,这样就会更快地收敛
  • 一般会让特征值处于[−1,1][-1,1][−1,1]范围内,如果比较接近±1\pm1±1也可以直接计算,不需要进行特征缩放
  • 如果特征值过小,如[−0.0001,0.0001][-0.0001,0.0001][−0.0001,0.0001]也需要进行缩放

归一化

  • 如特征x1x_1x1​的平均值为1000,范围为(0,2000](0,2000](0,2000],则可以将x1x_1x1​化为x1=size−10002000x_1=\frac{size-1000}{2000}x1​=2000size−1000​(在这里的例子里x1x_1x1​是房屋的面积)
  • 公式为x1=x1−μ1s1x_1=\frac{x_1-μ_1}{s_1}x1​=s1​x1​−μ1​​,s1s_1s1​为特征x1x_1x1​原来的范围大小(max−minmax-minmax−min),μ1μ_1μ1​为特征x1x_1x1​原来的平均值

4-4 多元梯度下降法演练I——学习率α


上图左侧纵坐标为计算得出的代价函数的值,横坐标为进行梯度下降算法的次数,次数增加后,代价函数会越来越接近最小值,逐渐收敛

  • 如果图像为上图左侧的两种,说明学习率过大,导致像上图右侧一样的变化发散
  • 只要学习率足够小,一定会是收敛的(即进行梯度下降算法的次数越多,代价函数一定会越来越接近最小值)
  • 学习率过小会导致收敛速度变慢

取学习率时,通常是每隔大约三倍取,如0.001,0.003,0.01,0.03.0.1,0.3,10.001,0.003,0.01,0.03.0.1,0.3,10.001,0.003,0.01,0.03.0.1,0.3,1

4-5 特征和多项式回归

  • 用多次的函数来拟合,依然使用之前的一次式,但让x1=sizex_1=sizex1​=size,x2=size2x_2=size^2x2​=size2,x3=size3x_3=size^3x3​=size3
  • 或者也可以令假定函数是hθ(x)=θ0+θ1x1+θ2x2=θ0+θ1(size)+θ2sizeh_θ(x)=θ_0+θ_1x_1+θ_2x_2=θ_0+θ_1(size)+θ_2\sqrt{size}hθ​(x)=θ0​+θ1​x1​+θ2​x2​=θ0​+θ1​(size)+θ2​size​

4-6 正规方程(Normal Equation)(区别于迭代方法的直接解法)

(最小二乘法)
θ=(XTX)−1XTyθ=(X^TX)^{-1}X^Tyθ=(XTX)−1XTy

  • 使用这个式子不需要进行特征缩放
  • XXX为m×nm×nm×n的矩阵,mmm为数据数量(training examples),nnn为特征个数


上图是梯度下降算法和正规方程的优缺点

  • 在特征数量nnn大于10000左右时,开始考虑不使用正规方程而使用梯度下降算法

6 逻辑回归

6-1 逻辑分类算法

  • 用于输出量yyy是离散值如0/1的情况
  • 不宜用线性回归进行机器学习

6-2 假设表示

  • 在逻辑分类中,将假定函数改为hθ(x)=g(θTx)h_θ(x)=g(θ^Tx)hθ​(x)=g(θTx),假定函数函数的值即为输出真(1)的概率
  • 函数g(z)g(z)g(z)称作Sigmoid函数或Logistic函数,其表达式为11+e−z\frac{1}{1+e^{-z}}1+e−z1​
  • 综上,逻辑分类中的假定函数为11+e−θTx\frac{1}{1+e^{-θ^Tx}}1+e−θTx1​

6-3 决策边界

  • predict “y=1” if hθ(x)≥0.5h_θ(x)\ge0.5hθ​(x)≥0.5
  • predict “y=0” if hθ(x)<0.5h_θ(x)<0.5hθ​(x)<0.5
  • 在上图右上角g(z)=11+e−zg(z)=\frac{1}{1+e^{-z}}g(z)=1+e−z1​函数的图像中,用g(z)g(z)g(z)来表示假定函数,要计算何时g(z)>0.5g(z)>0.5g(z)>0.5,只要计算何时z≥0z\ge0z≥0,即计算何时θTx>0θ^Tx>0θTx>0
  • 计算得出的决策边界可以是直线
  • 决策边界也可以是圆形的

6-4 代价函数

之前的线性表示的代价函数为:
J(θ)=1m∑i=1m12(hθ(x(i))−y(i))2J(θ)=\frac{1}{m}\sum_{i=1}^m\frac{1}{2}(h_θ(x^{(i)})-y^{(i)})^2J(θ)=m1​i=1∑m​21​(hθ​(x(i))−y(i))2
将12(hθ(x(i))−y(i))2\frac{1}{2}(h_θ(x^{(i)})-y^{(i)})^221​(hθ​(x(i))−y(i))2表示为Cost(hθ(x(i)),y(i))Cost(h_θ(x^{(i)}),y^{(i)})Cost(hθ​(x(i)),y(i))
去掉(i)(i)(i)之后简写为
J(θ)=12m∑i=1mCost(hθ(x),y)J(θ)=\frac{1}{2m}\sum_{i=1}^mCost(h_θ(x),y)J(θ)=2m1​i=1∑m​Cost(hθ​(x),y)

  • 由于在逻辑回归上继续使用这个代价函数会导致输出的代价函数不是凸函数,不能使用梯度下降算法输出全局最小值
  • 所以在逻辑回归中将代价函数中的Cost(hθ(x),y)Cost(h_θ(x),y)Cost(hθ​(x),y)改为如下
    Cost(hθ(x),y)={−log(hθ(x))if y=1−log(1−hθ(x))if y=0Cost(h_θ(x),y)= \begin{cases} -log(h_θ(x))& \text{if y=1}\\ -log(1-h_θ(x))& \text{if y=0} \end{cases}Cost(hθ​(x),y)={−log(hθ​(x))−log(1−hθ​(x))​if y=1if y=0​
  • Cost(hθ(x),y)Cost(h_θ(x),y)Cost(hθ​(x),y)中第一个函数的图像如上图
  • 输出量y=1y=1y=1时,若假定函数hθ(x)=1h_θ(x)=1hθ​(x)=1,那么Cost(hθ(x),y)Cost(h_θ(x),y)Cost(hθ​(x),y)输出值将会趋向于0,即代价函数趋向于0,使得这点对假定函数的惩罚为0,几乎不改变结果
  • 输出量y=1y=1y=1时,若假定函数hθ(x)→0h_θ(x)\rightarrow0hθ​(x)→0,那么Cost(hθ(x),y)Cost(h_θ(x),y)Cost(hθ​(x),y)输出值将会趋向于+∞+\infty+∞,即代价函数趋向于+∞+\infty+∞,使得这点对假定函数的惩罚为+∞+\infty+∞,极大地改变结果,使假定函数在这点处的输出结果迅速回到正确的值上来

  • Cost(hθ(x),y)Cost(h_θ(x),y)Cost(hθ​(x),y)中第二个函数的图像如上图

6-4 简化代价函数与梯度下降

由于y=0y=0y=0 or 111恒成立(y=0y=0y=0 or 111 always),所以可以将Cost(hθ(x),y)Cost(h_θ(x),y)Cost(hθ​(x),y)简化为一个式子

Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))Cost(h_θ(x),y)=-ylog(h_θ(x))-(1-y)log(1-h_θ(x))Cost(hθ​(x),y)=−ylog(hθ​(x))−(1−y)log(1−hθ​(x))
最后得出的用于逻辑回归的代价函数为:
J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))J(θ)=\frac{1}{m}\sum_{i=1}^mCost(h_θ(x^{(i)}),y^{(i)})J(θ)=m1​i=1∑m​Cost(hθ​(x(i)),y(i))
J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]J(θ)=-\frac{1}{m}\left[\sum_{i=1}^my^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))\right]J(θ)=−m1​[i=1∑m​y(i)log(hθ​(x(i)))+(1−y(i))log(1−hθ​(x(i)))]
在梯度下降中不断循环(for j=1,2,…,n)的式子为:
θj:=θj−α∂∂θjJ(θ)θ_j:=θ_j-α\frac{\partial}{\partial θ_j}J(θ) θj​:=θj​−α∂θj​∂​J(θ)
θj:=θj−α∑i=1m(hθ(x(i))−y(i))xj(i)θ_j:=θ_j-α\sum_{i=1}^m(h_θ(x^{(i)})-y^{(i)})x_j^{(i)}θj​:=θj​−αi=1∑m​(hθ​(x(i))−y(i))xj(i)​

6-5 高级优化

6-7 多元分类:一对多

  • 共有三个分类:三角形、叉、正方形
  • 先计算三角形:将三角形认为是正样本,其他认为是负样本,可以计算出一条直线划分三角形和其他图形,如上图右上角第一幅坐标系
  • 其他图形同理

7 正则化

7-1 过拟合问题

  • 上图左侧坐标系为欠拟合,用一条直线不能很好的表示这个数据集,偏差很大
  • 上图中间为合适的拟合
  • 上图右侧为过度拟合,拟合的曲线波动很大,假定函数中的变量过多,虽然代价函数非常接近0,但不能泛化到其他数据集中
  • 上图为在逻辑回归中的欠拟合、合适的拟合、过度拟合


解决过拟合:
1.减少特征数量
2.正则化

7-2 (正则化更改)代价函数


使用正则化更改代价函数

  • 直接使用上图右侧的假定函数及其代价函数会导致过拟合
  • 在不去掉θ3θ_3θ3​和θ4θ_4θ4​的前提下,可以在代价函数上加上对于θ3θ_3θ3​和θ4θ_4θ4​的惩罚项:1000θ32+1000θ321000θ_3^2+1000θ_3^21000θ32​+1000θ32​,(1000只是随便一个比较大的数),加上惩罚项之后的代价函数在运算中会让参数θ3θ_3θ3​和θ4θ_4θ4​变得尽可能小,让θ3θ_3θ3​和θ4θ_4θ4​对假定函数的图像影响变小,这样就可以在保留θ3θ_3θ3​和θ4θ_4θ4​参数的情况下不产生过拟合。

加上惩罚项后的假定函数变为:
J(θ)=12m[∑i=1mCost(hθ(x(i)),y(i))+1000θ32+1000θ32]J(θ)=\frac{1}{2m} \left[ \sum_{i=1}^mCost(h_θ(x^{(i)}),y^{(i)})+1000θ_3^2+1000θ_3^2 \right]J(θ)=2m1​[i=1∑m​Cost(hθ​(x(i)),y(i))+1000θ32​+1000θ32​]

由于我们一般不知道哪一项会导致过拟合,所以在代价函数中加入正则化项
加入后的代价函数为:
J(θ)=12m[∑i=1mCost(hθ(x(i)),y(i))+λ∑j=1nθj2]J(θ)=\frac{1}{2m} \left[ \sum_{i=1}^mCost(h_θ(x^{(i)}),y^{(i)})+λ\sum_{j=1}^{n}θ_j^2 \right]J(θ)=2m1​[i=1∑m​Cost(hθ​(x(i)),y(i))+λj=1∑n​θj2​]
λλλ为正则化参数,一般不对θ0θ_0θ0​增加惩罚项,所以jjj从111开始

7-3 线性回归的正则化

  • 正则化后的梯度下降循环项如上图,由于在代价函数中没有添加对θ0θ_0θ0​的惩罚项,所以对θ0θ_0θ0​的更新分开表示
  • 对于j=1,2,3,...,nj=1,2,3,...,nj=1,2,3,...,n的梯度下降项也可化简为上图的式子
  • 可以得到1−αλm1-α\frac{λ}{m}1−αmλ​是一个小于1但非常接近1的数

使用正则化后得到的正规方程为:

  • 这里只要λ>0λ>0λ>0,那么括号内计算得出的矩阵一定可逆
  • 而在原来没有用正则化得出的正规矩阵θ=(XTX)−1XTyθ=(X^TX)^{-1}X^Tyθ=(XTX)−1XTy中,如果m<nm<nm<n(m为样本数,n为特征数),那么括号内矩阵不可逆(是奇异矩阵),所以正则化也可以应用于样本数小于特征数时的情况,让括号内矩阵可逆

7-4 逻辑回归的正则化

正则化后逻辑回归的代价函数改为:
J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθj2J(θ)=-\frac{1}{m}\left[\sum_{i=1}^my^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))\right]+\frac{λ}{2m}\sum_{j=1}^{n}θ_j^2J(θ)=−m1​[i=1∑m​y(i)log(hθ​(x(i)))+(1−y(i))log(1−hθ​(x(i)))]+2mλ​j=1∑n​θj2​

正则化后的梯度下降循环项如上图

8 神经网络的表示

8-1 非线性假设

对于一幅图像来说,如果取出每个像素点的灰度值或其他特征表示方法来作为一个数据样本的话,数据集将会非常庞大,如果运用之前的回归算法来计算,将会产生非常大的计算成本

8-2 神经元与大脑

8-3 前向传播-模型展示I

  • 上图指一个带有Sigmoid激活函数的人工神经元,在神经网络术语中,g(z)=11+e−θTXg(z)=\frac{1}{1+e^{-θ^TX}}g(z)=1+e−θTX1​称作激活函数
  • 神经网络指的其实是一组神经网络的集合,第一层(Layer 1)称为输入层(Input Layer),第二层(Layer 2)称为隐藏层(Hidden Layer),第三层(Layer 3)称为输出层(Output Layer)
  • 用ai(j)a_i^{(j)}ai(j)​来表示第jjj层的第iii个神经元的激活项(“activation” of unit iii in layer jjj),所谓激活项是指由一个具体的神经元计算并输出的值
  • 用Θ(j)\Theta^{(j)}Θ(j)表示从第jjj层到第j+1j+1j+1层的权重矩阵(参数矩阵),就是之前的θ\thetaθ矩阵(之前的θ\thetaθ既可以叫做参数parametersparametersparameters也可以叫做权重weightsweightsweights)
  • a1(2)a_1^{(2)}a1(2)​、a2(2)a_2^{(2)}a2(2)​和a3(2)a_3^{(2)}a3(2)​的计算公式在上图中已写出
  • 其中Θ(1)\Theta^{(1)}Θ(1)是一个3×43×43×4的矩阵
  • 如果神经网络在第jjj层有sjs_jsj​个单元,在第j+1j+1j+1层有sj+1s_{j+1}sj+1​个单元,那么Θ(j)\Theta^{(j)}Θ(j)是一个sj+1×(sj+1)s_{j+1}×(s_j+1)sj+1​×(sj​+1)的矩阵

8-4 前向传播-模型展示II

前向传播的矢量化实现:

  • 把上面式子中的Θ10(1)+Θ11(1)+Θ12(1)+Θ13(1)\Theta^{(1)}_{10}+\Theta^{(1)}_{11}+\Theta^{(1)}_{12}+\Theta^{(1)}_{13}Θ10(1)​+Θ11(1)​+Θ12(1)​+Θ13(1)​表示为z1(2)z_1^{(2)}z1(2)​
  • 则a1(2)=g(z1(2))a_1^{(2)}=g(z_1^{(2)})a1(2)​=g(z1(2)​)
  • 扩展到全域,第二层的激活值a(2)=g(z(2))a^{(2)}=g(z^{(2)})a(2)=g(z(2)),其中z(2)=Θ(1)a(1)z^{(2)}=\Theta^{(1)}a^{(1)}z(2)=Θ(1)a(1),另外需要添加偏置项a0(2)=1a^{(2)}_0=1a0(2)​=1

8-5 例子与理解I

8-6 例子与理解II


上图为计算x1x_1x1​ XNOR x2x_2x2​的神经网络
第一层到第二层先计算x1x_1x1​ AND x2x_2x2​得到a1(2)a_1^{(2)}a1(2)​,计算(NOT x1x_1x1​) AND (NOT x2x_2x2​)得到a2(2)a_2^{(2)}a2(2)​
再以a1(2)a_1^{(2)}a1(2)​和a2(2)a_2^{(2)}a2(2)​为x1x_1x1​和x2x_2x2​计算x1x_1x1​ OR x2x_2x2​得出的结果即为x1x_1x1​ XNOR x2x_2x2​

8-7 多元分类


这里有四种输出:pedestrian、car、motorcycle、truck
所以共有四个输出单元
输出的y(i)y^{(i)}y(i)为一个4维矩阵,可能是:
[1000]或[0100]或[0010]或[0001]中的其中一个\begin{bmatrix} 1\\ 0\\ 0\\ 0\\ \end{bmatrix}或 \begin{bmatrix} 0\\ 1\\ 0\\ 0\\ \end{bmatrix}或 \begin{bmatrix} 0\\ 0\\ 1\\ 0\\ \end{bmatrix}或 \begin{bmatrix} 0\\ 0\\ 0\\ 1\\ \end{bmatrix}中的其中一个⎣⎢⎢⎡​1000​⎦⎥⎥⎤​或⎣⎢⎢⎡​0100​⎦⎥⎥⎤​或⎣⎢⎢⎡​0010​⎦⎥⎥⎤​或⎣⎢⎢⎡​0001​⎦⎥⎥⎤​中的其中一个
分别表示pedestrian或car或motorcycle或truck

9 神经网络:Learning

9-1 应用于神经网络的代价函数

  • 用LLL表示神经网络的总层数(Layers)
  • 用sls_lsl​表示第lll层单元(神经元)的数量(不包括偏置单元)
  • hΘ(x)∈RKh_\Theta(x)\in\mathbb{R}^KhΘ​(x)∈RK(hΘ(x)h_\Theta(x)hΘ​(x)为KKK维向量,即神经网络输出层共有KKK个神经元,即有KKK个输出)
  • (hΘ(x))i=ithoutput(h_\Theta(x))_i=i^{th} output(hΘ​(x))i​=ithoutput((hΘ(x))i(h_\Theta(x))_i(hΘ​(x))i​表示第iii个输出)

应用于神经网络的代价函数为:

J(Θ)=−1m[∑i=1m∑k=1Ky(i)log(hΘ(x(i)))k+(1−yk(i))log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θji(l))2J(\Theta)=-\frac{1}{m}\left[\sum_{i=1}^m\sum_{k=1}^Ky^{(i)}log(h_\Theta(x^{(i)}))_k+(1-y_k^{(i)})log(1-(h_\Theta(x^{(i)}))_k)\right] +\frac{λ}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}(\Theta_{ji}^{(l)})^2J(Θ)=−m1​[i=1∑m​k=1∑K​y(i)log(hΘ​(x(i)))k​+(1−yk(i)​)log(1−(hΘ​(x(i)))k​)]+2mλ​l=1∑L−1​i=1∑sl​​j=1∑sl+1​​(Θji(l)​)2

  • 第二项中的∑i=1sl∑j=1sl+1\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}∑i=1sl​​∑j=1sl+1​​指的是将sl+1s_{l+1}sl+1​行sls_lsl​列的矩阵Θji(l)\Theta_{ji}^{(l)}Θji(l)​中的每一个元素相加起来
  • 第二项中的∑l=1L−1\sum_{l=1}^{L-1}∑l=1L−1​指的是将输入层和隐藏层的矩阵都求和

9-2 反向传播算法

  • δj(l)\delta_j^{(l)}δj(l)​定义为第lll层第jjj个神经元的偏差(“error”)

    以上图的四层的神经网络为例
  • δj(4)=aj(4)−yj\delta_j^{(4)}=a_j^{(4)}-y_jδj(4)​=aj(4)​−yj​(yjy_jyj​指第jjj个输出在数据集中的值,aj(4)a_j^{(4)}aj(4)​指神经网络的第jjj个输出,aj(4)a_j^{(4)}aj(4)​也可表示为(hΘ(x))j(h_\Theta(x))_j(hΘ​(x))j​)
  • 用向量方法表示上式可表示为δ(4)=a(4)−y\delta^{(4)}=a^{(4)}-yδ(4)=a(4)−y,也可表示为δ(4)=hΘ(x)−y\delta^{(4)}=h_\Theta(x)-yδ(4)=hΘ​(x)−y
  • δ(3)=(Θ(3))Tδ(4)⋅g′(z(3))\delta^{(3)}=(\Theta^{(3)})^T\delta^{(4)}\cdot g^{\prime}(z^{(3)})δ(3)=(Θ(3))Tδ(4)⋅g′(z(3))
    其中g′(z(3))=a(3)⋅(1−a(3))g^{\prime}(z^{(3)})=a^{(3)}\cdot (1-a^{(3)})g′(z(3))=a(3)⋅(1−a(3))
  • δ(2)=(Θ(2))Tδ(3)⋅g′(z(2))\delta^{(2)}=(\Theta^{(2)})^T\delta^{(3)}\cdot g^{\prime}(z^{(2)})δ(2)=(Θ(2))Tδ(3)⋅g′(z(2))
    其中g′(z(2))=a(2)⋅(1−a(2))g^{\prime}(z^{(2)})=a^{(2)}\cdot (1-a^{(2)})g′(z(2))=a(2)⋅(1−a(2))

点乘结果是一个数,叉乘结果是一个向量

  • ∂∂Θij(l)J(Θ)=aj(l)δi(l+1)\frac{\partial}{\partial \Theta_{ij}^{(l)}}J(\Theta)=a_j^{(l)}\delta_i^{(l+1)}∂Θij(l)​∂​J(Θ)=aj(l)​δi(l+1)​
    这里忽略了正则化项,即认为λ=0\lambda=0λ=0
  • 上图是反向传播算法的流程,最后可以得到∂∂Θij(l)J(Θ)=Dij(l)\frac{\partial}{\partial \Theta_{ij}^{(l)}}J(\Theta)=D^{(l)}_{ij}∂Θij(l)​∂​J(Θ)=Dij(l)​,然后进行梯度下降算法

9-3 理解反向传播


以上图的神经网络为例

  • δ2(2)=Θ12(2)δ1(3)+Θ22(2)δ2(3)\delta_2^{(2)}=\Theta_{12}^{(2)}\delta_1^{(3)}+\Theta_{22}^{(2)}\delta_2^{(3)}δ2(2)​=Θ12(2)​δ1(3)​+Θ22(2)​δ2(3)​
  • δ2(3)=Θ12(3)δ1(4)\delta_2^{(3)}=\Theta_{12}^{(3)}\delta_1^{(4)}δ2(3)​=Θ12(3)​δ1(4)​

9-4 展开参数

9-5 梯度检测

要估计代价函数J(Θ)J(\Theta)J(Θ)上点(θ,J(Θ))(\theta,J(\Theta))(θ,J(Θ))处的导数值,可以运用ddθJ(θ)≈J(θ+ε)−J(θ−ε)2ε(ε=10−4为宜)\frac{\mathrm{d} }{\mathrm{d} \theta}J(\theta)\approx\frac{J(\theta+\varepsilon)-J(\theta-\varepsilon)}{2\varepsilon}(\varepsilon=10^{-4}为宜)dθd​J(θ)≈2εJ(θ+ε)−J(θ−ε)​(ε=10−4为宜)求得导数

扩展到向量中,如上图

  • θ\thetaθ是一个nnn维向量,是矩阵Θ(1),Θ(2),Θ(3),...\Theta^{(1)},\Theta^{(2)},\Theta^{(3)},...Θ(1),Θ(2),Θ(3),...的展开
  • 可以估计∂∂θnJ(θ)\frac{\partial}{\partial \theta_{n}}J(\theta)∂θn​∂​J(θ)的值

将估计得到的偏导数值与反向传播得到的偏导数值比较,如果两个值非常近,就可以验证计算是正确的
一旦确定反向传播算法计算出的值是正确的,就应该关掉梯度检验算法

9-6 随机初始化

如果在程序开始时令Θ\ThetaΘ中所有元素均为0,会导致多个神经元计算相同的特征,导致冗余,这成为对称权重问题
所以在初始化时要令Θij(l)\Theta^{(l)}_{ij}Θij(l)​等于[−ϵ,ϵ][-\epsilon,\epsilon][−ϵ,ϵ]中的一个随机值

9-7 回顾总结


训练一个神经网络:
1.随机一个初始权重
2.执行前向传播算法,得到对所有x(i)x^{(i)}x(i)的hΘ(x(i))h_\Theta(x^{(i)})hΘ​(x(i))
3.计算代价函数J(Θ)J(\Theta)J(Θ)
4.执行反向传播算法,计算∂∂Θjk(l)J(Θ)\frac{\partial}{\partial\Theta_{jk}^{(l)}}J(\Theta)∂Θjk(l)​∂​J(Θ)
(get a(l)a^{(l)}a(l) and δ(l)\delta^{(l)}δ(l) for l=2,...,Ll=2,...,Ll=2,...,L)
5.通过梯度检验算法得到估计的J(Θ)J(\Theta)J(Θ)的偏导数值,将估计得到的偏导数值与反向传播得到的偏导数值比较,如果两个值非常近,就可以验证反向传播算法的计算结果是正确的;验证完后,关闭梯段检验算法(disable gradient checking code)
6.运用梯度下降算法或其他更高级的优化方法,结合反向传播计算结果,得到使J(Θ)J(\Theta)J(Θ)最小时的参数Θ\ThetaΘ的值

10 应用机器学习的建议

10-1 决定下一步做什么

10-2 评估假设函数


随机选择数据集中的70%作为训练集,30%作为测试集,将数据集分为两个部分

  • 首先根据训练集计算出参数Θ\ThetaΘ
  • 把参数Θ\ThetaΘ代入测试集计算代价函数的值(这里是线性回归的代价函数,逻辑回归的代价函数同理):
    Jtest(θ)=12mtest∑i=1mtest(hθ(xtest(i))−ytest(i))2J_{test}(θ)=\frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_θ(x^{(i)}_{test})-y^{(i)}_{test})^2Jtest​(θ)=2mtest​1​i=1∑mtest​​(hθ​(xtest(i)​)−ytest(i)​)2

逻辑分类中有另一种形式的测试度量,称作错误分类或0/1错误分类,计算过程如上图

10-3 模型选择和训练、验证、测试集


随机选择数据集中的60%作为训练集(Training Set),20%作为交叉验证集(验证集,Cross Validation Set,cv),20%作为测试集(Test Set),将数据集分为三个部分

上图,计算训练误差、验证误差和测试误差

用ddd来表示假定函数的多项式的最高次幂

  • 先用训练集求每一个假定函数的代价函数J(Θ)J(\Theta)J(Θ)取到最小值时Θ\ThetaΘ的值,再把这个求得的Θ\ThetaΘ代入交叉验证集求得Jcv(Θ)J_{cv}(\Theta)Jcv​(Θ),对每一个假定函数进行以上步骤的计算,得到d=1,...,10d=1,...,10d=1,...,10的10个代价函数的值,取最小的那个,这里假定是d=4d=4d=4,再使用d=4d=4d=4时的Θ\ThetaΘ代入测试集得到泛化误差

10-4 判断偏差与方差


上图坐标系yyy轴为误差,xxx轴为ddd(多项式最高次幂)的大小
以上图为例,

  • 当ddd过小时,出现欠拟合(underfit),偏差(bias)过大,此时的训练集误差Jtrain(Θ)J_{train}(\Theta)Jtrain​(Θ)很大,并且Jcv(Θ)≈Jtrain(Θ)J_{cv}(\Theta)\approx J_{train}(\Theta)Jcv​(Θ)≈Jtrain​(Θ)
  • 当ddd过大时,出现过拟合(overfit),方差(variance)过大,此时的训练集误差Jtrain(Θ)J_{train}(\Theta)Jtrain​(Θ)很小,并且Jcv(Θ)>>Jtrain(Θ)J_{cv}(\Theta)>> J_{train}(\Theta)Jcv​(Θ)>>Jtrain​(Θ)

10-5 正则化和偏差、方差


勘误:正则化项里面∑\sum∑上面的m应该改为n

  • 若正则化参数λ\lambdaλ过大,会导致欠拟合,高偏差,并且参数θ1≈0,θ2≈0,...\theta_1\approx 0,\theta_2\approx 0,...θ1​≈0,θ2​≈0,...,假定函数的结果hθ(x)≈θ0h_{\theta}(x)\approx \theta_0hθ​(x)≈θ0​,如上图最左侧坐标系
  • 若正则化参数λ\lambdaλ过小,会导致过拟合,高方差,如上图最右侧坐标系

    使用不带正则化项的Jtrain(Θ)、Jcv(Θ)、Jtest(Θ)J_{train}(\Theta)、J_{cv}(\Theta)、J_{test}(\Theta)Jtrain​(Θ)、Jcv​(Θ)、Jtest​(Θ)
    J(Θ)J(\Theta)J(Θ)取下图中的带正则化项的代价函数
  • 首先取多种λ\lambdaλ的情况,这里从0,0.01开始,下一个λ\lambdaλ是上一个的两倍,一直取到λ=10.24\lambda=10.24λ=10.24,由于此时小数部分对结果影响不大,所以也可以直接取λ=10\lambda=10λ=10
  • 将每一种情况的λ\lambdaλ代入带正则化项的代价函数J(Θ)J(\Theta)J(Θ)中,这里共能得到12个不同的Θ\ThetaΘ值
  • 再把这12个Θ\ThetaΘ代入到交叉验证集代价函数Jcv(Θ)J_{cv}(\Theta)Jcv​(Θ)中,注意这里的Jcv(Θ)J_{cv}(\Theta)Jcv​(Θ)是不带正则化项的,最后得到12个不同的Jcv(Θ)J_{cv}(\Theta)Jcv​(Θ)值
  • 取最小的那个Jcv(Θ)J_{cv}(\Theta)Jcv​(Θ)值对应的λ\lambdaλ(这里认为第5个λ\lambdaλ是最合适的)代入到测试集的代价函数Jtest(Θ)J_{test}(\Theta)Jtest​(Θ)中,计算泛化误差,注意这里的Jtest(Θ)J_{test}(\Theta)Jtest​(Θ)也是不带正则化项的

10-6 学习曲线



如上图是高偏差/欠拟合的情形
此时增加数据集数量对于误差的缩小没有明显帮助

如上图是高方差/过拟合的情形
此时交叉验证集的曲线和训练集的曲线中间相差较大,所以增加数据集数量对于减小误差是有帮助的

10-7 决定接下来做什么

解决高偏差或高方差的一些方法如下图:


如上图

  • 在一个小型的神经网络中,容易出现欠拟合现象,但它的好处是计算量较小
  • 在一个大型的神经网络中,容易出现过拟合现象,可以通过正则化来避免,它的好处是效果较好,但是计算量较大

11 机器学习系统设计

11-1 确定执行的优先级:以垃圾邮件分类为例

11-2 误差分析

  • 不要在编写程序时进行过早的优化,在编写完整个系统后再根据学习曲线优化系统;先编写一个简单粗暴的算法,再根据输出的结果改进算法
  • 误差分析:观察被错误分类的数据有何共同的特征(以垃圾邮件分类为例,查看被错误分类的垃圾邮件有何共同的特征)或以数值方式表示误差
  • 推荐在交叉验证集上做误差分析

11-3 不对称性分类的误差评估

偏斜类问题:一个数据集中的一类数据样本比另外一类的样本少的多(比如1占样本的0.5%,而0占样本的99.5%)
在偏斜类问题中(比如患癌症占样本的0.5%,而不患癌症占样本的99.5%),假设一个算法达到了99.5%的预测准确率,这时已经只有0.5%的误差,但是如果始终预测不患癌症也有99.5%的准确率,误差也只有0.5%,这时需要用到不同的误差度量值
其中一种叫做查准率和召回率(precision recall)

  • 左侧表格上方为实际的,表格左侧为预测的,1代表患癌,0代表不患癌

    • 如果预测为1,实际为1,则是真阳性(True positive)
    • 如果预测为1,实际为0,则是假阳性(False positive)
    • 如果预测为0,实际为1,则是假阴性(False negtive)
    • 如果预测为0,实际为0,则是真阴性(True negtive)
      查准率=预测为真并且实际为真的数量预测为真的数量=TruepositiveTruepositive+Falsepositive查准率=\frac{预测为真并且实际为真的数量}{预测为真的数量}=\frac{True\ positive}{True\ positive+False\ positive}查准率=预测为真的数量预测为真并且实际为真的数量​=True positive+False positiveTrue positive​
      召回率=预测为真并且实际为真的数量实际为真的数量=TruepositiveTruepositive+Falsenegtive召回率=\frac{预测为真并且实际为真的数量}{实际为真的数量}=\frac{True\ positive}{True\ positive+False\ negtive}召回率=实际为真的数量预测为真并且实际为真的数量​=True positive+False negtiveTrue positive​
      两者均是越高越好

11-4 查准率和召回率的平衡


本来在超过50%概率时预测为1(即患癌),在低于50%时预测为0(即不患癌)
现在如果要在超过70%患癌可能性时才预测为患癌的话,会得到一个高查准率但低召回率的模型
如果要在超过30%患癌可能性时就预测患癌,会得到一个高召回率但低查准率的模型

  • 高查准率:能不揪出来的就不揪出来
  • 高召回率:能揪出来的都揪出来


通过计算查准率和召回率的平均值不能直接评估一个算法的好坏
通过F值(F1值)=2PRP+RF值(F_1值)=2\frac{PR}{P+R}F值(F1​值)=2P+RPR​能更好地评估一个算法的好坏(P为查准率,R为召回率)

11-5 机器学习数据

在有一个非常庞大的训练集的前提下,即使有很多的参数(训练集数量>>参数数量),也能很好地拟合数据集,不会产生过拟合现象

12 支持向量机(SVM)

12-1 优化目标

  • 上图左侧坐标系为y=1y=1y=1时代价函数的图像,支持向量机时画出粉色的曲线,命名为Cost1(z)Cost_1(z)Cost1​(z),下标指yyy的值为111
  • 同样的,右侧坐标系为y=0y=0y=0时代价函数的图像,支持向量机时画出粉色的曲线,命名为Cost0(z)Cost_0(z)Cost0​(z),下标指yyy的值为000

在逻辑回归中,代价函数为:
J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθj2J(θ)=-\frac{1}{m}\left[\sum_{i=1}^my^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))\right]+\frac{λ}{2m}\sum_{j=1}^{n}θ_j^2J(θ)=−m1​[i=1∑m​y(i)log(hθ​(x(i)))+(1−y(i))log(1−hθ​(x(i)))]+2mλ​j=1∑n​θj2​
要支持向量机,先将上式里的负号放到求和里面去,然后把1m\frac{1}{m}m1​去掉(1m\frac{1}{m}m1​是一个常数,虽然去掉它会改变代价函数的值,但是仍然能求得一样的最小值对应的θ\thetaθ),之后得到的代价函数为:
J(θ)=∑i=1m[y(i)(−log(hθ(x(i))))+(1−y(i))(−log(1−hθ(x(i))))]+λ2∑j=1nθj2J(θ)=\sum_{i=1}^m\left[y^{(i)}\left (-log(h_θ(x^{(i)}))\right )+(1-y^{(i)})\left(-log(1-h_θ(x^{(i)}))\right)\right]+\frac{λ}{2}\sum_{j=1}^{n}θ_j^2J(θ)=i=1∑m​[y(i)(−log(hθ​(x(i))))+(1−y(i))(−log(1−hθ​(x(i))))]+2λ​j=1∑n​θj2​
把上式中的(−log(hθ(x(i))))\left (-log(h_θ(x^{(i)}))\right )(−log(hθ​(x(i))))替换为Cost1(θTx(i))Cost_1(\theta^Tx^{(i)})Cost1​(θTx(i)),把(−log(1−hθ(x(i))))\left(-log(1-h_θ(x^{(i)}))\right)(−log(1−hθ​(x(i))))替换为Cost0(θTx(i))Cost_0(\theta^Tx^{(i)})Cost0​(θTx(i)),得到代价函数:
J(θ)=∑i=1m[y(i)Cost1(θTx(i))+(1−y(i))Cost0(θTx(i))]+λ2∑j=1nθj2J(θ)=\sum_{i=1}^m\left[y^{(i)}Cost_1(\theta^Tx^{(i)})+(1-y^{(i)})Cost_0(\theta^Tx^{(i)})\right]+\frac{λ}{2}\sum_{j=1}^{n}θ_j^2J(θ)=i=1∑m​[y(i)Cost1​(θTx(i))+(1−y(i))Cost0​(θTx(i))]+2λ​j=1∑n​θj2​
在支持向量机中,不再使用正则化参数λ\lambdaλ,改为使用参数CCC,更改后的支持向量机的代价函数为:
J(θ)=C∑i=1m[y(i)Cost1(θTx(i))+(1−y(i))Cost0(θTx(i))]+12∑j=1nθj2J(θ)=C\sum_{i=1}^m\left[y^{(i)}Cost_1(\theta^Tx^{(i)})+(1-y^{(i)})Cost_0(\theta^Tx^{(i)})\right]+\frac{1}{2}\sum_{j=1}^{n}θ_j^2J(θ)=Ci=1∑m​[y(i)Cost1​(θTx(i))+(1−y(i))Cost0​(θTx(i))]+21​j=1∑n​θj2​

  • 支持向量机中不会预测y=1/0y=1/0y=1/0的概率,如果θTx(i)≥0\theta^Tx^{(i)}\ge0θTx(i)≥0,假定函数输出1,反之输出0

12-2 大间距的理解

支持向量机又被称为大间距分类器

更改支持向量机中的判断边界,让θTx(i)≥1\theta^Tx^{(i)}\ge1θTx(i)≥1时才输出1,θTx(i)≤−1\theta^Tx^{(i)}\le-1θTx(i)≤−1时才输出0,这样两个结果之间就有一个安全间距

使用一般的逻辑回归算法可能会生成上图中粉色和绿色的直线来分割两类样本,而使用支持向量机会生成图中黑色的直线,图中两条蓝线中间的区域称为间距,支持向量机会尽可能的将两种样本以最大的间距分隔开,可以看出,支持向量机后可以有更好地鲁棒性

如上图,先假设没有左侧的那一个负样本,用一个很大的CCC可以生成上图中黑色直线,但如果有左侧的那一个负样本,由于CCC很大,支持向量机为保证两类样本间有最大的间距,会生成上图中粉色的直线,但如果CCC没有那么大,则即使有左侧的那一个负样本,依然会生成黑色直线

  • CCC就相当于之前的1λ\frac{1}{\lambda}λ1​,虽然两者确实不一样,但呈现出来的效果差不多

12-3 支持向量机的数学原理

12-4 核函数I


如图的样本,如果假定函数≥0\ge0≥0,就预测y=1y=1y=1,其他情况预测y=0y=0y=0,
在上图中的假定函数中,设f1=x1,f2=x2,f3=x1x2,f4=x12,...f_1=x_1,f_2=x_2,f_3=x_1x_2,f_4=x_1^2,...f1​=x1​,f2​=x2​,f3​=x1​x2​,f4​=x12​,...
假定函数变为hθ(x)=θ0+θ1f1+θ2f2+...h_\theta(x)=\theta_0+\theta_1 f_1+\theta_2 f_2+...hθ​(x)=θ0​+θ1​f1​+θ2​f2​+...
以上方法与下文方法无关,与核函数无关
然而,除了对原有的特征进行组合以外,有没有更好的方法来构造

【CV】吴恩达机器学习课程笔记 | 第1-15章相关推荐

  1. 吴恩达机器学习课程笔记一

    吴恩达机器学习课程笔记 前言 监督学习---`Supervised learning` 无监督学习---`Unsupervised learning` 聚类 异常检测 降维 增强学习---`Reinf ...

  2. 【CV】吴恩达机器学习课程笔记第10章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 10 应用机器学习的建议 10-1 决定下一步做什么 10 ...

  3. 【CV】吴恩达机器学习课程笔记 | 第1-2章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 1 介绍 1-3 监督学习 1-4 无监督学习 2 单变量 ...

  4. 【CV】吴恩达机器学习课程笔记第18章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 18 应用案例:照片OCR 18-1 问题描述与流程(pi ...

  5. 【CV】吴恩达机器学习课程笔记第17章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 17 大规模机器学习 17-1 学习大数据集 17-2 随 ...

  6. 【CV】吴恩达机器学习课程笔记第16章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 16 推荐系统 16-1 问题规划 16-2 基于内容的推 ...

  7. 【CV】吴恩达机器学习课程笔记第11章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 11 机器学习系统设计 11-1 确定执行的优先级:以垃圾 ...

  8. Github标星24300!吴恩达机器学习课程笔记.pdf

    个人认为:吴恩达老师的机器学习课程,是初学者入门机器学习的最好的课程!我们整理了笔记(336页),复现的Python代码等资源,文末提供下载. 课程简介 课程地址:https://www.course ...

  9. 吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)

    目录 1-1机器学习的相关名词 1-2 什么是机器学习? 1.definition 定义 2.主要的机器学习算法的分类 1-3有监督学习及常用算法 1.定义 2.两种数据类型补充:categorica ...

  10. 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归

    吴恩达Coursera机器学习课系列笔记 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础 1 Linear Regression with Multiple Variable ...

最新文章

  1. [转]Linux 的多线程编程的高效开发经验
  2. crackMe的逆向分析
  3. 洛谷 - P4783 【模板】矩阵求逆(高斯消元求逆矩阵)
  4. 微信读书vscode插件_vscode 常用的插件
  5. 算法的时间复杂度[ZT]
  6. JSP脚本连接数据库
  7. excel柱状图自定x轴y轴_Excel制作双坐标轴图表与把X轴与Y轴改为月份及使坐标轴带方向...
  8. DeepStream初步学习
  9. Word中规范输入大写的中文日期(转)
  10. processing交互应用——双人对战游戏
  11. 网易邮箱注册界面设计 html
  12. c++ cout 不能正常打印uint8_t
  13. PHP判断中文字符串的长度和字节长度
  14. 汉语拼音拼读的小技巧
  15. java判断200以内的素数_java判断101-200之间的素数并输出
  16. 10.2-控制单元CU的微程序设计
  17. 随机读写之DirectIO
  18. 用Go语言编程的利与弊
  19. NYOJ—一笔画问题(欧拉回路)
  20. SQL按日期分组销售产品,使用group_concat和separator

热门文章

  1. Java Calendar.add()方法的使用,参数含义。指定时间差。
  2. Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)
  3. JavaEE学习笔记之Servlet
  4. 【AJAX】JavaScript的面向对象
  5. 【Docker】Ubuntu18.04国内源安装Docker-准备工作(一)
  6. 机房收费系统总结【1】-整体流程
  7. tableau问题汇总
  8. LeetCode简单题之拆炸弹
  9. LLVM Backend技术
  10. MLIR(Multi-Level Intermediate Representation Compiler)架构 Infrastructure