• 回归与分类


    回归与分类

    机器学习的主要任务便是聚焦于两个问题:回归与分类

    回归与分类

    回归的定义

    • 机器学习的过程就是寻找函数的过程,通过训练获得一个函数映射,给定函数的输入,函数会给出相应的一个输出,若输出结果是一个数值scalar时,即称这一类机器学习问题为回归问题
    • 就如李宏毅老师所说:Regression就是找到一个函数function,通过输入特征x,输出一个数值scalar
    • 例如:房价数据,根据位置、周边、配套等等这些维度,给出一个房价的预测

    分类与回归的区别

    • 分类是基于数据集,作出分类选择
    • 分类与回归区别在一输出变量的类型
    • 输出是离散的就可以做分类问题,即通常多个输出,输出i是预测为第i类的置信度
    • 输出是连续的就可以做回归问题 ,即单连续值输出,跟真实值区别作为损失

    模型步骤

    • step1:模型假设,选择模型框架(线性模型)
    • step2:模型评估,如何判断众多模型的好坏(损失函数)
    • step3:模型优化,如何筛选最优的模型(梯度下降)

    一、线性模型

    step1 模型假设

    • 给定n维输入 x = [x1,x2,....,xn]^T
    • 线性模型有一个n维权重和一个标量偏差 即w与b
    • 输出是输入的加权和 y = w1x1 + w2x2 + ... +wnxn +b
    • 向量版本 y = + b

    假设1:影响房价的关键因素是卧室个数,卫生间个数,和居住面积,记为x1,x2,x3

    假设2:成交价是关键因素的加权和 则 y = w1x1 + w2x2 +w3x3 + b,

    权重和偏置的实际值在后面决定

    step2 模型评估(衡量预估质量)

    • 收集和训练数据
    • 如何判断众多模型的好坏(根据损失函数判断)

    1.平方损失 y为真实值,y1为估计值(预测值)
    $$
    p(y,y1) = 1/2(y-y1)^2
    $$
    2.训练损失
    $$
    p(X,y,w,b) = ∑(y[i] - (b + ))^2
    $$

    step3 选取最优模型(梯度下降)

    • 为了获得最优模型故要使L(w,b)损失函数值最小化,而对于L(w,b)实质上就是w,b的函数,因此可以通过求偏微分来寻找其最小化损失点

    最小化损失学习参数
    $$
    w* , b* = arg min(X,y,w,b)
    $$

    • 而对于梯度下降来讲

    • 1.首先要挑选一个初始值 w0,同时引入学习率(步长的超参数) η

    • 2.重复迭代参数 t =1,2,3

    • 3.沿梯度方向将增加损失函数值
      $$
      w[t] = w[t-1] -η*(∂L/∂w[t-1])
      $$

    注:上式中减号意思为沿着梯度反方向

    import numpy as np
    import matplotlib.pyplot as plt
    
    def my_func(x): #定义原函数
        return x**4 + 2*x**3 - 3*x**2 -2*x
    def grad_func(x): #定义导数
        return 4*x**3 + 6*x**2 -6*x -2
    
    eta = 0.09 #学习系数
    x = -1.5 #定义自变量x起始值
    record_x = [] #记录x值
    record_y = [] #记录y值
    
    for i in range(20): #将x循环20次
        y = my_func(x)
        record_x.append(x) #将记录添加
        record_y.append(y)
        x -= eta*grad_func(x) #梯度下降法公式 学习系数*导数值
    
    x_f = np.linspace(-2.8,1.6)
    y_f = my_func(x_f)
    
    plt.plot(x_f,y_f)
    plt.scatter(record_x,record_y)
    plt.xlabel("x", size=14)
    plt.ylabel("y", size=14)
    plt.grid()
    plt.show()
    

    二、广义线性模型(generalized linear model)

    $$
    y=g^-1 (w^Tx+b)
    $$

    上面式子即为广义线性模型的一种表达,其中g(.)被称为联系函数,同时要求单调可微。使用广义线性模型可以实现强大的非线性函数映射功能(比如对数线性回归,令g(.) = ln(.),此时模型预测值对应的是真实值标记在指数尺度上的变化)

    那么线性模型的输出是一个实值,而分类任务的标记是离散值,怎么把二者联系起来呢?

    • 广义线性模型已经给了我们答案,我们要做的是找到一个单调可微的联系函数,把二者联系起来
    • 对于一个二分类任务,比较理想的函数是阶跃函数(激活函数)
    对数线性回归(log-linear regression)

    由于单位阶跃函数不连续,所以不能直接用作联系函数。故思路转换为如何在一定程度上近似单位阶跃函数呢? 对数几率函数正是我们所需常用的替代函数:sigmoid函数

    • 对于分类任务,由于是离散的数据,可以通过广义线性模型的非线性函数映射进行,简单来说将其离散数据映射在相似函数之上,也就是激活函数

    总结

    那么对于一整个回归过程来说 首要要假设模型去进行预选,接着要进行模型的评估计算损失函数,最后一步则是对损失函数进行优化即梯度下降算法

    将一整个回归过程放在神经网络中时 在正向传播中,首先进行将数据值x进行输入,其次通过权值和的计算以及激活函数得到输出值,传输至第二层,层层往下,最后输出值 根据输出值与真实值之间的distance即为loss函数

  • 相关阅读:
    tomcat10版本升级导致jar引入问题
    如何优化阿里云幻兽帕鲁/Palworld的多人联机性能,并避免内存溢出导致的异常退出游戏?
    数据库中的DECODE函数,SIGN函数
    Canvas变形
    LVS+keepalived
    读破万卷,神交古人,突破ChatGPT4096的Token限制,建立自己的垂直领域资料人工智能助理
    2022年9月月赛乙组 T3.棋盘问题
    顺为资本许达来:判断风口一看时间点,二看商业本质
    如何在JVS低代码表单配置中实现数据的高效管理?
    【阿旭机器学习实战】【24】信用卡用户流失预测实战
  • 原文地址:https://www.cnblogs.com/311dih/p/16597152.html