Supervised learning demo

简介: 监督学习案例规范假设函数: 使用h(hypothesis, 假设)表示输入(input value)向量或者实数: 使用小写字母x等矩阵: 使用大写字母X等输出(output value)向量或者实数: 使用小写字母y等矩阵: 使用大写字母Y等参数(Parameter...

监督学习案例

规范

  • 假设函数: 使用h(hypothesis, 假设)表示
  • 输入(input value)
    • 向量或者实数: 使用小写字母x等
    • 矩阵: 使用大写字母X等
  • 输出(output value)
    • 向量或者实数: 使用小写字母y等
    • 矩阵: 使用大写字母Y等
  • 参数(Parameters): θ
  • 样本的数量(列数): m
  • 样本中特征(feature)的个数: n
  • x(1)0: 0表示第0个特征(为我们给出的样本中的特征是从1开始的,这里的0是我们自己添加上去的,所有的x(m)0都为1,其中1表示第几行数据, 它的一般式就是x(i)j, 以后j表示第几个特征,i表示第几个样本

房价的Size和Price的预测

  • X 为 房子的 Size
  • 建立一个线性模型: hθ(x)=θ0+θ1x
  • 要让我们fit的model与y差异最小, 称之为最小化(minimize)
    • 在这个案例中使用J(θ0,θ1)=12mmi=0(hθ(x(i))y(i))2
    • 上面的就是我们的代价函数(cost function), 因为我们有让得到的和除以了2m, 所以我们的到函数也称之为平均误差函数(squared error function), 注意: cost function的自变量时theta_0和theta_1, 不在是我们熟悉的x了
    • minimizeθ0θ1J(θ0,θ1)
      表示求出一个θ0θ1使得J(θ0,θ1)的值最小, 我们称之为最小化的过程, 上面的这个表达式就是我们的优化目标(optimization objective), 也就是我们的目标函数
  • 对于线性回归模型来说, 它的J(θ0,θ1)目标函数是一个凸函数(没有局部最优点, 只有一个全局的最优点), 在二维上是抛物线, 在三维上是一个碗状, 对于三维的(J有两个theta参数), 一般使用等高线图来替代三维凸函数
  • 使用gradient regression梯度降维求出最优解, 梯度降维的公式为θ0:=θ0α×θ0J(θ0,θ1), 对于另一个θ1也是一样的, θ1:=θ1α×θ1J(θ0,θ1), 上面的是公式, 在实际更新我们的参数θ0,θ1的时候, 应该保证θ0,θ1同步更新, 所以应该这样子tmp0:=θ0α×θ0J(θ0,θ1)
    tmp1:=θ1α×θ1J(θ0,θ1)
    θ0:=tmp0
    θ1:=tmp1
    , 在最后同步更新θ0θ1的值
  • 关于梯度下降公式的细节
    • 公式中, α表示学习率, θ0J(θ0,θ1)表示梯度下降的方向, 所以α×θ0J(θ0,θ1)表示θ0要更新多少的值, 形象一点就是说, 一个人在一个山顶上, 他步子的大小为α, 他希望尽快下山的方向为θ0J(θ0,θ1), 这样我们就可以更新θ0的值了
    • 虽然我们在公式中规定了α学习率, 但是并不代表我们走的每一步就是不变的, 因为导数是在变化的, 为最低点的时候为0, 在其他地方有时别的值
    • 要应用梯度下降法, 我们需要为θ0θ1进行初始化, 一般来说都初始化为0, 但是也要视情况而定
    • 什么时候停止梯度下降?
      • 我们可以规定一个阈值, 当我们的α×θ0J(θ0,θ1)小于这个阈值的时候停止, 这个是通过计算机自动停止迭代的, 但是不推荐使用
      • 另外一种方式就是通过画出minimizeθ0θ1J(θ0,θ1)与迭代次数的图像来判断应该迭代多少次, 如果画出来的是一个抛物线则表示我们设置的α学习率太大了, 应该减小α的值
  • 其他
    • 对于这个房价的模型, 我们除了使用梯度下降的方法求出我们的目标函数之外还可以使用matrix的方法来求, 这个更加的简单
    • 我们每求一次J(θ0,θ1)的值就要遍历一遍所有的数据, 因为the definition of the J(θ0,θ1) is mi=112m(h(x(i))y(i))2)
      , 这种方式我们称之为Batch梯度下降

房价的Size和Price的预测-其他解决方案

  • 在上一节中我们已经得到了一个线性模型hθ(x)=θ0+θ1x,根据这个假设函数我们定义出了一个目标函数(也称之为损失函数)J(θ0,θ1)=12mmi=0(h(x(i))y(i))2

    接着通过梯度下降的方法计算出minimizeθ0θ1J(θ0,θ1), 我们知道这种方法需要对进行迭代,比较麻烦,那有没有更加简单的方法呢?能不能一次迭代就可以求出我们的θ0θ1呢?答案就是正规方程

  • 正规方程: θ=(ATA)1ATy
    • 其中θ为一个列向量, 表示我们所有的参数
      [θ0θ1]
    • A 表示输入的 x 组成的矩阵, 这里就是
      [1x(1)11x(2)11x(m)1]


      上面的矩阵的原型就是
      [x(1)0x(1)1x(2)0x(2)1x(m)0x(m)1]

      从上面我们可以知道x(n)0是值为1,这里的

      [x(1)0x(2)0x(3)0x(m)0]
      • 就是我们自己添加上去的新的特征值,这个特征比较特殊,因为它所有的值都为0,为什么要这样做?通过观察假设函数h(x(i))=θ0×1+θ1x(i)我们发现,之后θ0没有自变量,为了数学上的统一,于是我们对其进行修改h(x(i))=θ0x(i)0+θ1x(i)1,其中x(i)0为1。
    • 其中y为一个列向量,它的值为
      [y(1)y(2)y(3)y(m)]


      x(i)j对象的标签值

  • 如果构建 A ?
    • 首先,在书写假设函数的时候应该安装阶数的升序书序,如h(x(i))=θ0+θ1x(i)1+θ2(x(i)1)2或者h(x(i))=θ0+θ1x(i)1+θ2x(i)2分别从方便的式子中构建 A

      第一个是
      [1x(1)1(x(1)1)21x(2)1(x(2)1)21x(m)1(x(m)1)2]

      第二个是
      [1x(1)1x(1)21x(2)1x(2)21x(m)1x(m)2]

  • 如果已经构建出了矩阵 A,接下来的y的构建是非常简单的,就是安装y给出的顺序构建一个列向量即可
  • 带入公式就可以直接求出 θ

  • 正规方程的优点
    • 不需要像梯度下降法一样麻烦,需要换出minimizeθ0θ1J(θ0,θ1)和迭代次数的图像来确定迭代的次数,除此之外还要确定出α学习率的大小
  • 正规方程的缺点
    • 在公式中发现这个A矩阵包含了所有的输入,如果输入量非常的大,则A矩阵就会非常大,在计算(ATA)1矩阵的维度就会增大,并且求矩阵的逆在大数据的情况下是非常消耗计算机的性能的
    • 使用的范围小,只适用于线性回归,而梯度下降使用的范围要广很多

房价的Size和Price的预测-多变量

  • 在上两节中我们只考虑到了房子的大小和房子的关系,当然这个是不包括我们计自己添加上去的第0个特征,它们的值都为1。下面我们再添加一些特征,下面就添加 Age。

  • 此时我们的假设函数为h(x(i))=θ0+θ1x(i)1+θ2x(i)2,其中x(i)1为size输入,x(i)2为age的输入,构建目标函数(cost function)J(θ0,θ1,θ2)=12mmi=0(h(x(i))y(i))

    ,为了方便起见,通常我们会将向量输入到函数中而不是一个实数,因为在编程中我们就是输入向量或者矩阵的J(θ)=12mmi=0(h(x(i))y(i))
    其中,θ是一个向量,它的值为[θ0θ1θ2]

  • 接下来就是我们熟悉的步骤了通过画出minimizeθ0,θ1,θ2J(θ0,θ1,θ2)和迭代次数的图求出应该迭代几次,关于minimizeθ0,θ1,θ2J(θ0,θ1,θ2)$的值已经在前几节讲过了,使用梯度下降的方法

tmp0:=θ0α×θ0J(θ)


tmp1:=θ1α×θ1J(θ)

tmp2:=θ2α×θ2J(θ)

θ0:=tmp0θ1:=tmp1θ2:=tmp2

在最后同步更新θ0, θ1θ2的值,道理都是一样的

另外的思考-房子的宽(width)和长(length)对房价进行预测

  • 根据标题知道,题目给出了两个特征width和length,我们当然可以和上一节那样构建假设函数,上一节的假设函数绝对是首选,但是如果拟合的不好呢?这就意味着我们需要重新构建假设函数,现在我们构建一个新的假设函数h(x(i))=θ0+θ1x(i)1+θ2(x(i))2,我们发现这与我们之前的假设函数不一样的地方在于有2阶,这个地方就有技巧了,x(i)1看成一个新的特征xnew(i)1(x(i)2)2看成另外一个新的特征xnew(i)2,这样子我们的假设函数就又成为了一阶了的,操作步骤就和之前的一样了

对数据的处理

在获取到需要训练的数据的时候,我们需要对数据进行去均值化

  • 什么是去均值化
    • 去均值化就是将我们的一列数据的范围固定到11$这个范围之间,但是这个范围不是硬性要求,可以在这个区间内波动
    • 公式:
      v=xavgmaxmin

      • v 为去均值之后的数据样本列向量
      • x 为待去均值的数据样本列向量
      • avg 为 x 的均值
      • max 为 x 的最大值
      • min 为 x 的最小值
      • 还是要提的是x是一个列向量,就是我们数据表中的一列,就是x(i)j中的第j个特征的所有的值
    • 举例:
      • 假设我们的房价中size的范围是在(0, 3000)区间内,可想而知有10,有200, 有3000,这样数据之间的差异太大了,对我们的拟合时候影响的,如果我们使用梯度下降发进行最小化,因为数据差异大,会导致最小化的速度变慢

      • 使用公式
        v=xavgmaxmin


        得到的v,它所有元素的大小都在11区间内

  • 为什么要去均值

    • 很简单,为了在使用梯度下降的方法进行最小化的时候加快速度
  • 执行去均值之后,我们应该保存mean和std,因为我们使用的是去均值之后的数据拟合的模型,在使用这个模型的时候,我们也要对输入进行去均值,这样拟合出来的数据才是我们需要的。

所有在之前的案例中,我们应该加上去均值这一步

目录
打赏
0
0
0
0
8
分享
相关文章
论文精度笔记(二):《Deep Learning based Face Liveness Detection in Videos 》
论文提出了基于深度学习的面部欺骗检测技术,使用LRF-ELM和CNN两种模型,在NUAA和CASIA数据库上进行实验,发现LRF-ELM在检测活体面部方面更为准确。
58 1
论文精度笔记(二):《Deep Learning based Face Liveness Detection in Videos 》
Speech Emotion Recognition With Local-Global aware Deep Representation Learning论文解读
语音情感识别(SER)通过从语音信号中推断人的情绪和情感状态,在改善人与机器之间的交互方面发挥着至关重要的作用。尽管最近的工作主要集中于从手工制作的特征中挖掘时空信息,但我们探索如何从动态时间尺度中建模语音情绪的时间模式。
194 0
Review on the Recent Welding Research with Application of CNN-Based Deep Learning
Guo等人16)将CNN应用于线管制造过程中的电阻焊,提出了一种正常焊缝与缺陷焊缝的分类模型,准确率达到99.01%。
144 0
论文笔记之:Collaborative Deep Reinforcement Learning for Joint Object Search
Collaborative Deep Reinforcement Learning for Joint Object Search   CVPR 2017 Motivation:   传统的 bottom-up object region proposals 的方法,由于提取了较多的 proposal,导致后续计算必须依赖于抢的计算能力,如 GPU 等。
跟着指南学PyTorch—迁移学习教程(Transfer Learning tutorial)
在这个教程,你将学习如何通过迁移学习训练神经网络。你可以在 cs231n notes 了解更多关于迁移学习的内容。
1967 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等