剑指数据科学
文章平均质量分 87
数据科学一个需要多领域知识的学科,所以我们将从零开始,解析数据科学.从数学公式,到kaggle大赛实例,一步步了解数据科学的每一部分.
Font Tian
某公司山东分公司研发中心主管。目前主要工作为ABC融合,主要业余目标为发论文,玩开源。
展开
-
淘宝用户行为分析
项目背景以淘宝app平台为数据集,通过行业的指标对淘宝用户行为进行分析,从而探索淘宝用户的行为模式,具体指标包括:日PV和日UV分析,付费率分析,复购行为分析,漏斗流失分析和用户价值RFM分析。数据来源https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1数据介绍列名称说明用户ID整数类型,序列化后的用户ID商品ID整数类型,序列化后的商品ID商品类目ID整数类型,序列化后的商转载 2020-08-20 17:32:39 · 4149 阅读 · 0 评论 -
自动化机器学习(三)神经网络架构搜索综述(NAS)简述
自动化机器学习就是能够自动建立机器学习模型的方法,其主要包含三个方面:方面一,超参数优化;方面二,自动特征工程与机器学习算法自动选择;方面三,神经网络结构搜索。本文侧重于方面三,神级网络结构搜索。自动化机器学习的前两个部分,都有一个特点——只对现在已有的算法进行搜索,而不创造新的算法。一般而言机器学习专家在开发机器学习应用或者构建机器学习模型时,都不太可能从头造轮子,直接创造一个新的算法。但是到了深度神经网路的时候,就发生了一些变化。严格意义上来说,神经网络的基本结构都是固定的,有限的。原创 2020-08-20 16:15:56 · 4202 阅读 · 2 评论 -
自动化机器学习(二)自动构建机器学习流水线
自动化机器学习(一)超参数自动优化自动化机器学习就是能够自动建立机器学习模型的方法,其主要包含三个方面:方面一,超参数优化;方面二,自动特征工程与机器学习算法自动选择;方面三,神经网络结构搜索。本文侧重于方面二,我们将使用TPOT完成自动特征工程与机器学习算法自动选择。在机器学习中,模型本身的参数是可以通过训练数据来获取的,这些参数属于算法的普通参数,通过数据训练获得算法合适的参数,构建强大的模型本身就是机器学习的核心目标。原创 2020-08-20 15:07:43 · 2093 阅读 · 2 评论 -
自动化机器学习(一)超参数自动优化技术
自动化机器学习就是能够自动建立机器学习模型的方法,其主要包含三个方面:方面一,超参数优化;方面二,自动特征工程与机器学习算法自动选择;方面三,神经网络结构搜索。本文侧重于方面一,如何对超参数进行自动优化。在机器学习中,模型本身的参数是可以通过训练数据来获取的,这些参数属于算法的普通参数,通过数据训练获得算法合适的参数,构建强大的模型本身就是机器学习的核心目标。原创 2020-08-20 15:05:20 · 5661 阅读 · 3 评论 -
利用多项式特征生成与递归特征消除解决特征组合与特征选择问题
项目背景无论是对于什么数据都存在两个非常经典的问题:问题一是,数据与标签之间,数据与数据之间的一些实际关系很难搞清楚。有些时候特征A,特征B可能都与标签存在正向关系。然而实际上的关系却可能是标签与特征A,B的乘积存在实际关系;问题二,在不同机器学习的模型中,特征的最佳选择往往并不一致。比如当模型选择为模型model1的时候,特征可能为特征ABC,而当模型变为model2的时候,最佳特征可能就变为了ACD。为了解决这两个问题,有一个比较成熟的自动化方案可供我们使用。那就是多项式特征生成与自动特征选择。这原创 2020-08-19 19:54:12 · 1057 阅读 · 0 评论 -
Hyperopt 入门指南
Hyperopt:是进行超参数优化的一个类库。有了它我们就可以拜托手动调参的烦恼,并且往往能够在相对较短的时间内获取原优于手动调参的最终结果。一般而言,使用hyperopt的方式的过程可以总结为:用于最小化的目标函数搜索空间存储搜索过程中所有点组合以及效果的方法要使用的搜索算法目标函数一个简单的例子这里是一个简单的例子,用来展示函数问题from hyperopt import...原创 2018-12-19 16:30:27 · 10822 阅读 · 9 评论 -
Lightgbm with Hyperopt
如何使用hyperopt对Lightgbm进行自动调参之前的教程以及介绍过如何使用hyperopt对xgboost进行调参,并且已经说明了,该代码模板可以十分轻松的转移到lightgbm,或者catboost上。而本篇教程就是对原模板的一次歉意,前半部分为教程-如何使用hyperopt对xgboost进行自动调参的迁移,后半部分是对在Hyperopt框架下使用XGboost与交叉验证的迁移。关...原创 2018-12-18 12:49:39 · 3843 阅读 · 14 评论 -
在Python中使用lightgbm
前言-lightgbm是什么?LightGBM 是一个梯度 boosting 框架, 使用基于学习算法的决策树. 它是分布式的, 高效的, 装逼的, 它具有以下优势:速度和内存使用的优化减少分割增益的计算量通过直方图的相减来进行进一步的加速减少内存的使用 减少并行学习的通信代价稀疏优化准确率的优化Leaf-wise (Best-first) 的决策树生长策略类别特征值的...原创 2018-12-17 15:22:10 · 10167 阅读 · 0 评论 -
在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 · 5360 阅读 · 1 评论 -
在Hyperopt框架下使用XGboost与交叉验证
Xgboost中内置了交叉验证,如果我们需要在Hyperopt中使用交叉验证的话,只需要直接调用即可。前边我们依旧采用第一篇教程使用过的代码。如果你已经看过前一篇文章,那么我建议你直接跳到交叉验证部分。原创 2018-12-17 10:33:47 · 3104 阅读 · 5 评论 -
如何使用hyperopt对xgboost进行自动调参
本教程重点在于传授如何使用Hyperopt对xgboost进行自动调参。但是这份代码也是我一直使用的代码模板之一,所以在其他数据集上套用该模板也是十分容易的。同时因为xgboost,lightgbm,catboost。三个类库调用方法都比较一致,所以在本部分结束之后,我们有理由相信,你将会学会在这三个类库上使用hyperopt。除此之外要额外说明的是,本文并不涉及交叉验证的问题,交叉验证请查看其...原创 2018-12-17 10:26:17 · 6346 阅读 · 17 评论 -
Python实现 灰色关联分析 与结果可视化
灰色系统理论提出了对各子系统进行灰色关联度分析的概念,意图透过一定的方法,去寻求系统中各子系统(或因素)之间的数值关系。因此,灰色关联度分析对于一个系统发展变化态势提供了量化的度量,非常适合动态历程分析。原创 2018-06-07 13:21:45 · 54600 阅读 · 143 评论 -
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 · 33874 阅读 · 1 评论 -
机器学习中的数据集划分问题
留出法(hold-out)使用 n:m and n + m =1 的形式对原数据进行分割,例如 train : test = 7 : 3 or train : test = 6.5 : 3.5 但是这种相对原始的处理方式效果并不好,缺点如下: 缺点一:浪费数据缺点二:容易过拟合,且矫正方式不方便这时,我们需要使用另外一种分割方式-交叉验证 或者 留P法(leave P out)原创 2018-01-31 17:07:55 · 8219 阅读 · 0 评论 -
Gradient Tree Boosting:梯度提升树详解
理论数学推导请参考《统计机器学习》-李航,或者参考sklearn的官方文档,下面是我的部分笔记,也可以作为参考优缺点GBRT是对任意的可微损失函数的提升算法的泛化,即可回归亦可分(sai)类(ting)。 优点: 1. 对混合数据的的天然处理能力 2. 强大的预测能力(主要指算法本身的能力强大,一般性能好) 3. 在输出空间中对异常点的鲁棒性(通过具有鲁棒性的原创 2018-01-26 22:02:09 · 11261 阅读 · 0 评论 -
集成算法中的Bagging
Bagging(Tree)相较于Tree增加了偏差,但是降低了方差,最终得到了优于Tree的模型,而同样的Bagging(Tree)_2进一步大幅度增加了偏差,但是同样的方差也大幅度下降,最终得到了效果优于Bagging(Tree)的最终模型。虽然在Bagging中引入的随机分割增加了偏差,但是因为多个模型的集成平均,同时也使得我们在总体上获取了更好的模型,在本篇文章中,我们称之为Bagging的特性一,在后面我们将会验证这一特性。原创 2018-01-16 14:16:10 · 19983 阅读 · 1 评论 -
RandomForest:随机森林
随机森林:RF随机森林是一种一决策树为基学习器的Bagging算法,但是不同之处在于RF决策树的训练过程中还加入了随机属性选择(特征上的子采样)传统的决策树在选择划分的属性时,会选择最优属性RF 首先,从该节点的属性中损及选择出K个属性组成一个随机子集(类也就是Bagging中的Random Subspaces,一般通常K=log2(n))然后再从这个子集中选择一个最右子集进行划分原创 2018-01-16 14:07:02 · 6186 阅读 · 2 评论 -
通过模型进行特征选择
第一种是基于L1的特征选择,使用L1正则化的线性模型会得到稀疏解,当目标是降低维度的时候,可以使用sklearn中的给予L1正则化的线性模型,比如LinearSVC,逻辑回归,或者Lasso。使用 Lasso,alpha 的值越大,越少的特征会被选择。特征选取并不一定升:所有特征有效的情况下,去除的特征只能带来模型性能的下降,即使不是全部有效很多时候,低重要程度的特征也并不一定代表着一定会导致模型性能的下降,因为某种度量方式并不代表着该特征的最终效果,很多时候我们的度量方式,往往只是一个参考而已.原创 2018-01-15 15:17:55 · 15285 阅读 · 7 评论 -
递归式特征消除:Recursive feature elimination
简述特征的选取方式一共有三种,在sklearn实现了的包裹式(wrapper)特诊选取只有两个递归式特征消除的方法,如下:recursive feature elimination ( RFE )通过学习器返回的 coef_ 属性 或者 feature_importances_ 属性来获得每个特征的重要程度。 然后,从当前的特征集合中移除最不重要的特征。在特征集合上不断的重复递归这个步骤原创 2018-01-08 16:57:31 · 35548 阅读 · 46 评论 -
单变量特征选择:Univariate feature selection
sklearn中的单变量特征选择单变量的特征选择是通过基于一些单变量的统计度量方法来选择最好的特征,比如卡方检测等。Scikit-learn 将单变量特征选择的学习器作为实现了 transform方法的对象:sklearn中实现的方法有:SelectKBest 保留评分最高的 K 个特征SelectPercentile 保留最高得分百分比之几的特征对每个特征应用常见的单变量统计测原创 2018-01-07 20:56:44 · 8625 阅读 · 0 评论 -
方差过滤: Removing features with low variance
方差特征选择的原理与使用VarianceThreshold 是特征选择的一个简单基本方法,其原理在于–底方差的特征的预测效果往往不好。而VarianceThreshold会移除所有那些方差不满足一些阈值的特征。默认情况下,它将会移除所有的零方差特征,即那些在所有的样本上的取值均不变的特征。例如,假设我们有一个特征是布尔值的数据集,我们想要移除那些在整个数据集中特征值为0或者为1的比例超过8原创 2018-01-07 20:54:18 · 5372 阅读 · 2 评论 -
Hyperopt官方中文文档导读
在2017年的圣诞节前,我翻译了有关HyperOpt的中文文档,这也时填补了空白,以此作为献给所有中国程序员,以及所有其他机器学习相关行业人员的圣诞礼物。圣诞快乐,各位。HyperOpt中文文档导读翻译的文档已经发布于github,请在我的项目Hyperopt_CN中的wiki查看相应文档.HyperOpt中文版wiki文档内容包括以下内容:HyperOpt中文文档导读,即真正的中文文档主页Ho原创 2017-12-23 15:56:30 · 6624 阅读 · 0 评论 -
AdaBoost算法特性
Boosting算法提升算法是一种常见的统计学习方法,其作用为将弱的学习算法提升为强学习算法.其理论基础为:强可学习器与弱可学习器是等价的.即在在学习中发现了’弱学习算法’,则可以通过某些方法将它特生为强可学习器,这是数学可证明的.在分类学习中提升算法通过反复修改训练数据的权值分布,构建一系列的基本分类器(弱分类器),并将这些基本分类器线性组合,构成一个强学习器.代表算法为Adaboost算法,ad原创 2017-12-18 16:55:06 · 3958 阅读 · 0 评论 -
sklearn中的回归决策树
sklearn中DecisionTreeRegressor的主要参数与分类决策树差异不大.唯一不太一样的是,在回归决策树中只实现了优化的gini决策树,而无法使用基于信息熵的决策树关于超参数的介绍,我们可以直接借用在分类决策树中的介绍在sklearn中我们可以用来提高决策树泛化能力的超参数主要有max_depth:树的最大深度,也就是说当树的深度到达max_depth的时候无论还有多少可以分支的特征,决策树都会停止运算.原创 2017-12-17 14:14:12 · 17692 阅读 · 2 评论 -
sklearn中的朴素贝叶斯算法
sklearn中的朴素贝叶斯分类器之前理解朴素贝叶斯中的结尾对sklearn中的朴素贝叶斯进行了简单的介绍. 此处对sklearn中的则对sklearn中的朴素贝叶斯算法进行比较详细介绍.不过手下还是对朴素贝叶斯本身进行一些补充.朴素贝叶斯算法朴素贝叶斯算法的数学基础都是围绕贝叶斯定理展开的,因此这一类算法都被称为朴素贝叶斯算法.朴素贝叶斯的分类原理是通过对象的先验概率,利用贝叶斯公式计算出后验概原创 2017-12-17 13:03:32 · 6354 阅读 · 15 评论 -
绘制决策树
绘制出决策树经过训练的决策树,我们可以使用 export_graphviz 导出器以 Graphviz 格式导出决策树. 如果你是用 conda 来管理包,那么安装 graphviz 二进制文件和 python 包可以用以下指令安装 conda install python-graphviz 或者,可以从 graphviz 项目主页下载 graphviz 的二进制文件,并从 pypi 安装 Py原创 2017-12-17 12:04:01 · 4301 阅读 · 0 评论 -
sklearn中的分类决策树
决策树决策树简介决策树是一种使用if-then-else的决策规则的监督学习方法.其三要素为,枝节点,叶节点与分支条件,同时为了减少过拟合还有剪枝方法 为了便于记忆,可以称其为一方法三要素决策树的优势便于理解和解释。树的结构可以可视化出来。训练需要的数据少。其他机器学习模型通常需要数据规范化,比如构建虚拟变量和移除缺失值,不过请注意,这种模型不支持缺失值。由于训练决策树的数据点的数量导致了决原创 2017-12-17 11:55:17 · 7970 阅读 · 4 评论 -
auto-sklearn案例解析二
度量函数-metricsauto-sklearn的度量函数是对sklearn度量函数的封装,我们即可以使用autosklearn已经封装好的metrics函数,也可以使用autosklearn的metrics函数封装器make_scorer函数封装我们自己的么metrics函数使用autosklearn已经封装好的metrics函数如果仅仅是获取的话,最简易的一种方式是直接去找源代码.你可以直接输入原创 2017-12-12 19:54:47 · 2120 阅读 · 1 评论 -
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 · 5245 阅读 · 0 评论 -
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 评论 -
auto-sklearn手册
手册本手册从几个方面说明了如何使用auto-sklearn。并且 尽可能引用的例子来解释某些配置。官网首页.官网中文翻译例子auto-sklearn 下面的例子演示几个 方面的用法,他们都位于github:Holdout交叉验证并行计算按照时序使用回归连续和分类数据使用自定义指标时间和内存限制auto-sklearn 的一个重要功能时限制内存与时间的使用。特别是对于大型数据集,算法可翻译 2017-12-12 19:44:53 · 10433 阅读 · 2 评论 -
理解朴素贝叶斯
前言在对我的数据科学与人工智能小组的新人进行小规模授课时讲课内容整理,有改动和删减.这可能是目前网络上最全面也最简单易懂的有关朴素贝叶斯的文章有关贝叶斯的一些闲谈无论是在生活中还是我们的科学理论中,经常会估计概率.比如,我们计算一下明天下雨的概率,或者中彩票的概率,或者其他概率.概率就是可能性. 但是在人工智能领域关于概率的问题却产生了两个不同的流派,那就是贝叶斯派和频率学派.频率学派认为万物发展原创 2017-12-08 14:41:12 · 2104 阅读 · 3 评论 -
机器学习数据集
前言数据集算是比较重要的学习资料了吧,在这里汇总一些好用的数据集以便使用, 关于一些内容可以参考一下知乎的提问UCI常用数据集UCI 一个不错的数据集下载网站 此处介绍几个点击;想比较高的数据集,后面有下载和存储的代码以及有关问题的说明.使用方式点击官方网站,你可以看到以下内容 可以看到右边有两个排行榜,最右边的是历史点击率的排行榜,位于该榜左边的也就是网页中间的是最新捐赠原创 2017-12-08 09:26:53 · 10945 阅读 · 0 评论 -
Rosonblatt线性感知器
前叙读前简介机器学习的流派很多,现在比较流行的便是联结学派,其计算的重点在于权重更新,而其它学派比如贝叶斯学派,基于统计学,进化学派则注重结构学习.本篇博客以线性感知器为基础,将会对神经网络与一些机器学习算法进行介绍,如果你只想简单的了解,那么可以浏览一遍即可,当然你也可以花费些时间读这篇文章,那么你也可以受益许多.神经网络与联结学派神经网络就是联结学派的”原创 2017-11-17 12:02:18 · 885 阅读 · 0 评论 -
Python自定义:粒子群优化算法
#!usr/bin/env python#-*- coding:utf-8 _*-"""@author:fonttian @file: 粒子群优化算法.py@time: 2017/10/15"""# References from : http://blog.csdn.net/kunshanyuz/article/details/63683145import numpy as npim原创 2017-10-16 20:58:59 · 3649 阅读 · 0 评论 -
deap实战_2017中国数学建模大赛_B题_第二题
简介原问题是给出一个定价策略,证明其相较于原来定价策略的优点.那么首先我们第一题第二问得到了一个 价格-完成率 函数,此时我们需要的是给出一个新的定价函数,并利用遗传算法得到最佳参数.思路编码–>我们需要编码的是定价函数的参数评价函数—->将编码输入的定价函数得到价格,然后将价格输入之前得到的 价格-完成率 函数得到完成率求解的目标应当是最大化完成率为了控制成本需要对价格进行一定的限制,避免原创 2017-10-16 20:37:07 · 5077 阅读 · 4 评论 -
Deap : 遗传算法算法解决 背包问题
特殊自定义评价函数同前def evalKnapsack(individual): weight = 0.0 value = 0.0 for item in individual: weight += items[item][0] value += items[item][1] if len(individual) > MAX_ITEM原创 2017-10-16 20:02:58 · 5430 阅读 · 0 评论 -
Deap: 粒子群优化算法
Source Code#!usr/bin/env python#-*- coding:utf-8 _*-"""@author:fonttian @file: Particle Swarm Optimization Basics.py @time: 2017/10/15 """# ----------------------Modules----------------------im原创 2017-10-16 19:41:02 · 3307 阅读 · 1 评论 -
Deap: python中的遗传算法工具箱
也就是设计主程序的地方,按照官网给的模式,我们要早此处设计其他参数,并设计迭代和取值的代码部分,并返回我们所需要的值.''''''print(" Evaluated %i individuals" % len(pop)) # 这时候,pop的长度还是300呢要注意的地方就是,官网中给出的Overview代码中有一行代码是错误的,需要把一个数据类型(map)转换为list.原创 2017-10-16 19:35:33 · 23095 阅读 · 10 评论 -
sklearn中的Pipline(流水线学习器)
简介管道机制实现了对全部步骤的流式化封装和管理(streaming workflows with pipelines)。管道机制(也有人翻译为流水线学习器?这样翻译可能更有利于后面内容的理解)在机器学习算法中得以应用的根源在于,参数集在新数据集(比如测试集)上的重复使用。使用管道机制可以大幅度减少代码量.总的来说这是一个非常实用而有趣的方法注意:管道机制更像是编程技巧的创新,而非算法的创新。 通原创 2017-10-14 14:37:27 · 5760 阅读 · 0 评论