机器学习进阶汇总
文章平均质量分 88
机器学习中部分内容的汇总,由于看这些文章都需要一定的基础,因此做成了进阶汇总。
Font Tian
某公司山东分公司研发中心主管。目前主要工作为ABC融合,主要业余目标为发论文,玩开源。
展开
-
理解朴素贝叶斯
前言在对我的数据科学与人工智能小组的新人进行小规模授课时讲课内容整理,有改动和删减.这可能是目前网络上最全面也最简单易懂的有关朴素贝叶斯的文章有关贝叶斯的一些闲谈无论是在生活中还是我们的科学理论中,经常会估计概率.比如,我们计算一下明天下雨的概率,或者中彩票的概率,或者其他概率.概率就是可能性. 但是在人工智能领域关于概率的问题却产生了两个不同的流派,那就是贝叶斯派和频率学派.频率学派认为万物发展原创 2017-12-08 14:41:12 · 2102 阅读 · 3 评论 -
通过模型进行特征选择
第一种是基于L1的特征选择,使用L1正则化的线性模型会得到稀疏解,当目标是降低维度的时候,可以使用sklearn中的给予L1正则化的线性模型,比如LinearSVC,逻辑回归,或者Lasso。使用 Lasso,alpha 的值越大,越少的特征会被选择。特征选取并不一定升:所有特征有效的情况下,去除的特征只能带来模型性能的下降,即使不是全部有效很多时候,低重要程度的特征也并不一定代表着一定会导致模型性能的下降,因为某种度量方式并不代表着该特征的最终效果,很多时候我们的度量方式,往往只是一个参考而已.原创 2018-01-15 15:17:55 · 15275 阅读 · 7 评论 -
单变量特征选择:Univariate feature selection
sklearn中的单变量特征选择单变量的特征选择是通过基于一些单变量的统计度量方法来选择最好的特征,比如卡方检测等。Scikit-learn 将单变量特征选择的学习器作为实现了 transform方法的对象:sklearn中实现的方法有:SelectKBest 保留评分最高的 K 个特征SelectPercentile 保留最高得分百分比之几的特征对每个特征应用常见的单变量统计测原创 2018-01-07 20:56:44 · 8623 阅读 · 0 评论 -
Sklearn中的CV与KFold详解
关于交叉验证,我在之前的文章中已经进行了简单的介绍,而现在我们则通过几个更加详尽的例子.详细的介绍CV%matplotlib inlineimport numpy as npfrom sklearn.model_selection import train_test_splitfrom sklearn import datasetsfrom sklearn import s...原创 2018-01-31 17:35:42 · 33867 阅读 · 1 评论 -
集成算法中的Bagging
Bagging(Tree)相较于Tree增加了偏差,但是降低了方差,最终得到了优于Tree的模型,而同样的Bagging(Tree)_2进一步大幅度增加了偏差,但是同样的方差也大幅度下降,最终得到了效果优于Bagging(Tree)的最终模型。虽然在Bagging中引入的随机分割增加了偏差,但是因为多个模型的集成平均,同时也使得我们在总体上获取了更好的模型,在本篇文章中,我们称之为Bagging的特性一,在后面我们将会验证这一特性。原创 2018-01-16 14:16:10 · 19974 阅读 · 1 评论 -
RandomForest:随机森林
随机森林:RF随机森林是一种一决策树为基学习器的Bagging算法,但是不同之处在于RF决策树的训练过程中还加入了随机属性选择(特征上的子采样)传统的决策树在选择划分的属性时,会选择最优属性RF 首先,从该节点的属性中损及选择出K个属性组成一个随机子集(类也就是Bagging中的Random Subspaces,一般通常K=log2(n))然后再从这个子集中选择一个最右子集进行划分原创 2018-01-16 14:07:02 · 6182 阅读 · 2 评论 -
递归式特征消除:Recursive feature elimination
简述特征的选取方式一共有三种,在sklearn实现了的包裹式(wrapper)特诊选取只有两个递归式特征消除的方法,如下:recursive feature elimination ( RFE )通过学习器返回的 coef_ 属性 或者 feature_importances_ 属性来获得每个特征的重要程度。 然后,从当前的特征集合中移除最不重要的特征。在特征集合上不断的重复递归这个步骤原创 2018-01-08 16:57:31 · 35519 阅读 · 46 评论 -
方差过滤: Removing features with low variance
方差特征选择的原理与使用VarianceThreshold 是特征选择的一个简单基本方法,其原理在于–底方差的特征的预测效果往往不好。而VarianceThreshold会移除所有那些方差不满足一些阈值的特征。默认情况下,它将会移除所有的零方差特征,即那些在所有的样本上的取值均不变的特征。例如,假设我们有一个特征是布尔值的数据集,我们想要移除那些在整个数据集中特征值为0或者为1的比例超过8原创 2018-01-07 20:54:18 · 5371 阅读 · 2 评论 -
Gradient Tree Boosting:梯度提升树详解
理论数学推导请参考《统计机器学习》-李航,或者参考sklearn的官方文档,下面是我的部分笔记,也可以作为参考优缺点GBRT是对任意的可微损失函数的提升算法的泛化,即可回归亦可分(sai)类(ting)。 优点: 1. 对混合数据的的天然处理能力 2. 强大的预测能力(主要指算法本身的能力强大,一般性能好) 3. 在输出空间中对异常点的鲁棒性(通过具有鲁棒性的原创 2018-01-26 22:02:09 · 11258 阅读 · 0 评论 -
ExecutableNotFound: failed to execute ['dot', '-Tsvg'], make sure the Graphviz executables are on yo
问题发生在使用xgboost自带功能绘图的时候出现了问题ExecutableNotFound: failed to execute ['dot', '-Tsvg'], make sure the Graphviz executables are on your systems' PATH寻找原因原因:graphviz本身是一个软件,需要额外下载,并将其bin加入环境变量之中。解决下载...原创 2018-12-03 14:54:35 · 10729 阅读 · 2 评论 -
Hyperopt 入门指南
Hyperopt:是进行超参数优化的一个类库。有了它我们就可以拜托手动调参的烦恼,并且往往能够在相对较短的时间内获取原优于手动调参的最终结果。一般而言,使用hyperopt的方式的过程可以总结为:用于最小化的目标函数搜索空间存储搜索过程中所有点组合以及效果的方法要使用的搜索算法目标函数一个简单的例子这里是一个简单的例子,用来展示函数问题from hyperopt import...原创 2018-12-19 16:30:27 · 10816 阅读 · 9 评论 -
如何使用hyperopt对xgboost进行自动调参
本教程重点在于传授如何使用Hyperopt对xgboost进行自动调参。但是这份代码也是我一直使用的代码模板之一,所以在其他数据集上套用该模板也是十分容易的。同时因为xgboost,lightgbm,catboost。三个类库调用方法都比较一致,所以在本部分结束之后,我们有理由相信,你将会学会在这三个类库上使用hyperopt。除此之外要额外说明的是,本文并不涉及交叉验证的问题,交叉验证请查看其...原创 2018-12-17 10:26:17 · 6341 阅读 · 17 评论 -
在Hyperopt框架下使用XGboost与交叉验证
Xgboost中内置了交叉验证,如果我们需要在Hyperopt中使用交叉验证的话,只需要直接调用即可。前边我们依旧采用第一篇教程使用过的代码。如果你已经看过前一篇文章,那么我建议你直接跳到交叉验证部分。原创 2018-12-17 10:33:47 · 3104 阅读 · 5 评论 -
在Python中使用XGBoost
本文原是xgboost的官方文档教程,但是鉴于其中部分内容叙述不清,部分内容也确实存在一定的问题,所以本人重写了该部分。数据请前往Github此处下载前置代码引用类库,添加需要的函数import numpy as npfrom sklearn.model_selection import train_test_splitimport xgboost as xgbimport panda...原创 2018-12-17 11:22:21 · 5358 阅读 · 1 评论 -
在Python中使用lightgbm
前言-lightgbm是什么?LightGBM 是一个梯度 boosting 框架, 使用基于学习算法的决策树. 它是分布式的, 高效的, 装逼的, 它具有以下优势:速度和内存使用的优化减少分割增益的计算量通过直方图的相减来进行进一步的加速减少内存的使用 减少并行学习的通信代价稀疏优化准确率的优化Leaf-wise (Best-first) 的决策树生长策略类别特征值的...原创 2018-12-17 15:22:10 · 10161 阅读 · 0 评论 -
Hyperopt中文文档:Home
主页Font Tian translated this article on 22 December 2017Hyperopt:分布式异步算法组态/超参数优化(主页,但这不是维基的主页)。加入hyperopt-announce 来获取重要更新的电子邮件通知(花费较低的流量)。文档:安装注意事项-主要是MongoDBFmin - 有关如何使用HyperOpt最小化功能的基本教程使用MongoDB翻译 2017-12-23 18:16:00 · 2683 阅读 · 0 评论 -
Hyperopt中文文档:Cite引用
引用Font Tian translated this article on 22 December 2017如果你想使用这个软件进行研究,请在论文中引用以下内容:Bergstra, J., Yamins, D., Cox, D. D. (2013) Making a Science of Model Search: Hyperparameter Optimization in Hundreds o翻译 2017-12-23 18:17:22 · 926 阅读 · 0 评论 -
Hyperopt中文文档:FMin
FMinFont Tian translated this article on 22 December 2017这一页是关于 hyperopt.fmin() 的基础教程. 主要写了如何写一个可以利用fmin进行优化的函数,以及如何描述fmin的搜索空间。Hyperopt的工作是通过一组可能的参数找到标量值,possibly-stochastic function的最佳值(注意在数学中stocha翻译 2017-12-23 18:18:44 · 12336 阅读 · 8 评论 -
auto-sklearn案例解析一
简单的使用 >>> import autosklearn.classification >>> cls = autosklearn.classification.AutoSklearnClassifier() >>> cls.fit(X_train, y_train) >>> predictions = cls.predict(X_test)该例子来自于官网首页.原创 2017-12-12 19:50:32 · 5240 阅读 · 0 评论 -
auto-sklearn案例解析二
度量函数-metricsauto-sklearn的度量函数是对sklearn度量函数的封装,我们即可以使用autosklearn已经封装好的metrics函数,也可以使用autosklearn的metrics函数封装器make_scorer函数封装我们自己的么metrics函数使用autosklearn已经封装好的metrics函数如果仅仅是获取的话,最简易的一种方式是直接去找源代码.你可以直接输入原创 2017-12-12 19:54:47 · 2120 阅读 · 1 评论 -
AdaBoost算法特性
Boosting算法提升算法是一种常见的统计学习方法,其作用为将弱的学习算法提升为强学习算法.其理论基础为:强可学习器与弱可学习器是等价的.即在在学习中发现了’弱学习算法’,则可以通过某些方法将它特生为强可学习器,这是数学可证明的.在分类学习中提升算法通过反复修改训练数据的权值分布,构建一系列的基本分类器(弱分类器),并将这些基本分类器线性组合,构成一个强学习器.代表算法为Adaboost算法,ad原创 2017-12-18 16:55:06 · 3956 阅读 · 0 评论 -
hyperopt中文文档:Recipes
食谱(Recipes)Font Tian translated this article on 23 December 2017如何对一些给定值的配置空间内的一些值进行采样ampling%2520in%2520hyperopt.ipynb)翻译 2017-12-23 18:22:59 · 1246 阅读 · 0 评论 -
机器学习数据集
前言数据集算是比较重要的学习资料了吧,在这里汇总一些好用的数据集以便使用, 关于一些内容可以参考一下知乎的提问UCI常用数据集UCI 一个不错的数据集下载网站 此处介绍几个点击;想比较高的数据集,后面有下载和存储的代码以及有关问题的说明.使用方式点击官方网站,你可以看到以下内容 可以看到右边有两个排行榜,最右边的是历史点击率的排行榜,位于该榜左边的也就是网页中间的是最新捐赠原创 2017-12-08 09:26:53 · 10942 阅读 · 0 评论 -
绘制决策树
绘制出决策树经过训练的决策树,我们可以使用 export_graphviz 导出器以 Graphviz 格式导出决策树. 如果你是用 conda 来管理包,那么安装 graphviz 二进制文件和 python 包可以用以下指令安装 conda install python-graphviz 或者,可以从 graphviz 项目主页下载 graphviz 的二进制文件,并从 pypi 安装 Py原创 2017-12-17 12:04:01 · 4299 阅读 · 0 评论 -
auto-sklearn手册
手册本手册从几个方面说明了如何使用auto-sklearn。并且 尽可能引用的例子来解释某些配置。官网首页.官网中文翻译例子auto-sklearn 下面的例子演示几个 方面的用法,他们都位于github:Holdout交叉验证并行计算按照时序使用回归连续和分类数据使用自定义指标时间和内存限制auto-sklearn 的一个重要功能时限制内存与时间的使用。特别是对于大型数据集,算法可翻译 2017-12-12 19:44:53 · 10432 阅读 · 2 评论 -
auto-sklearn简介
auto-sklearn是什么?auto-sklearn是一个自动化机器学习的工具包,其基于sklearn编写. >>> import autosklearn.classification >>> cls = autosklearn.classification.AutoSklearnClassifier() >>> cls.fit(X_train, y_train)翻译 2017-12-12 19:47:05 · 7136 阅读 · 0 评论 -
Hyperopt官方中文文档导读
在2017年的圣诞节前,我翻译了有关HyperOpt的中文文档,这也时填补了空白,以此作为献给所有中国程序员,以及所有其他机器学习相关行业人员的圣诞礼物。圣诞快乐,各位。HyperOpt中文文档导读翻译的文档已经发布于github,请在我的项目Hyperopt_CN中的wiki查看相应文档.HyperOpt中文版wiki文档内容包括以下内容:HyperOpt中文文档导读,即真正的中文文档主页Ho原创 2017-12-23 15:56:30 · 6622 阅读 · 0 评论 -
hyperopt中文文档:Scipy2013
Scipy2013Font Tian translated this article on 23 December 2017SciPy2013摘要提交标题Hyperopt:用于优化机器学习算法的超参数的Python库作者詹姆斯·伯格斯特拉,丹·维明斯和戴维·C·考克斯(James Bergstra, Dan Yamins, and David D. Cox)简介James Bergstra是滑铁卢大翻译 2017-12-23 18:25:25 · 1650 阅读 · 0 评论 -
hyperopt中文文档:RelatedWork
相关工作Font Tian translated this article on 23 December 2017与Hyperopt相关的软件链接,以及常用的贝叶斯优化工具。使用Hyperopt的软件 hyperopt-sklearn - 使用hyperopt跨Sklearn估计器进行优化(Work In Progress)。hyperopt-convnet - 优化用于图像分类的卷积体系结构(翻译 2017-12-23 18:24:01 · 1434 阅读 · 0 评论 -
hyperopt中文文档:Parallelizing-Evaluations-During-Search-via-MongoDB
通过MongoDB在搜索时进行并行计算Font Tian translated this article on 23 December 2017 Hyperopt旨在支持不同类型的试用数据库。默认试用数据库(Trials)是用Python列表和字典实现的。默认实现是一个参考实现,很容易处理,但不支持并行评估试验所需的异步更新。对于并行搜索,hyperopt包含一个 MongoTrials 支持异步翻译 2017-12-23 18:21:58 · 1815 阅读 · 2 评论 -
hyperopt中文文档:Installation-Notes安装说明
安装说明hyperopt安装说明 Font Tian translated this article on 23 December 2017有关MongoDB的部分Hyperopt要求mongodb(有时候简称“mongo”)来执行并行搜索。据我所知,hyperopt与2.xx系列中的所有版本兼容,这是目前的(在这里下载最新版本)。它甚至可能与mongodb的所有版本兼容,我不知道mongo的任何翻译 2017-12-23 18:19:48 · 2724 阅读 · 0 评论 -
hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)
其他语言接口Font Tian translated this article on 23 December 2017两种接口策略基本上有两种方法将 hyperopt 与其他语言进行连接:你可以为你的成本函数中编写一个Python包装器,这个函数不是用Python编写的(用Python调用其它语言,译者注)您可以将 hyperopt-mongo-worker 替换为直接使用JSON与MongoD翻译 2017-12-23 18:20:42 · 1049 阅读 · 0 评论 -
Lightgbm with Hyperopt
如何使用hyperopt对Lightgbm进行自动调参之前的教程以及介绍过如何使用hyperopt对xgboost进行调参,并且已经说明了,该代码模板可以十分轻松的转移到lightgbm,或者catboost上。而本篇教程就是对原模板的一次歉意,前半部分为教程-如何使用hyperopt对xgboost进行自动调参的迁移,后半部分是对在Hyperopt框架下使用XGboost与交叉验证的迁移。关...原创 2018-12-18 12:49:39 · 3843 阅读 · 14 评论