自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yanglee0

机器学习、数据挖掘

  • 博客(121)
  • 收藏
  • 关注

原创 【贪心算法】leetcode刷题

贪心算法无固定套路。核心思想:先找局部最优,再扩展到全局最优。

2023-08-04 17:17:01 1566

原创 【二叉树】刷题二(以递归写法为主)

本题中,在递归函数有返回值的情况下:如果要搜索一条边,递归函数返回值不为空的时候,立刻返回,如果搜索整个树,直接用一个变量left、right接住返回值,这个left、right后序还有逻辑处理的需要,也就是后序遍历中处理中间节点的逻辑(也是回溯)。如果找到一个节点,发现左子树出现结点p,右子树出现节点q,或者 左子树出现结点q,右子树出现节点p,那么该节点就是节点p和q的最近公共祖先。,说明找到 q p ,则将其返回,这个返回值,后面在中节点的处理过程中会用到,那么中节点的处理逻辑,下面讲解。

2023-07-29 17:31:51 204

原创 【二叉树】刷题一(以递归写法为主)

226.翻转二叉树101. 对称二叉树104.二叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数110.平衡二叉树102. 二叉树的所有路径。

2023-07-26 17:16:09 269

原创 【二叉树】基础理论:深度搜索和广度搜索(以递归写法为主)

【核心思路】:整个题就是要把树拆成一层一层的,然后每层里面,前一个节点的next指向后一个节点。其实对于oneLayer这一层树的所有节点来说,把他们每个节点的左右取出来,就是下一层的节点了。然后对nextLayer里所有节点,每个节点的next指向后一个节点就可以了。本题目主要注意一下两个图片里的东西即可。

2023-07-24 11:54:43 200

转载 【回溯算法】+ Leetcode相关题目

组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等代码模板:主要找到和可以从图中看出for循环可以理解是横向遍历,backtracking(递归)就是纵向遍历,这样就把这棵树全遍历完了,一般来说,搜索叶子节点就是找的其中一个结果了。

2023-07-19 21:53:46 48

原创 深度学习模型训练的全流程

每轮进行训练和验证,并根据最优验证集精度保存模型。

2023-06-30 12:11:23 443

原创 聚类的评价指标

聚类的评价指标。

2023-06-20 11:21:11 42

原创 DBSCAN与OPTICS

一、DBSCAN二、OPTICS

2023-06-20 11:20:42 45

原创 谱聚类算法

一、谱聚类

2023-06-20 11:17:46 34

原创 K-means

主要缺点:对于高维度数据,用kmeans方法可能会受到数据形态的影响,其假设高维数据呈球形分布。

2023-06-20 11:16:31 254

原创 jupyter notebbok加入conda的虚拟环境

打开jupyter notebook,你应该可以看到你的conda环境对应的Python解释器了。如果你仍然看不到该环境对应的Python解释器,请尝试重新启动jupyter notebook。安装ipykernel包,该包可以将conda环境添加到jupyter notebook中。打开Anaconda Prompt或终端,激活你的conda环境。是你的conda环境的名称。

2023-05-30 16:05:53 201

原创 Python逐行读写数据

【代码】Python逐行读写数据。

2023-03-23 16:40:52 107 1

原创 DeepAR多重多元多步时间序列预测

时间序列、多重多元多步时间序列预测

2022-08-14 16:51:11 2509

原创 TextCNN和DPCNN

一、TextCNNTextCNN详细过程二、DPCNN1、背景近期在分析长短文本的分类问题,所以探索并比较了一些模型选型方案,一般简单的短文本分类模型可以将TextCNN模型作为baseline,但是如果文本较长,TextCNN就不太适用了。因为TextCNN是浅层网络【ShallowCNN,下图(b)所示】,对文本的长距离依赖捕获能力有限,若想要克服TextCNN的缺点,显然要用到特征提取能力更强的DeepCNN。那么该如何构造这种DeepCNN的网络结构呢?比如最简单的直接一堆等长卷积可否?

2022-05-12 11:35:38 550

原创 python 闭包 装饰器

1 闭包:保小闭包:函数内的属性,都是有生命周期的,都是在函数执行期间内部函数对外部函数作用域(肚子里的东西)里变量的引用def func(): # 外部函数 print("this is function") def func1(): # 内部函数 print("this is function1")func()#输出# this is function若我想用func1,该怎么办呢?将func1()返回就可以用了啊def func(): # 外

2022-04-07 22:18:54 936

原创 时间序列预测-深度学习方法

一、LSTMclass LSTM(nn.Module): def __init__(self, input_size=1, hidden_layer_size=100, output_size=1): super().__init__() self.hidden_layer_size = hidden_layer_size self.lstm = nn.LSTM(input_size, hidden_layer_size) sel

2021-12-08 20:46:42 3234

原创 第二章 序列构成的数组

2.1 内置序列类型概述容器序列:list、tuple 和 collections.deque 这些序列能存放不同类型的数据。扁平序列:str、bytes、bytearray、memoryview 和 array.array,这类序列只能容纳一种类型。可变序列:list、bytearray、array.array、collections.deque 和 memoryview。不可变序列:tuple、str 和 bytes。下图为可变序列(MutableSequence)和不可变序列(Sequenc

2021-10-17 19:59:09 117

原创 第一章 python数据模型

1.1 通过一段python风格的扑克牌代码来理解1、理解双下滑线的函数__init__和__len__等2、理解 继承。python2中需要显示写FrenchDeck(object),python3中继承关系是默认的。可以直接用FrenchDeck.属性。import collections# 定义一张纸牌,'数值','花色'。利用nametuple可以得到一个纸牌对象Card = collections.namedtuple('Card',['rank','suit'])class F

2021-10-13 16:06:35 133

原创 xgboost和lightGBM区别

LightGBM主要改进点:直方图算法: 其基本思想是先把连续的浮点特征值离散化成k个整数(其实又是分桶的思想,而这些桶称为bin,比如[0,0.1)→0, [0.1,0.3)→1),同时构造一个宽度为k的直方图。在遍历数据的时候,根据离散化后的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。带深度限制的Leaf-wise的叶子生长策略在XGBoost中,树是按层生长的,称为Level-wise tree grow

2021-09-23 19:08:23 609

转载 时间序列任务

一、时间序列预测比较常见的工具方法通常来说,时间序列预测工具方法可以归结为三大类:1、一类是基于业务场景理解的因子预测模型,2、一类是传统时间序列预测模型,比如均值回归、ARIMA、指数平滑预测法(比如Holt-Winters)等,3、一类是机器学习模型,比如支持向量机、树模型(比如GBM、QRF)、神经网络模型(比如RNN、CNN)等。2.1 基于业务场景理解的因子预测模型基于因子的时序预测是一种传统的预测手法,在一些特定场景有着比较好的表现,比如某条业务线刚起步,历史数据的积累有限的时候。同

2021-09-23 16:16:17 995

原创 树模型和神经网络比较

模型的选择上来看:1、如果不强调绝对的解释度,尽量避免单课决策树,用集成树模型;2、在集成树模型上,优先用xgboost;3、在中小数据集上,优先选择集成树模型。大数据集上用神经网络;4、在需要模型解释度的项目上,优选使用树模型;5、在项目时间较短的项目上,如果数据质量低(大量缺失值、噪音等),优先使用集成树模型;6、在硬件条件有限以及机器学习知识有限的前提下,优选选择树模型;7、对于结构化较高的数据,尤其是语音、图片、语言等,优先使用神经网络模型。一般来说,在小数据集多特征下,集成的树模型

2021-09-23 15:45:34 1384

原创 ALBERT详细知识点

maskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskmaskALBERT的三个关键的知识点:1、和BERT中NSP任务相比,ALBERT中的SOP任务的关键点(第一张图)2、ALBERT对嵌入参数进行因式分解(第二章图)3、ALBERT中encoder层的跨层参数共享。(第二章图)...

2021-09-20 15:04:03 121

原创 手写一个二层的神经网络

# 手写一个两层的神经网络import numpy as npx = np.array([[0,0,1],[0,1,1],[1,0,1],[1,1,1],[0,0,1]])y = np.array([[0],[1],[1],[1],[0]])# 定义sigmoid函数def sigmoid(x,deriv = False): if deriv == True: # 导数为deriv==True return x*(1-x) else: r

2021-09-18 16:56:54 193

原创 过拟合、欠拟合

一、过拟合、欠拟合1、过拟合和欠拟合是什么(1)当我们训练模型时,发现模型在训练集效果很好,但是在测试集效果不好的时候,模型便可能发生过拟合现象。(2)而训练集和测试集效果均不好的情况则可能发生欠拟合。2、如何解决过拟合(1)首先从数据本身角度去考虑,可以考虑增加训练集样本数量等方式,或者使用GAN等方法来生成新样本数据。(2)再从模型本身考虑,降低模型的复杂度,或者在模型中加入正则化等等方法。(3)集成学习也是有效的,减少单个模型过拟合的风险。2.1、什么原因会导致过拟合

2021-09-10 11:21:09 165

原创 bert有一些细节的问题

1、bert中mask任务,具体过程是怎么样的?因为是mask任务,那么我们输入输出的hidden其实是一样的,对于我们的输入是[batch_size,seq_len,embedding_dim],那么对应的输出也是[batch_size,seq_len,embedding_dim]。同时刚开始随机初始化W矩阵,W=[embedding_dim, vocab_size],Xhidden*Wvocab = [batch_size,seq_len,vocab_size]。进行参数的更新,最后再经过一个

2021-09-10 11:12:50 324

原创 LR,SVM,决策树的选择

训练集有多大?数据集小:可选择高偏差/低方差的分类器。(低偏差/高方差的分类器(LR)更加容易过拟合)数据集小:选择低偏差/高方差的分类器。这样可以训练处更加准确的模型。Logistic回归(Logistic Regression, LR)1、使用LR可以快速搭建出一个模型来(也不需要考虑样本是否相关),如果模型效果不怎么样,也可以得到一个基准。2、如果想要通过调节概率阈值来分类的话,使用LR更加合适,而且相比于SVM以及决策树,LR更加具有可解释性,因此在业务场景中,会好用一些。决策树(Dec

2021-09-09 10:42:36 632

转载 LR,SVM,决策树的对比

首先,LR、SVM、决策树都可以用来做分类的任务。为了做分类,我们试图寻找决策边界线或是一条曲线(不必是直线),在特征空间里区分两个类别。一、LR,SVM,决策树直观区别举个例子:有一个样本,它包含三个变量:x1, x2和target。target有0和1两种值,取决于预测变量x1和x2的值。将数据绘制在坐标轴上。这就是特征空间,观测值分布于其中。这里因为我们只有两个预测变量/特征,所有特征空间是二维的。你会发现两个类别的样本用不同颜色的点做了标记。我希望我们的算法能计算出一条直线/曲线来分离这个

2021-09-09 10:16:52 4086 1

原创 机器学习中归一化的问题

一、归一化的好处1、提升模型的收敛速度如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)2、提升模型的精度归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以

2021-09-07 13:50:17 2440 1

原创 GBDT和XGBoost面试总结

GBDT1、GBDT是训练过程如何选择特征?GBDT使用基学习器是CART树,CART树是二叉树,每次使用yes or no进行特征选择,数值连续特征使用的最小均方误差,离散值使用的gini指数。在每次划分特征的时候会遍历所有可能的划分点找到最佳的特征分裂点,这是用为什么gbdt会比rf慢的主要原因之一。2、GBDT如何防止过拟合?由于gbdt是前向加法模型,前面的树往往起到决定性的作用,如何改进这个问题?一般使用缩减因子对每棵树进行降权,可以使用带有dropout的GBDT算法,dart树,

2021-09-01 13:26:23 991 1

原创 权重初始化,为什么不能全部初始化为0

1、逻辑回归中,初始化权重全部为0,是ok的吗?可以的。逻辑回归反向传播的时候,由于交叉熵存世函数以及sigmoid的配合,使得梯度求导后跟x和b参数本身没有关系,主要依赖于x。因此逻辑回归中权重初始化为0是ok的。2、普通神经网络中权重初始化可以全部为0吗?不可以。总结一下:在神经网络中,如果将权值初始化为 0 ,或者其他统一的常量,会导致后面的激活单元具有相同的值,所有的单元相同意味着它们都在计算同一特征,网络变得跟只有一个隐含层节点一样,这使得神经网络失去了学习不同特征的能力!

2021-08-23 22:19:16 2512

转载 python 秋招笔试输入完整的整理

首先说明input()获得的结果都是字符串,需要自己将其转成字符型。1、一行输入1.1 输入一个数/字符串一行输入如果输入只有一个数或者一个字符串的话,直接使用input读取就可以了s = input()print(s)1.2 输入一个数组输入一个数组的话和输入一个数类似,只不过需要使用split()分解一下s = input()s = [i for i in s.split()]print(s)2、两行输入两行读取要在一行读取的基础上再进行一些操作。这里举个例子,假设第一行输

2021-08-15 18:41:51 1018

转载 FastText知识点整理

一、字符级别的n-gram二、模型架构三、核心思想四、关于分类效果五、总结

2021-08-15 14:52:14 240

原创 transformer整理版本

0 模型架构图举例:中文输入为“我爱你”,通过 Transformer 翻译为 “I Love You”。1、输入Inputs(图的左侧)部分和输出Outputs(图的右侧)部分1.1 输入Inputs1.1.1 Input Embeddingnn.Embedding 包含一个权重矩阵 W,对应的 shape 为 ( num_embeddings,embedding_dim )。num_embeddings 指的是词汇量,即想要翻译的 vocabulary 的长度。embedding_dim 指

2021-08-13 15:02:58 1555

原创 多标签中长尾问题/训练数据不足的问题

长尾问题算法和数据两个方案:大量标签(超过100个,1000个那种)的项目中会出现。数据上:直接把长尾标签对应的样本提升上去。算法角度上:尽可能的利用本身现有信息。可以利用层级信息辅助多标签的预测。或者利用标签之间的语义关系这些信息,去预测标签。训练数据不足:(1)数据增强的手段:图片:翻转,滤波器。文本:– 常规增强:随意删除某一字,调整字的顺序,同义词替换,随机替换(增强它的鲁棒性)。– 生成的算法:比如和GBT模型做些文本生成任务。(2)可以先引入预训练模型,或者自己

2021-08-11 13:11:26 745

原创 面向对象,面向过程。写一个实现matrix里元素相加的类。

class Matrix(object): def __init__(self, data, m, n): # 定义对象属性 data为矩阵。m行,n列 self.data = data self.m = m self.n = n # + def __add__(self, other): # 定义对象技能 res = Matrix([0]*self.m*self.n, self.m, self.n)

2021-08-11 11:00:01 64

原创 ERNIE

ERNIE1.0ERNIE1.0主要是改进了BERT的MLM任务。我们看图说话,1、ERNIE1.0的掩码机制从图中,我们很容易发现ERNIE1.0对于BERT的改进是在MLM任务(一共三种mask,新增了两种mask)。在论文,作者阐述了三种不同的mask技巧:基础mask:任意mask一个单词 (BERT所采用的mask类型)短语mask:不是将单词看成一个整体,而是将短语看成一个整体;(比如上图中,mask了a series of而不仅仅是of)实体mask:mask一个实体名。(比如

2021-07-27 20:46:11 970

原创 反向传播BP推导

一、什么是反向传播?‍通俗解释:类比几个人站成一排,第一个人看一幅画(输入数据),描述给第二个人(隐层)……依此类推,到最后一个人(输出)的时候,画出来的画肯定不能看了(误差较大)。反向传播就是:把画拿给最后一个人看(求取误差),然后最后一个人就会告诉前面的人下次描述时需要注意哪里(权值修正)一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。目的是更新神经元参数,而神经元参数正是 z=wx+b 中的 (w,b).对参数的更新,利用损失值loss对参数的导数, 并沿着负梯度

2021-07-19 12:47:40 306 1

原创 #简历:CCKS2021—通用百科知识图谱实体类型推断

项目介绍:(项目背景、项目难点、怎么做的、其中难点具体是怎么解决的,突出下解决思路以及实现的效果是怎么样的)首先这个项目是基于通用百科知识图谱进行实体类型的推断,那么这个项目的难点其实在于一点标注数据都没有,而且实体类型非常多,但并不属于多分类任务,而是多标签任务,就是说对于一个实体,可能是存在多个标签。怎么做的:对于纯无标注的数据,结合业务理解构建种子词; 通过种子词构建 模型训练集;搭建基于 ERNIE 的多标签学习的代码框架,训练模型进行实体类型推断; 对推断的实体类型进行规则等辅助的后处理。

2021-07-15 19:24:17 287

原创 3、梯度消失/梯度爆炸怎么办

首先,正常参数设置情况下,发生这种情况的概率是很小的。一般发生这种情况,首先怀疑下自己模型的设计是否有漏洞或者有缺陷,再去尝试下面的几种方法。比如多头自注意力中的维度和头数必须要能整除,这在维度300的glove向量中,会经常因为维度和头数不匹配而导致梯度消失/梯度爆炸问题的出现。如果确定自己模型中没有漏洞或者缺陷了,再去往一下方法上去想:1、clip,梯度裁剪,控制梯度的阈值,pytorch中有专门的函数可以调用。2、激活可汗可以换成tanh或者其他3、优化器可以换一换4、加BN、dropout

2021-07-09 10:24:29 109

原创 1、正负样本不平衡问题如何解决?

1、过采样、欠采样的方式对不平衡的正负样本进行采样。2、正负样本各自在进行训练时,设置不用的惩罚系数。2、集成的方式:例如,在数据集中的正、负样本分别为100和10000,比例为1:100。此时可以将负样本(类别中的大量样本集)随机分为100份(当然也可以更多),每份100条数据;然后每次形成训练集时使用所有的正样本(100条)和随机抽取的负样本(100)条形成新的数据集。如此反复可以得到100个训练集和对应的训练模型。4、若极其不平衡,可以考虑把任务转换成异常检测问题。5、在评价指标上,选用ROC

2021-07-08 14:06:20 5800

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除