昨天基本上一直在研究GBDT,主要是直接使用python的sklearn包中现成的算法,但是我在windows环境下安装这个包出现了一些问题,我最后尝试的是下载anaconda,anaconda我了解了一下是一个用于科学计算的集成开发工具,或者是环境,他已经有了很多科学计算相关的包,他的原理应该是基于virtualenv的,我这个anaconda的环境是python2.7.12,里面集成了spyder这个有点类似于matlab和R studio这种IDE,然后我小用了一下,还是比较简单便捷的
GBDT是在sklearn的ensemble包中,属于一种集成学习的思想,分为回归树和分类树
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import GradientBoostingClassifier
前者是回归树,后者是分类树
sklearn中大多数算法使用起来都很简单,都是生成一个分类器,这个分类器有很多参数,用训练集进行训练,然后用测试集进行测试,基本上所有的有监督学习都是采用这样一种套路
另外sklearn提供了一种自动划分数据集为训练集和测试集的方法,
from sklearn import cross_validation
x_train,x_test,y_train,y_test = cross_validation.train_test_split(x,y,test_size=0.3)
类似这样,x是原始的data,是一个二维的数组,y是原始target_variable,是一个一维数组,这个方法可以直接使用,没关系
model.score可以计算分类正确率
我在思考的问题就是如何把算法的输出rank order,分类树,我不清楚他分类之前是什么样一个形式,是一个probability呢?还是什么呢?如果直接用回归树如何?直接用回归树的值就行rank order可以吗?我记得当时simon叫huang做线性回归,就是输出的值进行rank order!
均方误差MSE计算形式如方差