集成学习1——voting、bagging&stacking

参考datawhale课程《集成学习》
参考《Stacking方法详解》

Bagging思想的实质是:通过Bootstrap 的方式对全样本数据集进行抽样得到抽样子集,对不同的子集使用同一种基本模型进行拟合,然后投票得出最终的预测。Bagging主要通过降低方差的方式减少预测误差

一、投票法与bagging

1.1 投票法的原理分析

投票法是一种遵循少数服从多数原则的集成学习模型,通过多个模型的集成降低方差,从而提高模型的鲁棒性。在理想情况下,投票法的预测效果应当优于任何一个基模型的预测效果。

  • 回归投票法:预测结果是所有模型预测结果的平均值。
  • 分类投票法:预测结果是所有模型种出现最多的预测结果。

分类投票法又可以被划分为硬投票与软投票:

  • 硬投票:预测结果是所有投票结果最多出现的类。(基模型能预测出清晰的类别标签时)
  • 软投票:预测结果是所有投票结果中概率加和最大的类。(基模型能预测类别的概率,或可以输出类似于概率的预测分数值,例如支持向量机、k-最近邻和决策树等)
阅读更多
学习笔记7:循环神经网络

一、RNN

前馈神经网络:信息往一个方向流动。包括MLP和CNN
循环神经网络:信息循环流动,网络隐含层输出又作为自身输入</font>,包括RNN、LSTM、GAN等。

1.1 RNN模型结构

RNN模型结构如下图所示:
在这里插入图片描述

展开之后相当于堆叠多个共享隐含层参数的前馈神经网络:
在这里插入图片描述

阅读更多
学习笔记6:卷积神经网络CNN

一、CNN模型原理

1.1 图像

  • 图像具有平移不变性和旋转不变性。即对图像的平移或者轻微旋转不改变其类别。图像可以用像素点来表示,存储为一个三维矩阵(长×宽×channels)
  • 黑白图片channels=1,即每个像素点只有灰度值。彩色图像channels=3,每个像素点由RGB三原色组成,对应一个三维向量,值域[0,255]。一般0表示白色,255表示黑色

    1.2 DNN图像分类的问题

    如果直接将图像根据各像素点的向量作为图片特征输入模型,例如LR、SVM、DNN等模型进行分类,理论上可行,但是面临以下问题:
  • 图像的平移旋转、手写数字笔迹的变化等,会造成输入图像特征矩阵的剧烈变化,影响分类结果。即不抗平移旋转等。
  • 一般图像像素很高,如果直接DNN这样全连接处理,计算量太大,耗时太长;参数太多需要大量训练样本
阅读更多
学习笔记5:word2vec、FastText原理

一、word2vec

参考文档《word2vec原理和gensim实现》《深入浅出Word2Vec原理解析》

1.1 word2vec为什么 不用现成的DNN模型

  1. 最主要的问题是DNN模型的这个处理过程非常耗时。我们的词汇表一般在百万级别以上,==从隐藏层到输出的softmax层的计算量很大,因为要计算所有词的softmax概率,再去找概率最大的值==。解决办法有两个:霍夫曼树和负采样。
  2. 对于从输入层到隐藏层的映射,没有采取神经网络的线性变换加激活函数的方法,而是采用简单的对所有输入词向量求和并取平均的方法。输入从多个词向量变成了一个词向量
  3. 在word2vec中,由于使用的是随机梯度上升法,所以并没有把所有样本的似然乘起来得到真正的训练集最大似然,仅仅每次只用一个样本更新梯度,这样做的目的是减少梯度计算量
阅读更多
学习笔记4:深度学习DNN2

一、神经网络参数优化器

参考曹健《人工智能实践:Tensorflow2.0 》
深度学习优化算法经历了SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam
这样的发展历程。
在这里插入图片描述

阅读更多
学习笔记3:深度学习DNN

一、BP神经网络

1.1 为何要引出BP神经网络

  1. 逻辑回归对于如今越来越复杂的任务效果越来越差,主要是难以处理线性不可分的数据,LR处理线性不可分,一般是特征变换和特征组合,将低维空间线性不可分的数据在高维空间中线性可分
  2. 改良方式有几种,本质上都是对原始输入特征做文章。但都是针对特定场景设计。如果实际场景中特征组合在设计之外,模型无能为力
    • 人工组合高维特征,将特征升维至高维空间。但是会耗费较多人力,而且需要对业务理解很深
    • 自动交叉二阶特征,例如FM模型。缺点是只能进行二阶交叉
    • SVM+核方法:可以将特征投影到高维空间。缺点是核函数种类有限,升维具有局限性,运算量巨大。
阅读更多
学习笔记2:线性回归、决策树、聚类

学习笔记2——线性回归、决策树、聚类

一、.线性回归

fit_intercept : 布尔型参数,表示是否计算该模型截距。可选参数。
normalize : 布尔型参数,若为True,则X在回归前进行归一化。可选参数。默认值为False。
copy_X : 布尔型参数,若为True,则X将被复制;否则将被覆盖。 可选参数。默认值为True。
n_jobs : 整型参数,表示用于计算的作业数量;若为-1,则用所有的CPU。可选参数。默认为1
positive=False#当设置为'True'时,强制系数为正。这选项仅支持密集阵列。

rint(model.coef_)#打印线性方程中的w
print(model.intercept_)#打印w0 就是线性方程中的截距b
阅读更多
PyTorch学习笔记2:nn.Module、优化器、模型的保存和加载、TensorBoard

@[toc]
《PyTorch 学习笔记汇总(完结撒花)》

一、nn.Module

1.1 nn.Module的调用

pytorch通过继承nn.Module类,定义子模块的实例化和前向传播,实现深度学习模型的搭建。其构建代码如下:

import torch
import torch.nn as nn

class Model(nn.Module):
def __init__(self, *kargs): # 定义类的初始化函数,...是用户的传入参数
super(Model, self).__init__()#调用父类nn.Module的初始化方法
... # 根据传入的参数来定义子模块

def forward(self, *kargs): # 定义前向计算的输入参数,...一般是张量或者其他的参数
ret = ... # 根据传入的张量和子模块计算返回张量
return ret

  • init\方法初始化整个模型
  • super(Model, self).init\():调用父类nn.Module的初始化方法,初始化必要的变量和参数
  • 定义前向传播模块
阅读更多
python类与对象

@[toc]

一、python的类与对象

参考《datawhale——PythonLanguage》《Python3 面向对象》

1.1 基本概念

对象 = 属性 + 方法
对象是类的实例。换句话说,类主要定义对象的结构,然后我们以类为模板创建对象。类不但包含方法定义,而且还包含所有实例共享的数据

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
  • 方法:类中定义的函数</font>。
  • 类属性:类里面方法外面定义的变量称为类属性。</font>类属性所属于类对象并且多个实例对象之间共享同一个类属性,说白了就是类属性所有的通过该类实例化的对象都能共享。
阅读更多
命名实体识别——bert_lstm_crf模型
from google.colab import drive
drive.mount('/content/drive')
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
import os
os.chdir('/content/drive/MyDrive/chinese task/CLUENER2020')
#安装
!pip install transformers datasets pytorch-crf seqeval
阅读更多