![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器学习
anshuai_aw1
这个作者很懒,什么都没留下…
展开
-
推荐系统(二):PNN源论文整理和思考
文章目录一、背景二、PNN思想和模型三、优化四、代码实践。参考文献一、背景PNN源论文为《Product-based Neural Networks for User Response Prediction》,是上海交大团队发表在ICDM 2016上。本文在阅读源论文和网上其它资料的基础上,重点整理了论文的细节和思想。我们已经知道,在信息检索领域(IR,Information Retriev...原创 2020-03-31 18:57:45 · 1211 阅读 · 0 评论 -
(二)FFM(Field-aware Factorization Machine)原理
一、背景FFM算法,全称是Field-aware Factorization Machines,是FM(Factorization Machines)的改进版。FFM由Yu-Chin Juan与其比赛队员提出,他们借鉴了field(域)概念提出了FM的升级版模型。简单来说,通过引入field的概念,FFM把相同性质的特征归于同一个field。本文主要介绍FFM的理论,由于其算法复杂度比较高,在...原创 2020-03-30 17:45:39 · 2275 阅读 · 0 评论 -
排序学习(Learning to rank)综述
Learning to rank(简写 LTR、L2R) 也叫排序学习,指的是机器学习中任何用于排序的技术。目录一、LTR引言1.1 LTR的出现背景1.2 LTR基本框架二、训练数据的获取2.1人工标注2.2搜索日志2.3公共数据集三、特征提取四、模型训练4.1 单文档方法(PointWise Approach)4.2文档对方法(PairW...原创 2019-01-09 11:38:19 · 44644 阅读 · 5 评论 -
Xgboost系统设计:分块并行、缓存优化和Blocks for Out-of-core Computation
Xgboost的原理我之前已经介绍过了,详见《(二)提升树模型:Xgboost原理与实践》。 最近,想起来阅读Xgboost源论文中还没有读过的一块,即第4章SYSTEM DESIGN系统实现。第4章包括3个小节:Column Block for Parallel LearningCache-aware AccessBlocks for Out-of-core Computati...原创 2018-12-19 14:46:59 · 9693 阅读 · 6 评论 -
MCMC(一):蒙特卡罗方法和马尔科夫链
参考文献:【1】一文了解采样方法转载 2018-12-06 15:58:03 · 11520 阅读 · 3 评论 -
MCMC(三):Gibbs采样
在《MCMC(二):MCMC采样和M-H采样》中,我们讲到了M-H采样已经可以很好的解决蒙特卡罗方法需要的任意概率分布的样本集的问题。但是M-H采样有两个缺点:一是需要计算接受率,在高维时计算量大。并且由于接受率的原因导致算法收敛时间变长。二是有些高维数据,特征的条件概率分布好求,但是特征的联合分布不好求。因此需要一个好的方法来改进M-H采样,这就是我们下面讲到的Gibbs采样。本篇博客主要转...转载 2018-12-07 18:14:23 · 2325 阅读 · 0 评论 -
基于深度神经网络的embeddding来构建推荐系统
在之前的博客中,我主要介绍了embedding用于处理类别特征的应用,其实,在学术界和工业界上,embedding的应用还有很多,比如在推荐系统中的应用。本篇博客就介绍了如何利用embedding来构建一个图书的推荐系统。本文主要译自《Building a Recommendation System Using Neural Network Embeddings》,完整详细的代码见官方GitH...翻译 2018-11-17 14:47:41 · 1704 阅读 · 2 评论 -
(一)理解word2vec:原理篇
为什么想起来学习word2vec呢?其实之前自己根本没有接触过NLP的知识和任务,只是最近尝试使用了embedding的方法去处理类别特征和用embedding去做推荐,发现有不错的效果。同时,自己也感触到了所掌握知识的匮乏,因此,决定好好学习一下word2vec。最近几天自己研读了网上一些介绍word2vec原理的博客,写得非常得清晰和易懂。因此,自己也想做一个总结,关于word2vec的原理...原创 2018-11-20 10:10:54 · 3177 阅读 · 2 评论 -
word2vec的词向量&&神经网络的embedding层的关系
自己之前学习了一波word2vec的词向量&&神经网络的embedding,关于这2者的原理和实践,可以参看我之前的博客:利用神经网络的embedding层处理类别特征 (一)理解word2vec:原理篇 (二)理解word2vec:实践篇这篇文章的主题是分析word2vec的词向量&&神经网络的embedding层的关系,以及在实际中,如何同时应用它们。...原创 2018-11-22 11:55:28 · 9063 阅读 · 4 评论 -
(二)理解word2vec:实践篇
在《(一)理解word2vec:原理篇》中,我已经介绍了word2vec的相关应用和原理。在这篇博客中,我主要介绍word2vec的实践。本篇博客的基础实践代码仍然参考刘新建老师的博客,在他文章的基础上,我又扩展了一些功能。我用的实现word2vec的包是gensim(官方github)。gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层...原创 2018-11-20 17:52:17 · 3698 阅读 · 0 评论 -
广义线性模型与指数分布族的理解
在机器学习领域,很多模型都是属于广义线性模型(Generalized Linear Model, GLM),如线性回归,逻辑回归,Softmax回归等。广义线性模型有3个基本假设:(1) 样本观测值yiy_iyi满足带参数 η\etaη的指数分布族。即GLM是基于指数分布族的,所以我们先来看一下指数分布族的一般形式:p(y;η)=b(y)exp(ηTT(y)−a(η))p(y;\eta)...原创 2018-11-14 17:39:58 · 2852 阅读 · 0 评论 -
如何理解数据科学的中的数据泄露(Data Leakage)
数据科学竞赛中有时会出现这样的奇特景观:某只队伍,靠着对极个别feature的充分利用,立即将对手超越,成功霸占冠军位置,而且与第二名的差距远超第二名与第十名的差距。然而,这些feature却不是在因果关系上顺利解释预测值的‘因’,反而是预测值的‘果’。1. Data Leakage定义存在和利用这种倒‘因’为‘果’的feature的现象,叫数据竞赛中的Data Leakage。这里的...转载 2018-11-12 11:31:15 · 8259 阅读 · 0 评论 -
为什么对预测任务里的标签Y做对数处理?
平时在一些数据处理中,经常会把原始数据取对数后进一步处理。之所以这样做是基于对数函数在其定义域内是单调增函数,取对数后不会改变数据的相对关系,取对数作用主要有:1. 缩小数据的绝对数值,方便计算。例如,每个数据项的值都很大,许多这样的值进行计算可能对超过常用数据类型的取值范围,这时取对数,就把数值缩小了,例如TF-IDF计算时,由于在大规模语料库中,很多词的频率是非常大的数字。2. 取对数...转载 2018-11-08 20:25:46 · 3427 阅读 · 0 评论 -
深入理解机器学习中的各种熵和信息:信息量,熵,交叉熵,相对熵,条件熵,互信息等。
对机器学习了解的读者肯定经常听到以下名词:信息量,熵,交叉熵,相对熵,条件熵,互信息等。很多人对这些大同小异的名词很容易产生迷惑,它们之间究竟有什么关系?本篇博客在参考文献的基础上,从我自己理解的角度上,依次介绍信息量、信息熵、交叉熵、相对熵、条件熵、互信息、信息增益和信息增益率,试图清晰地说明这些概念之间的区别和联系。有些概念为了生动,我会举例说明,有些概念为了严谨,我会从公式推导上说明。一...原创 2018-12-14 10:53:50 · 1754 阅读 · 1 评论 -
MCMC(二):MCMC采样和M-H采样
在前面《MCMC(一):蒙特卡罗方法和马尔科夫链》中,我们讲到给定一个概率平稳分布π\piπ, 很难直接找到对应的马尔科夫链状态转移矩阵PPP。而只要解决这个问题,我们就可以找到一种通用的概率分布采样方法,进而用于蒙特卡罗模拟。本篇我们就讨论解决这个问题的办法:MCMC采样和它的易用版M-H采样。本篇博客主要转自参考文献【1】,在原文的基础上,为了更容易增加理解,略有删改增。一、马尔科夫链的细...转载 2018-12-07 15:34:43 · 5850 阅读 · 1 评论 -
PU learning简介(附python代码)
一、引言在现实生活中,有许多只有正样本和大量未标记样本的例子。这是因为负类样本的一些特点使得获取负样本较为困难。比如:负类数据不易获取。负类数据太过多样化。负类数据动态变化。举一个形象点的例子:比如在推荐系统里,只有用户点击的正样本,却没有显性负样本,我们不能因为用户没有点击这个样本就认为它是负样本,因为有可能这个样本的位置很偏,导致用户没有点。因此,有研究人员开始关注PU Lea...原创 2019-04-23 18:16:50 · 14924 阅读 · 7 评论 -
分类问题中类别不平衡问题的有效解决方法
LightGBM二分类处理:在LGBM的文档中,可以看到有两个参数来处理类别不平衡,分别是is_unbalance和scale_pos_weight 。在上图中的介绍中,这2个参数只能选其一,不能同时选。这说明了什么呢?这2个参数肯定是起到了相同的作用。这2个参数的关系是什么呢?在issue中找到了答案:if is_unbalance = true, weight of each pos...原创 2019-04-14 14:13:51 · 8801 阅读 · 1 评论 -
深入理解L0,L1和L2正则化
正则化技术是机器学习中常用的技术,一般是用来解决过拟合问题的。为什么范数可以作为机器学习的正则化项?为什么L1正则化可以用来进行特征选择的工作?为什么正则化可以解决过拟合问题?本篇博客从机器学习中为什么需要范数讲起,引出L0L_0L0,L1L_1L1 和 L2L_2L2的定义,然后回答上述的问题。文章目录一、损失函数与目标函数二、范数与正则项2.1 定义2.2 L1和L2 范数的对比2.2...原创 2019-04-21 18:27:57 · 7178 阅读 · 1 评论 -
适合工业界的特征选择方法介绍
一直想写一篇关于特征选择(Feature Selection)的博客。有两个原因:第一、特征选择对于传统机器学习任务是十分重要的;第二、自己在硕士期间的研究方向就是特征选择,对于学界前沿的特征选择方法是有那么一丢丢了解的。在有监督,无监督,半监督以及单标签,多标签各种场景下,也做过一些工作:《Local-nearest-neighbors-based feature weighting for...原创 2019-04-02 12:44:23 · 1751 阅读 · 1 评论 -
(一)异常检测算法:Isolation Forest原理及其python代码应用
异常检测 (anomaly detection),又被称为“离群点检测” (outlier detection),是机器学习研究领域中跟现实紧密联系、有广泛应用需求的一类问题。但是,什么是异常,并没有标准答案,通常因具体应用场景而异。大多数文献对异常的定义虽然笼统,但其实暗含了认定“异常”的两个标准或者说假设:异常数据跟样本中大多数数据不太一样。异常数据在整体数据样本中占比比较小。为了刻...原创 2019-03-13 20:19:16 · 20034 阅读 · 1 评论 -
(二)常见的分类评价指标及代码实现与应用
在上一篇《(一)常见的回归评价指标及代码应用》中我们介绍了评价回归性能的指标。sklearn的官方文档《 Model evaluation: quantifying the quality of predictions》中,对于二分类,多分类和多标签问题,有非常详细的指标介绍和实现。本篇博客我们只介绍常见的分类评价指标,以及它们的代码实现与应用。文章目录一、二分类指标(Binary Clas...原创 2019-03-03 18:02:02 · 5740 阅读 · 3 评论 -
(一)推荐算法概述——以协同过滤为主
推荐算法具有非常多的应用场景和商业价值,因此对推荐算法需要认真学习。推荐算法种类很多,但是目前应用最广泛的应该是基于协同过滤的推荐算法。本文总结了多种推荐算法,其中重点对协同过滤的推荐算法做一个概括。目录一、推荐系统的作用二、推荐算法概述2.1基于流行度的算法2.2 协同过滤算法2.2.1 基于用户的CF2.2.2 基于物品的CF2.3 基于内容的算法2....转载 2019-03-06 20:51:45 · 1289 阅读 · 4 评论 -
(一)常见的回归评价指标及代码实现与应用
每个机器学习模型都试图使用不同的数据集来解决具有不同目标的问题,因此,对于不同的机器学习任务,在充分理解上下文的基础上,选择合适的机器学习评价指标是非常重要的。只有了解了本次机器学习建立模型的任务,才能选择合适的评价指标。本篇博客关注回归问题的评价指标。先介绍常用的评价指标,然后用代码实现一下部分评价指标。分类问题的评价指标的问题随后会整理。一、回归指标(Regression Metrics...原创 2019-03-01 18:24:39 · 5719 阅读 · 3 评论 -
机器学习中最优化问题总结
记录一下自己学习机器学习中最优化问题的过程。一、基础知识1.1 梯度向量、Jacobian矩阵和Hessian矩阵这里讨论的三个概念:梯度向量、Jacobian矩阵和Hessian矩阵它的自变量:x=(x1,x2,⋯ ,xn)T\mathbf{x} = (x_1,x_2,\cdots,x_n)^Tx=(x1,x2,⋯,xn)T因变量有两种情况:一维f原创 2019-02-14 17:36:38 · 1241 阅读 · 0 评论 -
矩阵与张量的区别
关于矩阵和张量的区别有些人可能不太清楚,看了这篇文章相信你会很明白了。矩阵是由括号括起的n×m(例如,3×3)个数字的网格。我们可以加上和减去相同大小的矩阵,只要大小兼容((n×m)×(m×p)= n×p),就将一个矩阵与另一个矩阵相乘,以及可以将整个矩阵乘以常数。向量是一个只有一行或一列的矩阵。我们可以对任何矩阵进行一系列数学运算。不过,基本的思想是,矩阵只是一个二维的数字网格。张量...翻译 2018-11-13 11:15:51 · 18726 阅读 · 5 评论 -
(一)因式分解机(Factorization Machine,FM)原理及实践
因子分解机(Factorization Machine),是由Konstanz大学(德国康斯坦茨大学)Steffen Rendle(现任职于Google)于2010年最早提出的,旨在解决大规模稀疏数据下的特征组合问题。不久后,FM的升级版模型场感知分解机(Field-aware Factorization Machine,简称FFM)由来自Yu-Chin Juan(阮毓钦,毕业于中国台湾大学,现...原创 2018-11-06 14:30:41 · 12559 阅读 · 3 评论 -
(一)提升树模型:GBDT原理与实践
在对机器学习各种分类器的学习上,因为学习和工作的原因,自己接触得最多的就是提升树(boosting tree)模型了。之前自己基本都是在使用GBDT,xgboost和lgbm,原理也稍微懂点,当然很多很多细节问题并不是特别明白。因此,我想在现有资料的基础上,加入自己的一些理解,整理出一个关于提升树模型的资料,以便自己和广大对提升树模型感兴趣的朋友随时查阅。很多问题也希望读者可以拍砖。为了写作的...原创 2018-09-29 16:08:41 · 8597 阅读 · 24 评论 -
(二)提升树模型:Xgboost原理与实践
本篇博客是提升树模型博客的第二篇文章,第一篇介绍GBDT的博客可以参看这里。本篇博客是基于kingsam_的博客整理而来,在此表示感谢。在这篇文章的基础上,我加入了一些自己的理解,使得介绍Xgboost的内容更加详实易读。同介绍GBDT一样,我首先会介绍理论部分,然后举例说明模型训练过程,最后介绍一些细节问题。文章目录一、Xgboost简介二、监督学习的三要素2.1 模型2.2 参数2.3 ...原创 2018-10-08 18:01:54 · 8553 阅读 · 14 评论 -
Lightgbm源论文解析:LightGBM: A Highly Efficient Gradient Boosting Decision Tree
写这篇博客的原因是,网上很多关于Lightgbm的讲解都是从Lightgbm的官方文档来的,官方文档只会告诉你怎么用,很多细节都没讲。所以自己翻过来Lightgbm的源论文:LightGBM: A Highly Efficient Gradient Boosting Decision Tree仔细看了几遍,现在整理一下源论文,加深自己对Lightgbm技术细节的认识和思考。首先感谢网友立刻有的...原创 2018-10-14 17:05:40 · 8398 阅读 · 2 评论 -
Lightgbm 直方图优化算法深入理解
一、概述在之前的介绍Xgboost的众多博文中,已经介绍过,在树分裂计算分裂特征的增益时,xgboost 采用了预排序的方法来处理节点分裂,这样计算的分裂点比较精确。但是,也造成了很大的时间开销。为了解决这个问题,Lightgbm 选择了基于 histogram 的决策树算法。相比于 pre-sorted算法,histogram 在内存消耗和计算代价上都有不少优势。histogram算法简单来...原创 2018-10-13 17:36:43 · 35474 阅读 · 31 评论 -
IR的评价指标-MAP,MRR和NDCG的形象理解
一 、MAP(Mean Average Precision):单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。MAP 是反映系统在全部相关文档上性能的单值指标。系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高。如果系统没有返回相关文档,则准确率默认为0。只有1和0,1代表相关,0代表不相关。例如:假...原创 2018-10-17 21:02:21 · 8860 阅读 · 0 评论 -
Xgboost近似分位数算法
一、近似算法(二)提升树模型:Xgboost原理与实践这篇博客介绍了XGBoost使用exact greedy算法来寻找分割点建树,但是当数据量非常大难以被全部加载进内存时或者分布式环境下时,exact greedy算法将不再合适。因此作者提出近似算法(Approximate Algorithm)来寻找分割点。近似算法的大致流程见下面的算法(参考文献【5】中3.2)。对于某个特征kkk,算...原创 2018-10-12 12:34:00 · 10625 阅读 · 9 评论 -
时间序列分析之指数平滑法(holt-winters及代码)
在做时序预测时,一个显然的思路是:认为离着预测点越近的点,作用越大。比如我这个月体重100斤,去年某个月120斤,显然对于预测下个月体重而言,这个月的数据影响力更大些。假设随着时间变化权重以指数方式下降——最近为0.8,然后0.8**2,0.8**3…,最终年代久远的数据权重将接近于0。将权重按照指数级进行衰减,这就是指数平滑法的基本思想。指数平滑法有几种不同形式:一次指数平滑法针对没有趋势和...原创 2018-09-07 16:45:20 · 65455 阅读 · 3 评论 -
利用TPOT完成自动化机器学习
目录1 概述2 使用TPOT2.1 TPOT代码2.2 评估函数2.3 内置TPOT配置2.4 定制TPOT的操作符和参数2.5 NOTE3 TPOT API4 参考文献首先,什么是自动化机器学习?正如Sebastian Raschka描述的那样,假如说计算机程序是关于自动化的,那么机器学习可以看做是“关于自动化的自动化”。那么自动化机器学习就是关于自动...原创 2018-09-07 16:42:25 · 10914 阅读 · 5 评论 -
利用sklearn中pipeline构建机器学习工作流
当我们对训练集应用各种预处理操作时(特征标准化、主成分分析等等), 我们都需要对测试集重复利用这些参数,以免出现数据泄露(data leakage)。pipeline 实现了对全部步骤的流式化封装和管理(streaming workflows with pipelines),可以很方便地使参数集在新数据集(比如测试集)上被重复使用。Pipeline可以将许多算法模型串联起来,比如将特征提取...原创 2018-09-07 16:36:47 · 2593 阅读 · 0 评论 -
利用贝叶斯优化Hyperopt库进行自动化机器学习参数调优
之前自己一直使用网格搜索(grid-search)来进行参数调优。显然,这种方法调优的候选集很有限,也比较“粗糙”。因此,性能往往不能达到最优。如今越来越多的超参数调优过程都是通过自动化的方法完成的,它们旨在使用带有策略的启发式搜索(informed search)在更短的时间内找到最优超参数,除了初始设置之外,并不需要额外的手动操作。贝叶斯优化是一种基于模型的用于寻找函数最小值的方法。近段时...原创 2018-09-07 16:32:59 · 2968 阅读 · 0 评论 -
模型融合之stacking&blending原理及代码
目录1 Stacking1.1 概念1.2 python实现2 Blending2.1 概念2.2 python实现3 Stacking和Blending对比4 参考文献模型融合的基本思想就是通过对多个单模型融合以提升整体性能。平常自己一般都使用最简单的方法,比如说对分类问题,采用voting,对回归问题,采用加权averaging。今天简单介绍下stack...原创 2018-09-07 16:29:45 · 9500 阅读 · 0 评论 -
机器学习中的多分类任务详解
现实中常遇到多分类学习任务。有些二分类学习方法可直接推广到多分类,如LR。但在更多情形下,我们是基于一些基本策略,利用二分类学习器来解决多分类问题。所以多分类问题的根本方法依然是二分类问题。具体来说,有以下三种策略:一、一对一 (OvO)假如某个分类中有N个类别,我们将这N个类别进行两两配对(两两配对后转化为二分类问题)。那么我们可以得到个二分类器。(简单解释一下,相当于在N个类别里面...原创 2018-10-08 20:29:58 · 12597 阅读 · 2 评论 -
(三)提升树模型:Lightgbm原理深入探究
本篇博客是提升树模型博客的第三篇文章,也是最后一篇文章。第一篇介绍GBDT的博客可以参看这里。第二篇介绍Xgboost的博客可以参看这里。本篇博客主要讲解轻量级的提升树模型-LightGBM。LightGBM的资料网上很多,但是讲解得都很浅,大部分都是从官方文档摘抄过来的,没有深究。因此,在参考部分资料和源码的基础上,本篇博客想深入体会作者的思路,记录一些细节问题,供读者参考。...原创 2018-11-02 18:57:08 · 11953 阅读 · 1 评论 -
类别特征的处理方法大全
类别特征在现实数据里十分常见,处理类别特征对于机器学习里的各种算法来说都是必不可少的过程。本篇文章总结了几种常见的处理类别特征的方法,这些方法不仅有传统的one-hot编码的形式,也有目前最先进的思路。一、one-hot编码详见这篇文章。二、类别特征的最优切分。该方法需要特定工具的支持,如LightGBM,详见这篇文章。三、转成数值特征3.1 利用embedding...原创 2018-11-01 20:30:51 · 6436 阅读 · 0 评论