回归- 决策树
来源:互联网 发布:java 标记方法过时 编辑:程序博客网 时间:2024/05/22 04:54
1.概述
CART, Classification And Regression Tree, 分类与回归树. 该模型由Breiman等人在1984年提出.
该模型中决策树是二叉树, 每个内部节点对应一个二元判断, 判断为 ‘真’, 走左子树, 否则走右子树.
1.2 GBDT
GBDT, Gradient Boosting Decision tree. 梯度提升决策树.
使用提升树的集成学习boosting思想, 使用梯度下降的优化方法, 以CART树做模型.
2. 思想
类似于分类决策树中, 通过信息熵
度量分布的随机情况. 回归树中, 用方差总和
(即方差*该集合中样本数) 来度量.
公式
argminj,s[∑xi∈R1(j,s)(yi−y¯)2+∑xi∈R2(j,s)(yi−y¯)2](1)
其中s∈特征集合,j∈s特征下的取值集合,R1,R2为切分特征s与切分值j切分后的两个子样本集 .伪代码
for 特征i in 特征集合: for 特征取值j in 特征i的取值集合: 在 特征i 维度依据 取值j 将集合划分成两部分A与B 计算切分后的误差x if( 该轮误差 <上轮误差): split_feature=特征i split_value=取值j依据split_feature,split_value划分集合得到A B,得到左右子树,再递归地使用上述步骤建立完整的树.
3.代码
"""回归决策树主要方法为chooseBestSplit(), 依靠它递归地创建二叉树.该代码体现了大致思想, 实际中还需要 tolN=切分的最小样本数, tolS=允许的最小误差下降值 来决定该次划分是产生叶子节点还是递归划分下去."""import numpy as npimport pandas as pddf=pd.read_csv('D:/code-study/py/diy/regression_problem_training_set.csv')X = df.loc[:, ['feature1','feature2']]y= np.ravel(df.loc[:, ['label']])def chooseBestSplit(X,y): ''' 选择最佳split_feature和split_value :param X: :param y: :return: split_feature,split_value ''' min_total_error=float('inf') # 双层for循环 for feature in X.columns: series_of_feature=X[feature] for value in set(series_of_feature): X1,y1,X2,y2=split_by_feature_and_value(X,y,feature,value) total_error=calc_error(y1)+calc_error(y2) if(total_error<min_total_error): min_total_error=total_error split_feature=feature split_value=value return split_feature,split_valuedef split_by_feature_and_value(X,y,split_feature,split_value): ''' 依照split_feature,split_value, 切分数据集 :param X: :param y: :return: 切分后的 X1,y1,X2,y2 ''' tmp=X.copy() tmp['label']=y tmp1=tmp[tmp[split_feature]>split_value] tmp2=tmp[tmp[split_feature]<=split_value] X1=tmp1.drop('label',1) # 在axis=1的维度上扔掉'label'列 y1=tmp1['label'] X2=tmp2.drop('label',1) y2=tmp2['label'] return X1,y1,X2,y2def calc_error(y): ''' :param y: :return: 方差*元素个数 ''' return np.var(y)*len(y);print(chooseBestSplit(X,y))
改代码参考自 <<机器学习实战>>, [美] Peter Harrington, P164.
阅读全文
0 0
- 回归决策树
- 回归- 决策树
- 回归决策树
- 比较决策树和回归
- 决策树&逻辑回归
- sklearn中的回归决策树
- 决策树回归R语言实现
- CART决策树分类和回归
- 决策树之分类回归树(C&RT)
- (笔记)列联表分析,Logistic回归,到决策树
- 决策树 逻辑回归 KNN 的原理
- 决策树分类与回归(一)
- 逻辑斯蒂回归和决策树
- 机器学习决策树:sklearn分类和回归
- 决策树回归:不掉包源码实现
- 逻辑回归与决策树在分类上的一些区别
- 逻辑回归与决策树在分类上的一些区别
- 逻辑回归与决策树在分类上的一些区别
- 【Java】文件复制的各种姿势
- 放大镜
- 在使用inline-block时遇到的元素之间的间隔
- Linux下部署web项目常见的命令
- Can't connect to MySQL server on 'localhost' (10061)
- 回归- 决策树
- centos安装bison
- if,while的一点点知识 酒馆浪人的博客
- JavaScript实战演练1.2
- 在C++中定义常量的两种方法的比较
- Linux ftp账号设置
- HDFS YARN zookeeper HBASE HIVE HIVE hwi的启动
- C语言小结--数组
- 磁共振扫描安全性