决策树算法

机器学习算法之LightGBM

南楼画角 提交于 2020-02-25 13:00:33
这篇文章我们继续学习一下 GBDT 模型的另一个进化版本:LightGBM。LigthGBM是boosting集合模型中的新进成员,由微软提供,它和XGBoost一样是对GBDT的高效实现,原理上它和GBDT及XGBoost类似,都采用损失函数的负梯度作为当前决策树的残差近似值,去拟合新的决策树。 LightGBM在很多方面会比XGBoost表现的更为优秀。它有以下优势: 更快的训练效率 低内存使用 更高的准确率 支持并行化学习 可处理大规模数据 支持直接使用category特征 从下图实验数据可以看出, LightGBM比XGBoost快将近10倍,内存占用率大约为XGBoost的1/6,并且准确率也有提升。 看完这些惊人的实验结果以后,对下面两个问题产生了疑惑:XGBoost已经十分完美了,为什么还要追求速度更快、内存使用更小的模型?对GBDT算法进行改进和提升的技术细节是什么? 提出LightGBM的动机 常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。

AI算法工程师炼成之路

你。 提交于 2020-02-19 07:22:23
AI算法工程师炼成之路 面试题: l 自我介绍/项目介绍 l 类别不均衡如何处理 l 数据标准化有哪些方法/正则化如何实现/onehot原理 l 为什么XGB比GBDT好 l 数据清洗的方法有哪些/数据清洗步骤 l 缺失值填充方式有哪些 l 变量筛选有哪些方法 l 信息增益的计算公式 l 样本量很少情况下如何建模 l 交叉检验的实现 l 决策树如何剪枝 l WOE/IV值计算公式 l 分箱有哪些方法/分箱原理是什么 l 手推SVM:目标函数,计算逻辑,公式都写出来,平面与非平面 l 核函数有哪些 l XGB原理介绍/参数介绍/决策树原理介绍/决策树的优点 l Linux/C/Java熟悉程度 l 过拟合如何解决 l 平时通过什么渠道学习机器学习(好问题值得好好准备) l 决策树先剪枝还是后剪枝好 l 损失函数有哪些 l 偏向做数据挖掘还是算法研究(好问题) l bagging与boosting的区别 l 模型评估指标有哪些 l 解释模型复杂度/模型复杂度与什么有关 l 说出一个聚类算法 l ROC计算逻辑 l 如何判断一个模型中的变量太多 l 决策树与其他模型的损失函数、复杂度的比较 l 决策树能否有非数值型变量 l 决策树与神经网络的区别与优缺点对比 l 数据结构有哪些 l model ensembling的方法有哪些 来源: https://www.cnblogs.com

深度好文:回溯算法详解

坚强是说给别人听的谎言 提交于 2020-02-17 10:28:53
这篇文章是很久之前的一篇《回溯算法详解》的进阶版,之前那篇不够清楚,就不必看了,看这篇就行。把框架给你讲清楚,你会发现回溯算法问题都是一个套路。 废话不多说,直接上回溯算法框架。 解决一个回溯问题,实际上就是一个决策树的遍历过程 。你只需要思考 3 个问题: 1、路径:也就是已经做出的选择。 2、选择列表:也就是你当前可以做的选择。 3、结束条件:也就是到达决策树底层,无法再做选择的条件。 如果你不理解这三个词语的解释,没关系,我们后面会用「全排列」和「N 皇后问题」这两个经典的回溯算法问题来帮你理解这些词语是什么意思,现在你先留着印象。 代码方面,回溯算法的框架: result = [] def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择 其核心就是 for 循环里面的递归,在递归调用之前「做选择」,在递归调用之后「撤销选择」 ,特别简单。 什么叫做选择和撤销选择呢,这个框架的底层原理是什么呢?下面我们就通过「全排列」这个问题来解开之前的疑惑,详细探究一下其中的奥妙! 一、全排列问题 我们在高中的时候就做过排列组合的数学题,我们也知道 n 个不重复的数,全排列共有 n! 个。 PS: 为了简单清晰起见

决策树算法(四)

对着背影说爱祢 提交于 2020-02-04 10:24:09
8.特征提取 1 定义 将任意数据(如文本或图像)转换为可用于机器学习的数字特征 注:特征值化是为了计算机更好的去理解数据 特征提取分类: 字典特征提取(特征离散化) 文本特征提取 图像特征提取(深度学习将介绍) 2 特征提取API sklearn . feature_extraction 3 字典特征提取 作用:对字典数据进行特征值化 sklearn.feature_extraction.DictVectorizer(sparse=True,…) DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值 返回sparse矩阵 DictVectorizer.get_feature_names() 返回类别名称 3.1.使用 from sklearn . feature_extraction import DictVectorizer def dict_demo ( ) : """ 对字典类型的数据进行特征抽取 :return: None """ data = [ { 'city' : '北京' , 'temperature' : 100 } , { 'city' : '上海' , 'temperature' : 60 } , { 'city' : '深圳' , 'temperature' : 30 } ] # 1、实例化一个转换器类

PythonML-Day02: k-近邻、朴素贝叶斯、决策树、随机森林、交叉验证、网格搜索

核能气质少年 提交于 2020-01-30 20:41:55
ML-Day02: k-近邻、朴素贝叶斯、决策树、随机森林、交叉验证、网格搜索 1.数据分类 离散型数据:可以列举出 连续型数据:在区间内可任意划分,不可一一列举 2.机器学习算法分类 监督学习(预测):有特征值和目标值,有标准答案 分类[离散]:k近邻、贝叶斯、决策树与随机森林、逻辑回归、神经网络 回归[连续]:线性回归、岭回归 非监督学习: 只有特征值,没有保准答案 聚类:k-means 3.机器学习开发流程 - 原始数据: 公司本身有数据/ 合作数据/ 购买数据/ - 明确公司要做什么: 建立模型,是分类还是回归? - 数据基本的处理: pd 去处理数据(缺失值,合并表等等) - 特征工程:特征抽取/ 归一化/ 标准化/ 特征选择/ 主成分分析 - 找对应的算法去生产模型: 模型 = 算法 + 数据 - 模型的评估: 判定效果 - 评估优秀,上线使用,进行数据预测 - 评估失败,特征工程是否有问题、调参数、换算法等 4.划分数据集 - 训练集 75% - 用于训练,构建模型 - 测试集 25% - 用于检测模型,评估模型是否有效 - sklearn.model_selection.train_test_split - li = load_iris() # 注意返回值的顺序 # 训练特征值x_train # 测试特征值x_test # 训练目标值y_train # 测试目标值y

05 决策树——Python实现相应算法

自古美人都是妖i 提交于 2019-12-28 15:44:48
一、使用的数据集为: 二、《统计学习方法》中列出的算法: 1. 算法5.1(信息增益的算法) (1)算法思想: (2)python实现: # author yuxy #求信息增益的算法 #结果为:各个特征对应的信息增益为: [ 0.08300749985576883 , 0.32365019815155627 , 0.4199730940219749 , 0.36298956253708536 ] import numpy as np def information_gain ( dataSet , ASet ) : "" " 求一个数据集的信息增益 : param dataSet : 数据集 : param ASet : 特征集 : return : 返回各个特征对应的信息增益 "" " ig = [ 0 ] * len ( ASet ) # 1 经验熵 H ( D ) k = set ( dataSet [ 4 ] ) #记录类别 mark = [ 0 ] * len ( k ) for i in range ( len ( k ) ) : p = k . pop ( ) sum = 0 for j in range ( len ( dataSet [ 0 ] ) ) : if dataSet [ 4 ] [ j ] == p : sum = sum + 1 mark [ i

决策树算法(DecisionTreeClassifier)——东北大学数据挖掘实训第三次

随声附和 提交于 2019-12-27 00:51:35
1.利用决策树算法对train_feature.csv进行训练对test_feature.csv进行预测(练习调参),并计算预测正确的准确率。(由于训练数据的数据分布不平衡,所以将数据进行平衡处理,正样本保留,负样本从原负样本中取出正样本数量的n倍)说明:准确率=(测试集中预测为下载)&(测试集中实际为下载)/测试集实际为下载的数据量 import pandas as pd from sklearn import datasets from sklearn . tree import DecisionTreeClassifier from sklearn . model_selection import train_test_split , GridSearchCV import time , datetime train_df = pd . read_csv ( "C:\\Users\\zzh\\Desktop\\dataMiningExperment\\数据挖掘实训课件\\数据挖掘第3次实训\\数据\\训练和预测用数据--做题用\\train_feature.csv" ) train_df . head ( ) ip app device os channel is_attributed day hour minute ip_count app_count device

山东大学2019-2020数据仓库与数据挖掘期末考试

折月煮酒 提交于 2019-12-18 14:06:56
山东大学2019-2020数据仓库与数据挖掘期末考试 一、 1.数据分析的步骤,每个步骤都干啥 2.数据仓库的特点,解释 3.大数据4v理论 4.数据流概念,难点是什么,解决方案的特点 5.检测离群点的四种方法 二、 1、给出三个维度(item,time,location)两个度量构建星型模型 2、想要得到2017第一季度的所有品牌销售状况,进行哪些olap操作 三、 1.数据仓库的体系结构图 2.解释每个层的作用 3.数据集市的定义 4.molap的原理 四、 给出几个点,进行k-means 列出每次的聚类结果 写出第三次聚类的详细过程 五、 Fp树的构建 寻找t的条件模式基 六、 决策树的思想、两种类型是什么 给出离散化的标准,列出符合某一个标准的数据集 将决策树转化为判断过程 给出一个条件,判断是否会购买(写过程) 树中有一个?,判断?应该是什么,说出理由 七、 给出abcdef几个商品,ABCDEF几个用户 给出F喜欢的商品abd,给出用户喜欢的商品列表 1.应该用哪种推荐算法,算法思想是什么 2.应该给F推荐哪个商品 题量很大,希望能帮到要考这门课的同学 By naggy 来源: CSDN 作者: Departuresna 链接: https://blog.csdn.net/Departuresna/article/details/103595931

算法交易系统架构,此篇足矣!

限于喜欢 提交于 2019-12-11 12:07:25
https://cloud.tencent.com/developer/article/1469568 本篇推文将分三个部分由浅到深,为大家介绍算法交易系统架构的细节: 算法交易系统概述 算法交易系统要求(重点) 算法交易系统架构(超重点) 第一部分:算法交易系统概述 算法交易是使用计算机算法自动做出交易决策,提交指令并在提交后管理那些指令。算法交易系统最好使用由三个组件组成的简单概念架构来理解,这些组件处理算法交易系统的不同方面,即数据 处理程序、策略处理程序和交易执行处理程序 。这些组件与上述算法交易的定义一一映射。在今天的推文中,我们扩展这个架构来描述如何构建更智能化的算法交易系统。 概念算法交易系统 系统更智能化意味着什么?在算法交易的背景下,我们将通过系统自我适应和自我感知的程度来度量智能化。首先让我们详细说明算法交易系统概念架构中的三个组件。 数据组件 算法交易系统可以使用结构化数据、非结构化数据或者两者兼用。如果数据是按照预定结构组织的,那么它是结构化的。示例包括电子表格、CSV文件、JSON文件、XML、数据库以及数据结构。与市场相关的数据(如日内价格、日终价格和交易量)通常以结构化格式提供。经济和公司财务数据也以结构化格式提供。Quandl和Wind是两个很好的示例结构化财务数据的来源。 如果数据没有按照预定结构进行组织,那么它就是非结构化的。示例包括新闻

提升方法与梯度提升决策树

时光怂恿深爱的人放手 提交于 2019-12-05 11:43:10
提升方法与前向分步算法 提升方法 从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合这些弱学习器,提升为强学习器 两个问题: 在每一轮如何改变训练数据的权值或概率分布 如何将弱学习器组合成一个强学习器 前向分步算法 AdaBoost另一种解释: 加法模型 损失函数为指数函数 学习算法为前向分步算法 二类分类学习方法 前向分步算法(Forward Stagewise Algorithm) 考虑加法模型(additive model) \[f(x)=\sum \limits_{m=1}^M \beta_m b(x;\gamma_m) \] 其中, \(b(x;\gamma_m)\) 为基函数, \(\beta_m\) 为基函数的系数, \(\gamma_m\) 为基函数参数 给定训练数据及损失函数 \(L(y, f(x))\) 条件下,学习加法模型成为经验风险极小化即损失函数极小化问题 \[\mathop{\min} \limits_{\beta,\gamma} \sum \limits_{i=1}^N L(y_i, \beta b(x_i; \gamma)) \] 前向分步算法如下: 输入:训练集,损失函数 \(L\) ,基函数集 \(\{b(x;\gamma)\}\) 输出:加法模型 \(f(x)\) 初始化 \(f_0(x)=0\) 对 \(m=1,2,\cdots,M\)