【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述

如何评判一个训练集的好坏

如果我们想要得到一个训练集,并使用训练集训练的模型,训练集中的误差与整个数据空间中的误差之间的差异很小,即写下以下表达式:

[En]

If we want to get a training set and use the model trained by the training set, the difference between the error in the training set and the error in the whole data space is small, that is, write the following expression:

[L(h^{train},D_{all})-h(h^{all},D_{all})\leq \delta ]

那么训练集(D_{train})应该满足的条件为:

[\forall h \in H,\lvert L(h,D_{train})-L(h,D_{all}) \rvert \leq \frac{\delta}{2} ]

对于假设空间中的任何模型在训练集上的误差和在整个数据空间上的误差之间的误差都小于某个值。推导过程如下:

[L(h^{train},D_{all}) \leq L(h^{train},D_{train}) + \frac{\delta}{2} \ \leq L(h^{all},D_{train}) + \frac{\delta}{2}\ \leq L(h^{all},D_{all}) + \frac{\delta}{2} +\frac{\delta}{2}=L(h^{all},D_{all}) +\delta ]

因此, 我们总希望得到一个好的样本集,其能够满足

[\forall h \in H,\lvert L(h,D_{train})-L(h,D_{all}) \rvert \leq \varepsilon\ ]

下面则来探讨一下我们选取到坏的数据集的概率。

由前述的讨论可知,一个(D_{train})是坏的,则 至少存在一个h使得它不满足上式,那么可以认为:

[P(D_{train}\quad isbad)=\bigcup_{h\in H}P(D_{train} \quad is bad\quad dueto\quad h)\quad 所有可能的交集\ \leq \sum_{h\in H}P(D_{train} \quad is bad\quad dueto\quad h)\ \leq \sum_{h\in H}2exp(-2N\varepsilon ^2)=\lvert H \rvert 2exp(-2N\varepsilon ^2)\quad 根据不等式得到的 ]

那么可以看到: 增加训练集样本的数据(N) 或者减少假设空间的大小(\lvert H \rvert) 都可以使得拿到坏数据集的概率降低

但在实践中,很少用它来衡量,因为随机计算的上界大于1,这正好给了我们如何做的启发。

[En]

But in practice, it is rarely used to measure in this way, because the upper bound of random calculation is greater than 1, which just gives us inspiration on how to do it.

而在现实中通常另外收集数据这个方法很难实现,那如果刻意去减少(H)的大小呢,这虽然可以使上界降低, 但如果使得(H) 都没有能够让损失函数很小的假设,那这个减少就很没有意义了。如下图,虽然在更小的(H)能够让训练假设的误差更接近于完美假设的误差, 但这个完美假设是在这个小的假设空间中选出来的,很可能它本身的误差就很大

【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述

那么有没有可能 有一个loss很低的完美假设,同时还能够让现实训练出来的假设和理想很接近呢?,即图中两个small都要。

鱼与熊掌可以兼得的机器学习

承接上文,如果我们要 有一个loss很低的完美假设,同时还能够让现实训练出来的假设和理想很接近,那么最简单的想法当然是 假设空间很小,但是假设空间里面的假设都是能够让损失函数非常小的好假设

这里需要补充一下前面讲过的内容”为什么需要隐含层”,可以看我这篇文章点此跳转,具体即讲述了 神经网络是如何利用隐含层来逼近任何函数的

那么,只有一个隐蔽层就足够了吗?那么,你为什么需要深度学习呢?

[En]

So is only one hidden layer enough? So why do you need deep learning?

事实上, 在实现同一个复杂函数时,使用深度较大宽度较小的网络,相较于只有一层而宽度很大的网络来说,其参数量会小很多,也就是说其效率会更高,同时参数量小也就说明需要的训练数据量也会小,也就更加不容易过拟合

那么结合前面的说法,深度学习可以使得(H)的大小减小,并且效果也能够与(H)很大的宽度方向的神经网络相当。而在一些函数是复杂但有一定规律的情况下,深度学习的效果可以更好,其参数量可以更小。

Original: https://www.cnblogs.com/FavoriteStar/p/16985470.html
Author: FavoriteStar
Title: 【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述



相关阅读

Title: Pandas小白入门原理解释(一)—将value_counts的结果转为DataFrame

文章目录

序言

本例讲了如何将value_counts结果转为dataFrame,本质是将Series转为DataFrame,学会后触类旁通。

学到的知识包括:

  • Series
  • index简介
  • rename_axis
  • reset_index
  • set_index

代码示例

value_counts的结果是一个 series,其 index为原来列的值, value为值的个数。要将其转为 DataFrame需要两个函数 rename_axisreset_index.

代码如下:

>>>> df = pd.DataFrame([[i,i*10] for i in range(10)], columns=['a', 'b'])
>>> df
    a   b
0   0   0
1   1   10
2   2   20
3   3   30
4   4   40
5   5   50
6   6   60
7   7   70
8   8   80
9   9   90
>>> df.b.value_counts().rename_axis("b").reset_index(name="counts")
    b   counts
0   0   1
1   10  1
2   20  1
3   30  1
4   40  1
5   50  1
6   60  1
7   70  1
8   80  1
9   90  1

工作原理讲解

【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述
问题变成,将 series转为DataFrame,在这个过程中需要介绍下index类别和两个函数。

; 带名index 和 默认index

rename_axisreset_index对于 SeriesDataFrame都可以用。现在讲一下在 Series下的功能。

【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述

rename_axis

value_counts的结果是 无名index,要给他一个名字,使用rename_axis即可。rename_axis给index改名字,不支持给value列改名字。对于DataFrame时候,支持对列改名字。如下:

【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述
rename_axis只有一个axis轴,所以参数 axis值为0。在series下,rename_axis只有给index改名字的功能。

; reset_index

reset_index对于 series对象来说,将 series转为dataframe,同时做三件事:

  1. index转为普通列
  2. 给新的dataFrame设置一个默认RangeIndex
  3. 给value列一个名字,这个名字用name参数传递。如下:
>>> s = pd.Series(["dog", "cat", "monkey"])
>>> s.rename_axis("key").reset_index('key', name="animal")
    key animal
0   0   dog
1   1   cat
2   2   monkey

rename_axis,set_index,reset_index对于DataFrame下的应用

set_index是给DataFrame指定某一列作为index,并抛弃掉原来的index。
如下:

【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述
【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述

reset_index是将DataFrame的index重置为普通列,并设置一个默认index。如下:

【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述
【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述

; 其他应用

quantile结果转为DataFrame

>>> df = pd.DataFrame([[i,i*10] for i in range(10)], columns=['a', 'b'])
>>> df.a.quantile([i/4 for i in range(5)]).rename_axis("a_decile").reset_index(name='value_pointer')
    a_decile    value_pointer
0   0.00    0.00
1   0.25    2.25
2   0.50    4.50
3   0.75    6.75
4   1.00    9.00

Original: https://blog.csdn.net/mantoureganmian/article/details/128331277
Author: mantoureganmian
Title: Pandas小白入门原理解释(一)—将value_counts的结果转为DataFrame

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/369573/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • django制作一个小小的教务系统并且成功部署到腾讯云(实现:增删改查和选课的功能)

    我的django学习记录 涉及到的环境 * 前言 正文 开始了,django项目的创建 – model代码 views代码 + 最新更新(上方可不看) 以Ubuntu为…

    Python 2022年12月28日
    048
  • scrapy框架学习

    文章目录 一、IP代理池(比较简陋,后续更新) * 验证ip,proxies用的是两个协议,http和https都要有 二、python爬虫之scrapy框架 * 先贴一张图 基本…

    Python 2023年1月25日
    024
  • Pandas数据分析2-数据分组、Apply函数、合并

    数据分组 import pandas as pd path3 = "E:/kaggle数据/exercise_data/drinks.csv" df3 = pd…

    Python 2022年12月30日
    055
  • Python中的strip().split(‘t‘)的用法和解释

    目录 (一)、strip()的用法 (二)、split的用法 (三)、strip().split()的用法 (一)、strip()的用法 strip()主要是对字符串进行操作,主要…

    Python 2022年12月24日
    040
  • DataFrame保存hdf5文件报错:TypeError:object of type ‘int‘ has no len()4

    最近需要把数据从csv文件中读取出来,然后写入hdf5中。 使用DataFrame读取csv,然后调用df的to_hdf方法直接写入hdf5文件。 我使用的是table模式,示例代…

    Python 2023年1月8日
    060
  • 【scrapy专题】搭建环境

    目录 安装依赖包 安装package–scrapy * 通过镜像源网址下载 通过conda 下载 通过pip下载 生成scrapy工程 运行 * 指令运行 pychar…

    Python 2023年1月25日
    015
  • pytest学习总结3.3 – pytest.ini、API解读

    3.3.1 命令行选项 您可以通过使用通用帮助选项获得有关ini样式配置文件中的命令行选项和值的帮助:pytest -h 这将显示由已安装的插件注册的命令行和配置文件设置。 3.3…

    Python 2023年1月17日
    027
  • Pytest/Allure环境搭建

    一 Pytest环境搭建Pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效, 支持315种以上的插件,同时兼容 unittest 框架, …

    Python 2023年1月19日
    024
  • 单元测试pytest

    一、安装 可以在终端安装 安装pytest: pip install pytest 安装pytest-html(生成html测试报告): pip install pytest-ht…

    Python 2023年1月18日
    039
  • Pandas学习-基础

    1、Pandas介绍 ​ Pandas支持大部分Numpy语言风格,特别是常用到的数组函数与广播机制的各种数据处理。但是Numpy更适合处理同质型的数据,Pandas在Numpy的…

    Python 2022年12月30日
    045
  • Python——回调函数(callback)

    摘要 主要是介绍python 的回调函数callback。 什么是回调函数 当程序运行是,一般情况下,应用程序会时常通过API调用库里所预先备好的函数。但是有些库函数却要求应用先传…

    2022年8月28日
    0142
  • Matplotlib的基本使用

    文章目录 1. 什么是Matplotlib 2. 安装和基本使用 3.点线缩写和颜色的选择 4. 设置图的信息 * 4.1 设置线条样式的方法 4. 2 设置轴和标题 &#8211…

    Python 2023年1月15日
    026
  • 轻量级模型设计与部署总结

    前言 一些关键字理解 计算量 FLOPs 内存访问代价 MAC GPU 内存带宽 Latency and Throughput Volatile GPU Util 英伟达 GPU …

    Python 2023年2月1日
    035
  • python入门函数讲解(简单明了,一分钟掌握一个)

    学习以下函数,对掌握基础知识还是有挺大帮助的,以下只是列举了比较常见的几个函数,适合新手,且内容简单明了,能够快速了解并掌握,看完可去 刷题网站免费刷题,提升自己!! int() …

    Python 2022年8月19日
    079
  • Python工具箱系列(十三)

    如果在代码中写死了(hardcode)文件名,每次要加解密文件都要去改python源代码,显然有些太笨了。为此,可以使用命令行参数来在不改动源代码的情况下,对命令行参数所指定的文件…

    Python 2023年2月3日
    016
  • 点云作业python基础

    DataFrame是pandas包中的重要数据类型,相当于表格数据类型,常用的操作如下: 创建DataFrame import pandas as pd df = pd.DataF…

    Python 2022年12月30日
    054
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总