正则化

A--利用梯度下降求解逻辑回归的python实现

旧时模样 提交于 2019-12-05 05:31:37
#导入必要的包 import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline BGD求解逻辑回归 In [2]: #⾸先定义联系函数sigmoid函数 def sigmoid(inX): return 1.0/(1+np.exp(-inX)) In [7]: #自定义一个归一化函数(此函数的前提是我的数据是一个矩阵) def regularize(xMat): inMat = xMat.copy()#创建一个副本,这样对inmat进行操作不会影响到xmat inMeans = np.mean(inMat,axis = 0) #求均值 inVar = np.std(inMat,axis = 0) #求标准差 inMat = (inMat - inMeans)/inVar #归一化 return inMat In [4]: #编写批量梯度下降的自定义函数 def logisticReg_0(dataSet,eps=0.01,numIt=50000): xMat = np.mat(dataSet.iloc[:, :-1].values) yMat = np.mat(dataSet.iloc[:, -1].values).T

从贝叶斯角度理解正则化

試著忘記壹切 提交于 2019-12-05 00:27:42
Table of Contents 前言1.贝叶斯法则2.正则化项3.贝叶斯正则化第$I$层贝叶斯框架第$\text{II}$层贝叶斯框架贝叶斯正则化算法步骤参考资料 前言 上一篇: 正则化 下一篇:贝叶斯正则化与提前终止法关系 1.贝叶斯法则 贝叶斯法则: P(A|B) = \frac{P(B|A)P(A)}{P(B)} P(A)称为先验概率(反映在已知B之前对事件A的认知);P(A|B)称为后验概率(反映在已知B之后对事件A的认知);P(B|A)是在事件A发生的条件下,事件B发生的条件概率;P(B)是事件的边缘概率(被用作归一化因子) 贝叶斯法则在于先验概率,如果它很大,那么后验概率也将显著增大 2.正则化项 一个包括网络输入及其对应目标输出的训练样本集: \left{ p_{1},t_{1} \right},\left{ p_{2},t_{2} \right},\cdots,\left{ p_{n},t_{n} \right} 假设目标输出通过如下方式生成: t_{q} = g(p_{q}) + \varepsilon_{q} (13.2) 其中,g()为某未知函数,\varepsilon_{q}为一个随机独立分布的零均值噪声源。我们的训练目标是产生一个能够逼近函数g()并且忽略噪声影响的神经网络。 神经网络训练的标准性能指标是该网络在训练集上的误差平方和: F(x) = E

特征选择

眉间皱痕 提交于 2019-12-04 23:38:00
特征选择 特征选择方法是从原始特征数据集中选择子集,是一种包含的关系,没有更改原始的特征空间。主要是为了减少特征数量、降维,减少过拟合使模型泛化能力更强以及增强对特征与特征值之间的理解。 (1) Filter方法:对每一维的特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该维特征的重要性,然后依据权重排序。卡方检验、信息增益、相关系数。 (2) Wrapper 方法: 将子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个优化问题,这里有很多的优化算法可以解决这个问题。递归特征消除算法等。 (3) Embedded 方法: 在模型既定的情况下学习出对提高模型准确性最好的属性。 特征选择在战场中的应用 1 去掉取值变化小的特征 Removing features with low variance 这应该是最简单的特征选择方法了:假设某特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。如果100%都是1,那这个特征就没意义了。当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用,而且实际当中,一般不太会有95%以上都取某个值的特征存在,所以这种方法虽然简单但是不太好用。可以把它作为特征选择的预处理

吴恩达《深度学习》第二门课(1)深度学习的实用层面

狂风中的少年 提交于 2019-12-04 13:47:18
1.1训练,验证,测试集(Train/Dev/Test sets) (1)深度学习是一个按照下图进行循环的快速迭代的过程,往往需要多次才能为应用程序找到一个称心的神经网络。 (2)在机器学习中,通常将样本分成训练集,验证集和测试集三部分,数据规模相对较小,适合传统的划分比例(如6:2:2),数据集规模比较大的,验证集和测试集要小于数据总量的20%或者10%甚至更低。 (3)交叉验证集和测试集务必来自同分布。 (4)有时候只有训练集和验证集,没有独立的测试集(将无法提供无偏性能评估),这时人们也会把验证集称为测试集。 1.2偏差,方差(Bias/Varicance) (1)以下三个图分别表示欠拟合(高偏差),适度拟合,过拟合(高方差): (2)最优误差也称为贝叶斯误差,本节中假设最有误差为零(如在图像分类中人可以辨别出所有图像的类别)。 (3)训练误差减去左右误差为偏差,结果大说明偏差大;验证集误差减去训练误差为方差,结果大说明偏差大。 (4)是存在高偏差高方差的情况的,如下图,直线导致高偏差,局部过拟合导致高方差: 1.3机器学习基础 (1)偏差和方差是两种完全不同的情况,有分别对应的处理方法,不要盲目的使用一些策略。 (2)在深度学习时代,只要正则适度,通常构建一个更大的网络便可以在不影响方差的同时减少偏差,而采用更多数据通常可以在不过多影响偏差的同时减少方差。 1.4正则化

L0、L1、L2范数正则化

无人久伴 提交于 2019-12-04 10:46:46
参考资料(要是对于本文的理解不够透彻,必须将以下博客认知阅读,方可全面了解LR): (1). https://zhuanlan.zhihu.com/p/74874291 (2). 逻辑回归与交叉熵 (3). https://www.cnblogs.com/pinard/p/6029432.html (4). https://zhuanlan.zhihu.com/p/76563562 (5). https://www.cnblogs.com/ModifyRong/p/7739955.html 一、逻辑回归介绍   逻辑回归(Logistic Regression)是一种广义线性回归。线性回归解决的是回归问题,预测值是实数范围,逻辑回归则相反,解决的是分类问题,预测值是[0,1]范围。所以逻辑回归名为回归,实为分类。接下来让我们用一句话来概括逻辑回归(LR): 逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。 这句话包含了五点,接下来一一介绍: 逻辑回归的假设 逻辑回归的损失函数 逻辑回归的求解方法 逻辑回归的目的 逻辑回归如何分类 二、逻辑回归的假设 任何的模型都是有自己的假设,在这个假设下模型才是适用的。 逻辑回归的第一个基本假设是假设数据服从伯努利分布。 伯努利分布:是一个离散型概率分布,若成功,则随机变量取值1;若失败

通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战

天大地大妈咪最大 提交于 2019-12-04 09:04:44
前情提要: 通俗地说逻辑回归【Logistic regression】算法(一) 逻辑回归模型原理介绍 上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklearn 逻辑回归模型的参数,以及具体的实战代码。 1.逻辑回归的二分类和多分类 上次介绍的逻辑回归的内容,基本都是基于二分类的。那么有没有办法让逻辑回归实现多分类呢?那肯定是有的,还不止一种。 实际上二元逻辑回归的模型和损失函数很容易推广到多元 逻辑回归。比如总是认为某种类型为正值,其余为0值。 举个例子,要分类为A,B,C三类,那么就可以把A当作正向数据,B和C当作负向数据来处理,这样就可以用二分类的方法解决多分类的问题,这种方法就是最常用的one-vs-rest,简称OvR。而且这种方法也可以方便得推广到其他二分类模型中(当然其他算法可能有更好的多分类办法)。 另一种多元逻辑回归的方法是Many-vs-Many(MvM),它会选择一部分类别的样本和另一部分类别的样本来做逻辑回归二分类。 听起来很不可思议,但其实确实是能办到的。比如数据有A,B,C三个分类。 我们将A,B作为正向数据,C作为负向数据,训练出一个分模型。再将A,C作为正向数据,B作为负向数据,训练出一个分类模型。最后B,C作为正向数据,C作为负向数据,训练出一个模型。 通过这三个模型就能实现多分类,当然这里只是举个例子

过拟合解决方案之正则化

﹥>﹥吖頭↗ 提交于 2019-12-04 08:12:37
1.过拟合问题 对于过拟合问题,通常原因是模型选择太过复杂,也有可能是训练数据太少。对于模型太复杂的情况,我们一般有如下考虑:一是通过分析删除部分特征(比如重复多余的特征或者对输出值贡献不太大的特征),但是这样有可能会损失一部分信息。所以,我们可以通过正则化的方法来降低参数值,从而避免过拟合问题。对于过拟合问题的详细描述,可以查看我的另一篇博客 机器学习之欠拟合与过拟合 。 2.正则化 回顾一下,在回归问题中,在确定模型之后,要根据该损失函数找出使得损失函数最小的参数矩阵。在整个回归过程中,最为重要的一步是确定回归模型。通常情况下,如果选择的模型太简单,就会欠拟合。如果模型选择太复杂,就会过拟合。正则化可以很好地解决之一问题,通过对某些参数进行“惩罚”,就可以达到降低参数值的目的。正则化的方法有很多,这里仅介绍L1正则化和L2正则化,对应的分别是Lasson回归和Ridge回归。正则化就是在损失函数中加入正则项(用 \(\Omega(\theta)\) 表示),L1正则对应的正则项为: \(L1 = \lambda\sum_{i=1}^n|\theta_i|\) ,L2对应的正则项是: \(L2 = \lambda\sum_{i=1}^n\theta_i^2\) 。例如线性回归的正则化损失函数为: \[J(\theta)={1\over 2m} \sum_{i=1}^m (h_

深度学习基础模型算法原理及编程实现--04.改进神经网络的方法

≡放荡痞女 提交于 2019-12-03 18:45:43
文章列表 1. 深度学习基础模型算法原理及编程实现–01.感知机 . 2. 深度学习基础模型算法原理及编程实现–02.线性单元 . 3. 深度学习基础模型算法原理及编程实现–03.全链接 . 4. 深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 . 5. 深度学习基础模型算法原理及编程实现–05.卷积神经网络 . 6. 深度学习基础模型算法原理及编程实现–06.循环神经网络 . 9. 深度学习基础模型算法原理及编程实现–09.自编码网络 . 9. 深度学习基础模型算法原理及编程实现–10.优化方法:从梯度下降到NAdam . … 深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 4.1 基本激活函数认知 4.1.1 sigmoid 5.1.2 tf.tanh 5.1.3 ReLU 5.1.4 Leaky ReLU 5.1.5 Softplus 5.2 增加隐藏层数 5.3 提升学习速率 5.3.1 梯度下降改为随机梯度下降 5.3.2 输出层激活函数与目标函数的选择 5.3.2.1 激活函数为sigmoid函数、损失函数为交叉项 5.3.2.2 激活函数为线性函数且损失函数为平方损失函数 5.3.2.3 损失函数为交叉项的好处 5.3.2.4 柔性最大值(softmax函数) 5.3.2.5 Softmax-loss 5.3.3

一文理清深度学习前馈神经网络

杀马特。学长 韩版系。学妹 提交于 2019-12-03 15:15:08
🚙 Index 多层感知机(MLP)介绍 深度神经网络的激活函数 深度神经网络的损失函数 多层感知机的反向传播算法 神经网络的训练技巧 深度卷积神经网络 前馈神经网络(feedforward neural network)是一种最简单的 神经网络 ,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。是目前应用最广泛、发展最迅速的 人工神经网络 之一。研究从20世纪60年代开始,目前理论研究和实际应用达到了很高的水平 ——百度百科 而深度学习模型,类似的模型统称是叫 深度前馈网络(Deep Feedforward Network) ,其目标是拟合某个函数f,由于从输入到输出的过程中不存在与模型自身的反馈连接,因此被称为“前馈”。常见的深度前馈网络有:多层感知机、自编码器、限制玻尔兹曼机、卷积神经网络等等。 01 多层感知机(MLP)介绍 说起 多层感知器(Multi-Later Perceptron) ,不得不先介绍下 单层感知器(Single Layer Perceptron) ,它是最简单的神经网络,包含了输入层和输出层,没有所谓的中间层(隐含层),可看下图: 也就是说,将输入向量赋予不同的权重向量,整合后加起来,并通过激活函数输出1或-1,一般单层感知机只能解决线性可分的问题,如下图: 我选择了0个隐含层