随笔分类 -  0081. 机器学习

摘要:在XGBoost算法原理小结中,我们讨论了XGBoost的算法原理,这一片我们讨论如何使用XGBoost的Python类库,以及一些重要参数的意义和调参思路。 本文主要参考了XGBoost的Python文档 和 XGBoost的参数文档。 1. XGBoost类库概述 XGBoost除了支持Pyth 阅读全文
posted @ 2019-07-01 18:10 刘建平Pinard 阅读(63270) 评论(135) 推荐(21) 编辑
摘要:在两年半之前作过梯度提升树(GBDT)原理小结,但是对GBDT的算法库XGBoost没有单独拿出来分析。虽然XGBoost是GBDT的一种高效实现,但是里面也加入了很多独有的思路和方法,值得单独讲一讲。因此讨论的时候,我会重点分析和GBDT不同的地方。 本文主要参考了XGBoost的论文和陈天奇的P 阅读全文
posted @ 2019-06-05 20:36 刘建平Pinard 阅读(73305) 评论(201) 推荐(34) 编辑
摘要:异常点检测,有时也叫离群点检测,英文一般叫做Novelty Detection或者Outlier Detection,是比较常见的一类非监督学习算法,这里就对异常点检测算法做一个总结。 1. 异常点检测算法使用场景 什么时候我们需要异常点检测算法呢?常见的有三种情况。一是在做特征工程的时候需要对异常 阅读全文
posted @ 2018-07-15 19:19 刘建平Pinard 阅读(50607) 评论(78) 推荐(11) 编辑
摘要:在机器学习用于产品的时候,我们经常会遇到跨平台的问题。比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环境比如Java,为了上一个机器学习模型去大动干戈修改环境配置很不划算,此时我们就可以考虑用预测模型标 阅读全文
posted @ 2018-06-24 15:18 刘建平Pinard 阅读(42203) 评论(79) 推荐(15) 编辑
摘要:在贝叶斯个性化排序(BPR)算法小结中,我们对贝叶斯个性化排序(Bayesian Personalized Ranking, 以下简称BPR)的原理做了讨论,本文我们将从实践的角度来使用BPR做一个简单的推荐。由于现有主流开源类库都没有BPR,同时它又比较简单,因此用tensorflow自己实现一个 阅读全文
posted @ 2018-06-10 17:29 刘建平Pinard 阅读(20633) 评论(46) 推荐(5) 编辑
摘要:在矩阵分解在协同过滤推荐算法中的应用中,我们讨论过像funkSVD之类的矩阵分解方法如何用于推荐。今天我们讲另一种在实际产品中用的比较多的推荐算法:贝叶斯个性化排序(Bayesian Personalized Ranking, 以下简称BPR),它也用到了矩阵分解,但是和funkSVD家族却有很多不 阅读全文
posted @ 2018-06-03 16:22 刘建平Pinard 阅读(45577) 评论(68) 推荐(13) 编辑
摘要:在前面我们分别讨论了特征工程中的特征选择与特征表达,本文我们来讨论特征预处理的相关问题。主要包括特征的归一化和标准化,异常特征样本清洗与样本数据不平衡问题的处理。 1. 特征的标准化和归一化 由于标准化和归一化这两个词经常混用,所以本文不再区别标准化和归一化,而通过具体的标准化和归一化方法来区别具体 阅读全文
posted @ 2018-05-26 20:23 刘建平Pinard 阅读(30238) 评论(113) 推荐(27) 编辑
摘要:在特征工程之特征选择中,我们讲到了特征选择的一些要点。本篇我们继续讨论特征工程,不过会重点关注于特征表达部分,即如果对某一个特征的具体表现形式做处理。主要包括缺失值处理,特殊的特征处理比如时间和地理位置处理,离散特征的连续化和离散化处理,连续特征的离散化处理几个方面。 1. 缺失值处理 特征有缺失值 阅读全文
posted @ 2018-05-19 22:39 刘建平Pinard 阅读(27438) 评论(107) 推荐(12) 编辑
摘要:特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样是确定的步骤,更多是工程上的经验和权衡。因此没有统一的方法。这里只是对一些常用的方法做一个总结。本文关注于特征选择部分。后面还有两篇会关注于特征表达和特征预处理。 1. 特征的来源 在做数据分析的时候,特征的来源一般有两块,一块是业 阅读全文
posted @ 2018-05-13 20:13 刘建平Pinard 阅读(55822) 评论(115) 推荐(30) 编辑
摘要:EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等。本文就对EM算法的原理做一个总结。 1. EM算法要解决的问题 我们经常会从样本观察数据中,找出样本的模型参 阅读全文
posted @ 2017-05-27 17:12 刘建平Pinard 阅读(99098) 评论(131) 推荐(32) 编辑
摘要:对于分解机(Factorization Machines,FM)推荐算法原理,本来想自己单独写一篇的。但是看到peghoty写的FM不光简单易懂,而且排版也非常好,因此转载过来,自己就不再单独写FM了。 Pinard注:上面最后一句话应该是"而$g_{\theta}(x)$则利用$\widehat{ 阅读全文
posted @ 2017-02-06 14:06 刘建平Pinard 阅读(50810) 评论(72) 推荐(11) 编辑
摘要:在矩阵分解在协同过滤推荐算法中的应用中,我们对矩阵分解在推荐算法中的应用原理做了总结,这里我们就从实践的角度来用Spark学习矩阵分解推荐算法。 1. Spark推荐算法概述 在Spark MLlib中,推荐算法这块只实现了基于矩阵分解的协同过滤推荐算法。而基于的算法是FunkSVD算法,即将m个用 阅读全文
posted @ 2017-02-04 15:55 刘建平Pinard 阅读(21566) 评论(44) 推荐(6) 编辑
摘要:在协同过滤推荐算法总结中,我们讲到了用图模型做协同过滤的方法,包括SimRank系列算法和马尔科夫链系列算法。现在我们就对SimRank算法在推荐系统的应用做一个总结。 1. SimRank推荐算法的图论基础 SimRank是基于图论的,如果用于推荐算法,则它假设用户和物品在空间中形成了一张图。而这 阅读全文
posted @ 2017-02-03 15:56 刘建平Pinard 阅读(19516) 评论(36) 推荐(5) 编辑
摘要:在协同过滤推荐算法总结中,我们讲到了用矩阵分解做协同过滤是广泛使用的方法,这里就对矩阵分解在协同过滤推荐算法中的应用做一个总结。(过年前最后一篇!祝大家新年快乐!明年的目标是写120篇机器学习,深度学习和NLP相关的文章) 1. 矩阵分解用于推荐算法要解决的问题 在推荐系统中,我们常常遇到的问题是这 阅读全文
posted @ 2017-01-26 12:28 刘建平Pinard 阅读(47000) 评论(86) 推荐(19) 编辑
摘要:推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究。推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法,本文就对协同过滤类别的推荐算法做一个概括总结,后续也会对一些典型的协同过滤推荐算法做原理总结。 1. 推荐算法概述 推荐算法是非常古老的,在机器学习还没有兴起的时候 阅读全文
posted @ 2017-01-25 15:12 刘建平Pinard 阅读(93375) 评论(66) 推荐(41) 编辑
摘要:在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法。由于scikit-learn中没有关联算法的类库,而Spark MLlib有,本文的使用以Spark MLlib作为使用 阅读全文
posted @ 2017-01-22 14:24 刘建平Pinard 阅读(13933) 评论(24) 推荐(4) 编辑
摘要:前面我们讲到频繁项集挖掘的关联算法Apriori和FP Tree。这两个算法都是挖掘频繁项集的。而今天我们要介绍的PrefixSpan算法也是关联算法,但是它是挖掘频繁序列模式的,因此要解决的问题目标稍有不同。 1. 项集数据和序列数据 首先我们看看项集数据和序列数据有什么不同,如下图所示。 左边的 阅读全文
posted @ 2017-01-20 23:13 刘建平Pinard 阅读(37738) 评论(32) 推荐(8) 编辑
摘要:在Apriori算法原理总结中,我们对Apriori算法的原理做了总结。作为一个挖掘频繁项集的算法,Apriori算法需要多次扫描数据,I/O是很大的瓶颈。为了解决这个问题,FP Tree算法(也称FP Growth算法)采用了一些技巧,无论多少数据,只需要扫描两次数据集,因此提高了算法运行的效率。 阅读全文
posted @ 2017-01-19 21:19 刘建平Pinard 阅读(79390) 评论(80) 推荐(46) 编辑
摘要:Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。比如在常见的超市购物数据集,或者电商的网购数据集中,如果我们找到了频繁出现的数据集,那么对于超市,我们可以优化产品的位置摆放,对于电商,我们可以优化商品所在的仓库位置 阅读全文
posted @ 2017-01-17 17:05 刘建平Pinard 阅读(118399) 评论(52) 推荐(28) 编辑
摘要:典型关联分析(Canonical Correlation Analysis,以下简称CCA)是最常用的挖掘数据关联关系的算法之一。比如我们拿到两组数据,第一组是人身高和体重的数据,第二组是对应的跑步能力和跳远能力的数据。那么我们能不能说这两组数据是相关的呢?CCA可以帮助我们分析这个问题。 1. C 阅读全文
posted @ 2017-01-16 17:19 刘建平Pinard 阅读(64558) 评论(59) 推荐(19) 编辑