过拟合

改善深层神经网络:超参数调试、正则化以及优化 笔记

瘦欲@ 提交于 2020-05-05 01:16:30
  吴恩达 Andrew Ng 的视频教程“改善深层神经网络:超参数调试、正则化以及优化”,主要介绍: 如何有效的运作神经网络,内容涉及超参数调优,如何构建数据,以及如何确保优化算法快速运行,从而使学习算法在合理时间内完成自我学习。   下面是笔记的索引:   第一周: 深度学习的实用层面     1.1 训练/开发/测试集     1.2 偏差/方差     1.3 机器学习基础     1.4 正则化     1.5 为什么正则化可以减少过拟合     1.6 dropout正则化     1.7 理解dropout     1.8 其他正则化方法     1.9 归一化输入     1.10 梯度消失与梯度爆炸     1.11 深度网络中的权重初始化     1.12 梯度的数值逼近 未完待续 来源: oschina 链接: https://my.oschina.net/u/4279189/blog/4020954

机器学习 -- 初识决策树

不打扰是莪最后的温柔 提交于 2020-05-04 20:04:45
决策树 一、概述 1. 分类问题的步骤 2. 决策树的优点 3. 决策树解决问题的一般方法 4. 决策树的3个步骤 5. 决策树的特点 二、决策树建模与学习 1. 什么是决策树 2. 决策树与if-then规则 3. 如何学习一个决策树 三、特征选择 1. 什么是特征选择 2. 熵 3. 条件熵 4. 信息增益 5. ID3算法 6. 信息增益比 四、决策树生成 1. ID3算法 五、决策树的剪枝(Decision tree pruning) 1. 理想的决策树 2. 决策树面临的问题 3. 解决方法:剪枝 4. 判断剪枝的好坏 5. 决策树剪枝算法 6. CART算法 总结 一、概述 决策树是一种典型的分类方法 首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。 本质上决策树是通过一系列规则对数据进行分类的过程。 1. 分类问题 的 步骤 (1)模型构建(归纳)通过对训练集合的归纳,建立分类模型。 (2)预测应用(推论)建立的分类模型,对测试集合进行测试。 2. 决策树的优点 (1)推理过程容易理解,决策推理过程可以表示成If Then形式; (2)推理过程完全依赖于属性变量的取值特点; (3)可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考。 3. 决策树解决问题的一般方法 4. 决策树的3个步骤

【回归预测】SVM基础实战篇之经典预测(三)

ぃ、小莉子 提交于 2020-05-04 14:16:23
​ 【玩点有趣的】这几篇SVM介绍是从0到1慢慢学会支持向量机,将是满满的干货,都是我亲自写的,可以随我一起从头了解SVM,并在短期内能使用SVM做到想要的分类或者预测~我也将附上自己基础训练的完整代码,可以直接跑,建议同我一样初学者们,自己从头到尾打一遍,找找手感,代码不能光看看,实践出真知! ​ 回顾一下, 上上篇 ,我们建立和比较了线性分类器和非线性分类器,比较了多元线性核函数和线性核函数,解决了类型数量不平衡问题, 上篇 ,我们使用SVC做了简单的分类,话不多说,今天我们开始SVR做回归预测,原理篇和实战基础一 请参见上几篇博客,我们循序渐进慢慢贴近真实情景!解决生活问题 估算交通流量 首先做一个比较 有趣的应用 ,我们使用了 SVR来预测:在洛杉矶棒球队进行主场比赛期间,体育场周边马路通过的汽车数量 如图: 这里 一万七千条记录数据 ,分别表示: 星期,时间,对手球队名,比赛是否正在进行,通过汽车的数量 【完整代码】上代码: import numpy as np from sklearn import preprocessing from sklearn . svm import SVR input_file = 'traffic_data.txt' X = [ ] count = 0 with open ( input_file , 'r' ) as f : for

机器学习 | 吴恩达斯坦福课程笔记整理之(二)逻辑回归

人盡茶涼 提交于 2020-05-03 22:56:41
本系列为吴恩达斯坦福 CS229机器学习课程笔记整理,以下为笔记目录:   (一)线性回归   (二)逻辑回归   (三)神经网络   (四)算法分析与优化   (五)支持向量机   (六)K-Means   (七)特征降维   (八)异常检测   (九)推荐系统   (十)大规模机器学习 第二章 逻辑回归 使用线性回归来处理 0/1 分类问题比较困难,因此引入逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1)和非(0)。 一、Sigmoid预测函数 在逻辑回归中,定义预测函数为: g(z) 称之为 Sigmoid Function,亦称 Logic Function 二、决策边界 决策边界是预测函数 hθ(x) 的属性,而不是训练集属性。这是因为能作出“划清”类间界限的只有 hθ(x) ,而训练集只是用来训练和调节参数的。 线性决策边界 非线性决策边界 二、预测代价函数 对于分类任务来说,我们就是要反复调节参数 θ ,亦即反复转动决策边界来作出更精确的预测。假定我们有代价函数 J(θ) ,其用来评估某个 θ 值时的预测精度,当找到代价函数的最小值时,就能作出最准确的预测。 通常,代价函数具备越少的极小值,就越容易找到其最小值,也就越容易达到最准确的预测。 -> 局部最小和全局最小 逻辑回归定义的代价函数为: 三、最小化代价函数 同样采用BGD和SGD两种方式 四、正则化

【dlib代码解读】人脸关键点检测器的训练

左心房为你撑大大i 提交于 2020-05-03 16:17:37
1. 源代码 先给出测试的结果,关键点并不是特别准,原因是训练样本数据量太少。 以下给出完整的人脸关键点检测器训练代码。详细的代码解读请看第二部分。 /* faceLandmarksTrain.cpp function:借助dlib训练自己的人脸关键点检测器(参考dlib/examples/train_shape_predictor_ex) date:2016/11/6 author:Elaine_Bao */ #include <dlib/image_processing.h> #include <dlib/data_io.h> #include <iostream> using namespace dlib; using namespace std; // ---------------------------------------------------------------------------------------- //获取两眼间距离,输出D[i][j]表示objects[i][j]中人脸的两眼间距离 std::vector<std::vector<double> > get_interocular_distances( const std::vector<std::vector<full_object_detection> >& objects ); // -

写给程序员的机器学习入门 (一)

家住魔仙堡 提交于 2020-05-02 14:39:01
前段时间因为店铺不能开门,我花了一些空余时间看了很多机器学习相关的资料,我发现目前的机器学习入门大多要不门槛比较高,要不过于着重使用而忽视基础原理,所以我决定开一个新的系列针对程序员讲讲机器学习。这个系列会从机器学习的基础原理开始一直讲到如何应用,看懂这个系列需要一定的编程知识(主要会使用 python 语言),但不需要过多的数学知识,并且对于涉及到的数学知识会作出简单的介绍。因为我水平有限(不是专业的机器学习工程师),这个系列不会讲的非常深入,看完可能也就只能做一个调参狗,各路大佬觉得哪些部分讲错的可以在评论中指出。 如果你没有学过 python,但学过其他语言 (例如 Java 或 C#),推荐你看 Learn Python in Y Minutes ,大约半天时间就能掌握基础语法(快的可能只需一个小时😂)。 英文版 中文版 机器学习的本质 在讲解具体的例子与模型之前,我们先来了解一下什么是机器学习。在业务中我们有很多需要解决的问题,例如用户提交订单时如何根据商品列表计算订单金额,用户搜索商品时如何根据商品关键字得出商品搜索结果,用户查看商品一览时如何根据用户已买商品计算商品推荐列表,这些问题都可以分为 输入 , 操作 , 输出 ,如下图所示: 其中操作部分我们通常会直接编写程序代码实现,程序代码会查询数据库,使用某种算法处理数据等,这些工作可能很枯燥

数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10

老子叫甜甜 提交于 2020-05-02 14:17:13
简介 在上一篇博客: 数据挖掘入门系列教程(十一点五)之CNN网络介绍 中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数据集进行训练。 如果对keras不是很熟悉的话,可以去看一看 官方文档 。或者看一看我前面的博客: 数据挖掘入门系列教程(十一)之keras入门使用以及构建DNN网络识别MNIST ,在 数据挖掘入门系列教程(十一) 这篇博客中使用了keras构建一个DNN网络,并对keras的做了一个入门使用介绍。 CIFAR-10数据集 CIFAR-10数据集是图像的集合,通常用于训练机器学习和计算机视觉算法。它是机器学习研究中使用比较广的数据集之一。CIFAR-10数据集包含10 种不同类别的共6w张32x32彩色图像。10个不同的类别分别代表飞机,汽车,鸟类,猫,鹿,狗,青蛙,马,轮船 和卡车。每个类别有6,000张图像 在keras恰好提供了这些数据集。加载数据集的代码如下所示: from keras.datasets import cifar10 (x_train, y_train), (x_test, y_test) = cifar10.load_data() print(x_train.shape, 'x_train samples') print(x_test.shape, 'x

数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10

隐身守侯 提交于 2020-05-02 14:10:27
简介 在上一篇博客: 数据挖掘入门系列教程(十一点五)之CNN网络介绍 中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数据集进行训练。 如果对keras不是很熟悉的话,可以去看一看 官方文档 。或者看一看我前面的博客: 数据挖掘入门系列教程(十一)之keras入门使用以及构建DNN网络识别MNIST ,在 数据挖掘入门系列教程(十一) 这篇博客中使用了keras构建一个DNN网络,并对keras的做了一个入门使用介绍。 CIFAR-10数据集 CIFAR-10数据集是图像的集合,通常用于训练机器学习和计算机视觉算法。它是机器学习研究中使用比较广的数据集之一。CIFAR-10数据集包含10 种不同类别的共6w张32x32彩色图像。10个不同的类别分别代表飞机,汽车,鸟类,猫,鹿,狗,青蛙,马,轮船 和卡车。每个类别有6,000张图像 在keras恰好提供了这些数据集。加载数据集的代码如下所示: from keras.datasets import cifar10 (x_train, y_train), (x_test, y_test) = cifar10.load_data() print(x_train.shape, 'x_train samples') print(x_test.shape, 'x

L2正则化解释之多项式曲线拟合

给你一囗甜甜゛ 提交于 2020-05-02 00:37:12
本文通过多项式曲线拟合的问题来解释 L2 正则化的数学含义,既为何选择 w* 较小的模型。详细内容如下: 1.数据生成 有一组数据,按照 的 函数 生成,同事有一写随机噪声。 2. 模型 3. 误差函数 E(w) 是 w 的二次函数,故而存在最小值(当取 w* 时有最小值),当 M 取不同的值的时候,可以得到不同的模型,而这些模型有不同的泛化能力,如下图所示。 选择阶数 M 也是一个问题,这个问题叫模型选择。当 M=0,1 时,模型过于简单,多项式对数据的拟合效果较差,很难表示模型 。当 M=3 时,多项式很好的拟合了函数 , M=9 时, E(w*) = 0 ,但是且过拟合了。目标是通过对新数据的预测,使的测试集上 E(w*) 尽可能的小。 当 M 取不同的值时,训练误差与测试误差如下图所示,由下图可值,当 M=3,4,5,6,7,8 时,模型具有很好的泛化能力。 当 M 取不同的值时,不同阶数的系数如下图: 由上图可知,随着 M 的增加, w* 剧烈的增大了。当 M=9 时, w* 取了很大的值,并且此时,训练误差与测试误差有很大的差距,说明模型过拟合了。 当 M=9 时,让 w 取相当大的正数或是相当大的负数,多项式可以精确的与数据匹配,即:更大的 M 值,更灵活的多项式被过分的调参,使得多项式被调成了与目标值的随机噪声相符合,既模型过于复杂 。

《Python数据分析与机器学习实战-唐宇迪》读书笔记第12章--支持向量机

。_饼干妹妹 提交于 2020-04-29 08:53:34
python数据分析个人学习读书笔记-目录索引 第12章支持向量机    在机器学习中,支持向量机(Support Vector Machine,SVM)是最经典的算法之一,应用领域也非常广,其效果自然也是很厉害的。本章对支持向量机算法进行解读,详细分析其每一步流程及其参数对结果的影响。 12.1支持向量机工作原理   前面已经给大家讲解了一些机器学习算法,有没有发现其中的一些套路呢?它们都是从一个要解决的问题出发,然后将实际问题转换成数学问题,接下来优化求解即可。支持向量机涉及的数学内容比较多,下面还是从问题开始一步步解决。 12.1.1支持向量机要解决的问题   现在由一个小例子来引入支持向量机,图12-1中有两类数据点,目标就是找到一个最好的决策方程将它们区分开。   图12-1 决策方程的选择   图12-1中有3条直线都能将两类数据点区分开,那么,这3条线的效果相同吗?肯定是有所区别的。大家在做事情的时候,肯定希望能够做到最好,支持向量机也是如此,不只要做这件事,还要达到最好的效果,那么这3条线中哪条线的效果最好呢?现在放大划分的细节进行观察,如图12-2所示。   由图可见,最明显的一个区别,就是左边的决策边界看起来窄一点,而右边的宽一点。假设现在有一个大部队在道路上前进,左边埋着地雷,右边埋伏敌人,为了大部队能够最安全地前进,肯定希望选择的道路能够避开这些危险