深度学习(一),线性回归与逻辑回归

这篇具有很好参考价值的文章主要介绍了深度学习(一),线性回归与逻辑回归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        代码是自己敲得,图是自己画的,连公式都是一个一个字打的, 希望赞是你给的(≧◡≦)。

 一,介绍

        线性回归(Liner Regression),俗称lr。

                                                               深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习

        一个大家熟悉得不能再熟悉的式子,便是线性回归的真身。其中a作为要学习的系数,b则是误差项。如果有多个变量,如

                                                深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习

        这便成为了多元线性回归。

        这个模型吧很基础也很常见,不管你是学统计学还是机器学习还是深度学习,第一个了解的模型应该都是它。也就是说,lr既可以算作一种统计模型,也能算作一种机器学习模型,但我觉得很多人不知道的是,它其实也能算作一种深度学习模型。如果你熟悉神经网络的话,就会发现,线性回归不就是只有一层且output 为1的神经网络吗,这一点在后面了解了神经网络之后应该会有更深的体会。

        接下来我将仔细的讲解一下线性回归,希望大家看完能有更深的了解。

二,最小二乘法的线性回归

        以一元线性回归为例,假设我们有以下数据:

    深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习      深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习

        左边是我随手敲的一些数据,从肉眼来看,自变量X与因变量Y之间是存在着线性相关性的,即X变大,Y也变大。于是我们希望用一条直线,来代表他们之间的这种线性相关性(也就是说如果想使用线性回归来拟合数据,请确保与拟合的响应变量/因变量之间是具有线性相关的.)。用方程来表示一条直线,也就是我们从高中就很熟悉的 y = ax+b。暂时先假设我们想要找的那一条直线就是这个(在右图中表现为那一条虚线)

        方程设好了之后,接下来的问题就是如何调整该方程的参数a和b,使其能够更好的体现我们现有数据里面的线性趋势。那么就引申出了两个问题:                

  1. 怎么样去判断我们的这条直线有没有很好的代表数据里面的线性趋势?如何量化成一个具体的数值?(损失函数)
  2. 假设我们现在知道了我们的直线没有很好的代表数据里面的线性趋势,并且差得很远,我们该如何优化参数a和b,使我们的直线表现得更好?(求导)                        

  2.1 损失函数

        对于当前直线所代表的线性趋势与数据集里面的线性趋势的差距,我们用损失函数来衡量。损失函数的种类多种多样,而最小二乘法使用的则是十分经典的均方误差(MSE)作为损失函数  即(每一个预测值 — 对应实际值)的平方的简单平均. 我们用如下公式来表达:(也有的会把1/n直接省略掉,不过都是一样的对结果没有影响),

                                   深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习

       这是一个二元函数,其中系数a和误差项b是未知变量,而xi,Yi都是已知的.(Yi是我们数据中的每一个实际值,因变量/响应变量,xi是每一个实际的自变量/解释变量)

        这样,通过计算这个值,我们就得以衡量我们所假设的直线与所代表的线性趋势与实际的线性趋势之间的差距。

2.2 求解析解

        现在到了第二个问题,如何优化参数a,b,让我们的直线离真实的线性趋势更加靠近呢?既然有了E(a,b)值作为度量,那我们只需要使它最小化就可以了。而通过微积分我们可以知道,对于多元函数,对每个自变量求偏导并使其为0,就是它的极值点。

                     深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习

        这样,我们就得到了两个方程,剩下的就是解开这个方程组就可以得到a与b的具体值了。也就是说,最小二乘法的线性回归的参数是可以得到最小平方误差意义下的解析解的,可以直接算出来。这也是唯一一个有解析解的模型了,且算且珍惜。

        当然我们一般不会去解这个方程组,更加方便的做法是利用线代的知识,给它们写成矩阵的形式。

                   深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习

        再此基础上,我们可以进一步简化, 矩阵可以进一步简化为:

                          深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习

        这应该也是很多人见过最多的形式,写成这种形式,不仅有助于理解,我们用代码实现起来也会方便很多,直接用numpy建立array进行相应的矩阵运算就可以了。但很多人没有把额外的那一列1,列出来,而是直接给了最终的式子,导致很多人会漏掉这一列,从而出现了理解上的误差。这一列的作用其实就是用来拟合b,拟合误差项的。

2.3 代码实现

        以上面给出的具体数值为例,实现起来真的很简单。

import numpy as np
from matplotlib import pyplot as plt

def LR(matrix_X, matrix_Y):                 
    '''
    定义最小二乘法的线性回归模型
    '''
    weight = np.dot(matrix_X.T, matrix_X)
    weight = np.linalg.inv(weight)
    weight = np.dot(weight, matrix_X.T)
    weight = np.dot(weight, matrix_Y)
    predict = np.dot(matrix_X, weight)
    return weight, predict

def r_squared(predict, actual):
    """
    计算并返回R^2值。
    """
    # 计算残差平方和SS_res
    ss_res = np.sum((actual - predict) ** 2)
    # 计算总平方和SS_tot
    ss_tot = np.sum((actual - np.mean(actual)) ** 2)
    # 计算R^2值
    r2 = 1 - ss_res / ss_tot
    return r2

# 准备数据
matrix_X = np.array([ [1,1],
                      [2,1],
                      [3,1],
                      [4,1],
                      [5,1]])
matrix_Y = np.array([4,8,7,9,12]).T

# 得到预测结果及系数矩阵
weight,predict = LR(matrix_X, matrix_Y)

             深度学习(一),线性回归与逻辑回归,线性回归,逻辑回归,算法,机器学习,人工智能,深度学习

        从图像上来看的话,效果也还是不错的.文章来源地址https://www.toymoban.com/news/detail-843268.html

2.4 效果评估

def r_squared(predict, actual):
    """
    计算并返回R^2值。
    """
    # 计算残差平方和SS_res
    ss_res = np.sum((actual - predict) ** 2)
    # 计算总平方和SS_tot
    ss_tot = np.sum((actual - np.mean(actual)) ** 2)
    # 计算R^2值
    r2 = 1 - ss_res / ss_tot
    return r2


# 效果评估,这里我们用经典的R^2值来评估.它介于0~1之间,越大说明拟合效果越好

##(R^2 > 0.9):通常表示模型具有非常好的拟合效果,能够解释大部分的数据变异性。
##(0.7 < R^2 < 0.9):通常表示模型有较好的拟合效果,能够解释相当一部分数据变异性。
##(0.5 < R^2 < 0.7):表示模型的拟合效果一般,只能解释一半左右的数据变异性。
##(R^2 < 0.5):通常意味着模型的拟合效果不佳,无法解释大部分数据的变异性。

R2 = r_squared(predict, matrix_Y) 
#我这里计算出来为0.85,说明效果不错,因为数据集本身线性相关性就很明显 

 三,逻辑回归(待更新)

到了这里,关于深度学习(一),线性回归与逻辑回归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python机器学习(五)逻辑回归、决策边界、代价函数、梯度下降法实现线性和非线性逻辑回归

    线性回归所解决的问题是把数据集的特征传入到模型中,预测一个值使得误差最小,预测值无限接近于真实值。比如把房子的其他特征传入到模型中,预测出房价, 房价是一系列连续的数值,线性回归解决的是有监督的学习。有很多场景预测出来的结果不一定是连续的,我们

    2024年02月15日
    浏览(84)
  • 机器学习与深度学习——使用paddle实现随机梯度下降算法SGD对波士顿房价数据进行线性回归和预测

    随机梯度下降(SGD)也称为增量梯度下降,是一种迭代方法,用于优化可微分目标函数。该方法通过在小批量数据上计算损失函数的梯度而迭代地更新权重与偏置项。SGD在高度非凸的损失表面上远远超越了朴素梯度下降法,这种简单的爬山法技术已经主导了现代的非凸优化。

    2024年02月03日
    浏览(54)
  • 人工智能基础_机器学习001_线性回归_多元线性回归_最优解_基本概念_有监督机器学习_jupyter notebook---人工智能工作笔记0040

       线性和回归,就是自然规律,比如人类是身高趋于某个值的概率最大,回归就是通过数学方法找到事物的规律. 机器学习作用: 该专业实际应用于机器视觉、指纹识别、人脸识别、视网膜识别、虹膜识别、掌纹识别、专家系统、自动规划、智能搜索、定理证明、博弈、自动程序

    2024年02月06日
    浏览(52)
  • 机器学习&&深度学习——线性回归的简洁实现

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习——线性回归的从零开始实现 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 由于数据迭代器、损失函数、优化器以及神经网络很常用,现代深度学习库也为我们实现了

    2024年02月15日
    浏览(35)
  • 机器学习&&深度学习——线性回归的基本元素

    回归用来表示输入输出之间的关系。 用实际例子来解释一下线性回归:根据房屋的面积、房龄来估算房屋价格。为了实现这个预测放假的模型,需要收集一个真实的数据集,该数据集包括了房屋的销售价格、面积和房龄。 在机器学习中,这个数据集称为 训练集(training set)

    2024年02月15日
    浏览(48)
  • 机器学习(六):回归分析——鸢尾花多变量回归、逻辑回归三分类只用numpy,sigmoid、实现RANSAC 线性拟合

    [ 实验1 回归分析] 一、 预备知识 使用梯度下降法求解多变量回归问题 数据集 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、

    2023年04月13日
    浏览(80)
  • 解密人工智能:线性回归 | 逻辑回归 | SVM

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 机器学习算法是一种基于数据和经验的算法,通过对大量数据的学习和分析,自动发现数据中的模式、规律和关联,并利用这些模式和规律来进行预测、分类或优化

    2024年01月20日
    浏览(49)
  • 机器学习与深度学习——自定义函数进行线性回归模型

    目的与要求 1、通过自定义函数进行线性回归模型对boston数据集前两个维度的数据进行模型训练并画出SSE和Epoch曲线图,画出真实值和预测值的散点图,最后进行二维和三维度可视化展示数据区域。 2、通过自定义函数进行线性回归模型对boston数据集前四个维度的数据进行模型

    2024年02月13日
    浏览(41)
  • 机器学习&&深度学习——线性回归的从零开始实现

    虽然现在的深度学习框架几乎可以自动化实现下面的工作,但从零开始实现可以更了解工作原理,方便我们自定义模型、自定义层或自定义损失函数。 根据带有噪声的线性模型构造一个人造数据集。任务是使用这个数据集来恢复模型的参数。我们使用低维数据,可以更容易地

    2024年02月15日
    浏览(37)
  • 【机器学习】十大算法之一 “逻辑回归”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包