
人工智能
文章平均质量分 77
本专栏收录包括机器学习、深度学习的相关学习笔记与具体案例,领域囊括建模基础操作、时序预测、NLP等。
行者无疆_ty
一名被代码耽误的文艺青年。
展开
-
卷积神经网络(CNN)
一、卷积(convolution) 卷积操作就是使用卷积核从左往右、从上往下依次扫描输入的原始矩阵,得到一个降维后的特征矩阵。 使用f∗ff*ff∗f维的卷积核对n∗nn*nn∗n的原始矩阵与进行卷积操作,会得到(n∗f−1)∗(n∗f−1)(n*f-1)*(n*f-1)(n∗f−1)∗(n∗f−1)维的特征矩阵。缺点: 1.每次卷积后会降低数据的维数,多次卷积后特征矩阵就过于小了。 2.矩阵的角落元素只会参与一次运算,而中间的元素会参与多次运算,相当于丢掉了边缘位置的许多信息。 即输原创 2022-01-16 16:26:33 · 1718 阅读 · 0 评论 -
推荐系统的性能评估和冷启动问题
1.推荐系统的性能评估 除了MSE、RMSE、MAE等神经网络的常用评估指标外,还有: 召回率(recall):用户喜欢的项目有多少被我们推荐了。R=TPTP+FNR=\frac{TP}{TP+FN}R=TP+FNTP 精确率(precision):我们推荐的项目中有多少是用户喜欢的。P=TPTP+FPP=\frac{TP}{TP+FP}P=TP+FPTP F1_Score:F=2×P×RP+RF=2 \times \frac{P\times R }{P+R}F=2×P+RP×R原创 2022-01-03 20:09:40 · 704 阅读 · 0 评论 -
YoutubeDNN模型详解
YoutubeDNN是Youtube用于做视频推荐的落地模型,可谓推荐系统中的经典,其大体思路为召回阶段使用多个简单模型筛除大量相关度较低的样本,排序阶段使用较为复杂的模型获取精准的推荐结果,其结构如下:召回模型排序模型历史video Embedding当前video Embedding搜索词Embedding该用户最后看的N个vidio Embedding的平均池化用户(位置、年龄、性别)Embedding用户语言和video语言EmbeddingRelu原创 2022-01-03 19:31:44 · 1714 阅读 · 0 评论 -
模型融合方法
常见的模型融合方法包括平均法、投票法和学习法,其中平均法和投票法是使用较为简单的策略对个体学习器的预测结果进行组合,学习法则使用模型自动学习出组合的策略。1.平均法 多用于回归,包括:简单平均、加权平均。2.投票法 多用于分类,包括:相对多数投票(少数服从多数)、绝对多数投票(多数票须超过半数)、加权投票。3.学习法 一种更为强大的结合策略,即通过另一个学习器来结合,把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。常见的有Stacking和Blending。①S原创 2022-01-03 19:01:16 · 1370 阅读 · 0 评论 -
NLP——Tokenizer
1.什么是Tokenizer 使用文本的第一步就是将其拆分为单词。单词称为标记(token),将文本拆分为标记的过程称为标记化(tokenization),而标记化用到的模型或工具称为tokenizer。Keras提供了Tokenizer类,用于为深度学习文本文档的预处理。2.创建Tokenizer实例from keras.preprocessing.text import Tokenizertok = Tokenizer()3.学习文本字典##假设文本数据为:docs = ['good原创 2021-11-20 13:12:11 · 7772 阅读 · 0 评论 -
NLP实战——TextCNN实现新闻文本分类
本文介绍一个NLP中的常用模型——TextCNN。数据集来自天池新闻文本分类比赛数据,这里的文本已经经过匿名处理,可以到天池比赛地址下载数据集和查看模型在测试集上最终表现。import tensorflow as tfimport pandas as pdimport matplotlib.pyplot as pltfrom tensorflow.keras import layersfrom sklearn.model_selection import train_test_splitfrom原创 2021-11-03 11:05:05 · 3141 阅读 · 5 评论 -
NLP实战——Tfidf+RidgeClassifer实现新闻文本分类
NLP实战——Tfidf+RidgeClassifer实现新闻文本分类 本文给大家介绍一个NLP中的常用base模型,Tfidf+岭回归分类器(RidgeClassifer)。数据集来自天池新闻文本分类比赛数据,这里的文本已经经过匿名处理,可以到天池比赛地址下载数据集和查看模型在测试集上最终表现。from sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.linear_model import RidgeClassi原创 2021-10-22 15:39:10 · 593 阅读 · 0 评论 -
文本表示模型
词袋模型 直观理解就是将一篇文章看成一袋子词,并忽略每个词出现的顺序。实施方式 将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一个维度代表一个单词,而该维对应的权重则反映该词在原文中的重要程度。权重计算 常用TF-IDF计算权重: TF−IDF(t,d)=TF(t,d)×IDF(t)TF-IDF(t,d)=TF(t,d)×IDF(t)TF−IDF(t,d)=TF(t,d)×IDF(t) 其中,TF(t,d)为单词t在文章d中出现的频率,IDF(t)是逆文档频原创 2021-09-12 09:39:00 · 203 阅读 · 0 评论 -
一文搞懂A/B test与假设检验
A/B test应用场景①产品UI:红色 or 紫色?,动态icon or 静态icon?②文案内容:免费注册 or 注册送大礼包?③页面布局:登录框 置于导航栏 or 页面左侧?④产品功能:看似冗余的功能 下掉 or 留着?⑤算法模型:根据用户的历史记录推荐 or 根据相似用户的行为推荐?流程①确定对比指标②创建变体③生成假设④收集数据⑤运行实验⑥分析结果样本规模对于比率类的指标:n=2×[Zα/2+Zβd]2×P(1−p)n=2\times \left[ \dfrac{Z原创 2021-09-10 20:20:50 · 1747 阅读 · 0 评论 -
数据归一化
一、数据归一化的作用 当数据集中不同特征项的范围相差较大时,必须要进行归一化处理,否则目标函数的图像会变“扁”,梯度下降时会走很多弯路。 比如,假设有两种数值型特征,x1的取值范围为[0,10],x2的取值范围为[0,3],可以得到归一化和未归一化的梯度下降的路径如下图:因此归一化的好处有: 1.能够加快梯度下降求最优解的速度; 2.有可能提高精度。二、归一化的方式1.Min-Max归一化:将值映射到[0,1]范围。 x′=x−min(x)max(x)−min(x)x'=\原创 2021-08-31 12:10:08 · 3779 阅读 · 0 评论 -
Transformer学习笔记
Transformer1.整体流程 其中,Encoder的输入为一句话的embedding向量,输出为施加self-attention之后的特征向量; Decoder中,self-attention的输入为译文的embedding向量,输出为施加self-attention之后的特征向量,其中第一个Decoder的self-attention中还需加入mask机制;Encoder-Decoder attention使用Encoder的输出特征向量计算KKK,VVV矩阵,使用译文的self-at原创 2021-08-30 18:22:55 · 263 阅读 · 0 评论 -
tensorflow去上下三角矩阵:tf.linalg.band_part
学习transformer的掩码机制时遇到了这个函数,因此记录一下。函数定义:tf.linalg.band_part( input, num_lower, num_upper, name=None)作用: 以对角线为中心,取它的副对角线部分,其他部分用0填充。参数: 先解释一下副对角线,即矩阵中除了主对角线以外的其它对角线。input:输入的张量。num_lower:下三角矩阵保留的副对角线数量,取值为负数时全部保留,为0时全为0。num_up原创 2021-08-17 20:14:07 · 903 阅读 · 2 评论 -
数据倾斜及其解决方式
数据倾斜是大数据领域绕不开的拦路虎,当你所需处理的数据量到达了上亿甚至是千亿条的时候,数据倾斜将是横在你面前一道巨大的坎。很可能有几周甚至几月都要头疼于数据倾斜导致的各类诡异的问题。 数据倾斜是指:mapreduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。H转载 2021-08-17 16:34:25 · 2081 阅读 · 0 评论 -
Linux指令大全
一、查看与操作文件目录及文本内容1.新建文件,目录新建目录(文件夹):mkdir 目录名新建文件:touch 文件名.格式2.移动文件,目录移动目录(文件夹):mv 文件夹1地址 文件夹2地址移动文件:mv 文件地址 文件夹地址mv 文件夹1/* 文件夹2地址 #把文件夹1下的所有文件移动到文件夹2中。3.删除文件,目录删除目录(文件夹):rm -rf 文件夹地址 #递归删除文件夹中的所有文件和文件夹。删除文件:rm -f 文件地址4.复制文件,目录复制目录原创 2021-08-06 18:18:27 · 347 阅读 · 0 评论 -
机器学习模型——LightGBM
LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。 GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。因此LightGBM提出的主要目的就是解决GBDT在海量数据时的问题,让GBDT可以更好更快地用于工业实践。基本原创 2021-08-06 12:15:18 · 6297 阅读 · 2 评论 -
机器学习模型——树模型常见面试问题
一、bagging和boosting的区别1.样本选择: bagging采用bootstraping的方式进行随机有放回的取样,各轮训练集之间是独立的; boosting每轮训练的样本是固定的,改变的是样本的权重。2.样本权重 bagging采取的是均匀取样,每个样本的权重相同; boosting根据错误率调整样本权重,错误率越大的样本权重越大。3.预测函数 bagging所有预测函数的权重相同; boosting中误差越小的预测函数权重越大。4.并行计算 bagging原创 2021-08-04 10:01:42 · 556 阅读 · 0 评论 -
LIBSVM与LIBLINEAR详解
LIBSVM与LIBLINEAR(一) 在过去的十几年里,支持向量机(Support Vector Machines)应该算得上是机器学习领域影响力最大的算法了。而在SVM算法的各种实现工具中,由国立台湾大学林智仁老师开发的工具包LIBSVM,又无疑是影响力最大的。2011年LIBSVM的系统介绍论文“LIBSVM: a library for support vector machines”发表在了期刊ACM TIST(ACM Transactions on Intelligent Systems a转载 2021-05-27 10:58:39 · 1044 阅读 · 0 评论 -
Python基础——字符串的使用
字符串的驻留机制 在Python中字符串是基本数据类型,是一个不可变的字符序列,即不具备增删改等操作。 什么叫字符串驻留机制? 仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中, Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。例如:A=’python’B=”python”C=’’’python’’’ 以上定义了三个变量A、B、C,但因为他们的值相同,所以实际上他们指向的是同一块内.原创 2021-05-04 13:35:47 · 438 阅读 · 2 评论 -
常用特征选择方法
本文展示了三种常用的特征选择方法:皮尔逊相关系数法、递归特征消除法、格兰杰因果检验法。 本文使用的数据集在本人上传的资源中,链接为mock_kaggle.csvimport pandas as pdimport numpy as npimport mathfrom matplotlib import pyplot as pltfrom matplotlib.pylab import mplimport tensorflow as tfmpl.rcParams['font.sans-s原创 2021-05-03 19:39:26 · 922 阅读 · 3 评论 -
Python基础——列表(list)、元组(tuple)、字典(dict)、集合(set)的使用
List容器List的创建方法一:Lista=[‘hello’,’world’,8]方法二:Listb=list([‘hello’,’world’,8])方法三:Listc=[i for i in range(start,end)]List的修改 同一个List中可以存放任意类型的数据。 append()添加元素到末尾; insert(loc,element)讲元素插入到指定位置; pop()删除末尾元素; pop(index)删除指定位置的元素; clear(原创 2021-05-03 18:45:36 · 379 阅读 · 0 评论 -
Online Learning算法理论与实践
背景 Online Learning是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果。本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:FTRL(Follow The Regularized Leader)[1]和BPR(Bayesian Probit Regression)[2],以及Online Learning在美团移动端推荐重排序的应用。什么是Online Learning 准确地说,Online Learning并不是一种模型转载 2021-04-23 11:22:04 · 737 阅读 · 0 评论 -
降维模型对比——PCA、ICA、TSNE
本文使用PCA、ICA、TSNE等降维模型进行了对比实验,分别对原始数据进行降维并可视化展示,然后分别用PCA、ICA、TSNE降维后的数据训练一个简单MLP神经网络用于评估降维的数据质量。最后用三个模型的预测效果进行了对比和结果的展示。 本文使用的数据集在本人上传的资源中,链接为mock_kaggle.csvimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport tensorflow as tf原创 2021-04-17 11:02:06 · 3957 阅读 · 0 评论 -
时间序列预测——GRU
本文展示了使用GRU进行时间序列预测的全过程,包含详细的注释。整个过程主要包括:数据导入、数据清洗、结构转化、建立GRU模型、训练模型(包括动态调整学习率和earlystopping的设置)、预测、结果展示、误差评估等完整的时间序列预测流程。 本文使用的数据集在本人上传的资源中,链接为mock_kaggle.csvimport pandas as pdimport numpy as npimport mathfrom matplotlib import pyplot as pltfrom原创 2021-04-15 11:22:24 · 14631 阅读 · 39 评论 -
时间序列预测——双向LSTM(Bi-LSTM)
本文展示了使用双向LSTM(Bi-LSTM)进行时间序列预测的全过程,包含详细的注释。整个过程主要包括:数据导入、数据清洗、结构转化、建立Bi-LSTM模型、训练模型(包括动态调整学习率和earlystopping的设置)、预测、结果展示、误差评估等完整的时间序列预测流程。 本文使用的数据集在本人上传的资源中,链接为mock_kaggle.csv代码如下:import pandas as pdimport numpy as npimport mathimport kerasfrom ma原创 2021-04-12 16:07:45 · 23309 阅读 · 27 评论 -
时间序列预测——时序卷积网络(TCN)
本文展示了使用时序卷积网络(TCN)进行时间序列预测的全过程,包含详细的注释。整个过程主要包括:数据导入、数据清洗、结构转化、建立TCN模型、训练模型(包括动态调整学习率和earlystopping的设置)、预测、结果展示、误差评估等完整的时间序列预测流程。 本文使用的tcn库在本人上传的资源中,链接为tcn.py 本文使用的数据集在本人上传的资源中,链接为mock_kaggle.csvimport pandas as pdimport numpy as npimport mathfro原创 2021-04-11 09:23:39 · 32717 阅读 · 103 评论 -
时间序列预测——LSTM
本文展示了使用LSTM模型进行时间序列预测的全过程,包含详细的注释。整个过程主要包括:数据导入、数据清洗、结构转化、建立LSTM模型、训练模型(包括动态调整学习率和earlystopping的设置)、预测、结果展示、误差评估等完整的时间序列预测流程。 本文使用的数据集在本人上传的资源中,链接为mock_kaggle.csvimport pandas as pdimport numpy as npimport mathfrom matplotlib import pyplot as pltf原创 2021-04-08 15:26:18 · 6058 阅读 · 11 评论 -
时间序列预测——ARIMA
本文会对如何使用ARIMA模型进行完整的展示,实现数据获取、数据清洗、平稳性检验、定阶、建立ARIMA模型、预测、误差评估等完整的时间序列预测流程。 本文使用的数据集在本人上传的资源中,链接为mock_kaggle.csv具体代码 其中pmdarima 库的安装方式为:管理员身份运行cmd,使用pip install pmdarimaimport pandas as pdimport numpy as npimport mathimport statsmodels.api as sm原创 2021-04-02 18:00:08 · 1736 阅读 · 0 评论 -
手推支持向量机SVM——Ⅰ
支持向量机的原理 首先,我们要知道,SVM是一个二分类模型,当然我们能够用它实现多分类,但一个SVM本质上就只是一个二分类模型,它的原理就是找到一个超平面(在二维中就是一条直线)既能有效区分两个类别又能使得两个类别到该超平面的几何距离最大。 什么意思呢,看下面的图: 该图中有很明显的两个类别,能够区分开这两个类别的直线有很多条(图中的三条直线都可以),SVM要做的就是找到离两个类别的距离最远的那一条,即图中的红色直线。 目前共有三种SVM算法:Hard-margin SVM 硬间隔SV原创 2021-03-18 17:32:10 · 293 阅读 · 0 评论 -
如何理解傅里叶变换公式
转自:马同学1 对周期函数进行分解的猜想 拉格朗日等数学家发现某些周期函数可以由三角函数的和来表示,比如下图中,黑色的斜线就是周期为2π2\pi2π的函数,而红色的曲线是三角函数之和,可以看出两者确实近似: 而另外一位数学家: 让·巴普蒂斯·约瑟夫·傅里叶男爵(1768 -1830)猜测任意周期函数都可以写成三角函数之和。2 分解的思路 假设f(x)f(x)f(x)是周期为T的函数,傅里叶男爵会怎么构造三角函数的和,使之等于f(x)f(x)f(x)?2.1 常数项 对于y=C,转载 2021-03-10 11:54:13 · 1275 阅读 · 0 评论 -
AI 框架基础技术之自动求导机制 (Autograd)
前言 可以把神经网络看作一个复合数学函数,网络结构设计决定了多个基础函数如何复合成复合函数,网络的训练过程确定了复合函数的所有参数。 为了获得一个“优秀”的函数,训练过程中会基于给定的数据集合,对该函数参数进行多次迭代修正,重复如下几个步骤:前向传播计算损失反向传播(计算参数的梯度)更新参数 这里第 3 步反向传播过程会根据输出的梯度推导出参数的梯度,第 4 步会根据这些梯度更新神经网络的参数,这两步是神经网络可以不断优化的核心。 反向传播过程中需要计算出所有参数的梯度,这当然可以由网络转载 2021-02-26 21:19:40 · 574 阅读 · 0 评论 -
激活函数总结
激活函数的作用 在神经网络中,激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。 先举一个简单的例子,在做二分类时,我们的预测值y^=wTx+b\widehat{y}=w^{T}x+by=wTx+b,其中w和b为参数,我们希望得到一个范围是(0,1)的概率值,而如果直接使用上式进行计算会导致预测值大于1或小于0,因此我们就需要套接一个激活函数,例如sigmoid函数,其值为(0,1)范围。 再比如下面这个问题中: 如上图所示,这是一个简单的线性分原创 2021-02-21 15:46:01 · 251 阅读 · 0 评论 -
所以,机器学习和深度学习的区别是什么?
深度学习是机器学习算法的子类,其特殊性是有更高的复杂度。因此,深度学习属于机器学习,但它们绝对不是相反的概念。我们将浅层学习称为不是深层的那些机器学习技术。 让我们开始将它们放到我们的世界中: 这种高度复杂性基于什么? 在实践中,深度学习由神经网络中的多个隐藏层组成。我们在《从神经元到网络》一文中解释了神经网络的基础知识,然后我们已经将深度学习介绍为一种特殊的超级网络: 层数的增加和网络的复杂性被称为深度学习,类似于类固醇(steroids)上的常规网络。 为什么这种复杂性是一个优翻译 2021-02-19 10:04:26 · 291 阅读 · 0 评论 -
时间序列预处理
数据预处理的主要流程为:数据清洗、特征选择、归一化处理、划分窗口、Shuffle和划分数据集等五个阶段。选用何种方法没有统一的标准,只能根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择与其最适配的数据预处理技术。时间序列预处理流程图(侵删)下面来详细介绍每个阶段的处理数据预处理流程图数据预处理-平稳性检验原创 2020-12-19 21:43:55 · 5354 阅读 · 2 评论 -
时间序列预测的传统模型
自回归模型(auto regressive model,AR)1.定义 自回归模型,模型参量法高分辨率谱分析方法之一,也是现代谱估计中常用的模型。如果{εt}\left\{ \varepsilon _{t}\right\}{εt}为白噪声,服从N(0,σ2)N\left( 0,\sigma ^{2}\right)N(0,σ2),a0,a1,...,ap(ap≠0)a_{0},a_{1},...,a_{p}\l原创 2020-12-19 14:25:22 · 2458 阅读 · 2 评论