分类回归树什么时候不能反映数据的真实趋势

  

本质上lightgbm和xgboost都是基于分类回归树集成的学习算法,所以他们也会有一些先天缺陷:

  

当训练数据的特征都集中在一个区间内,而测试数据偏离该区间较大时会出现不能拟合的情况,根本原因是因为分类回归树对于某一个叶子节点上的数据的目标值是采取该叶子节点的目标值均值做梯度提升最终确定预测值的。

  

比如我有个数据如下:
x, y
1, 1
2、2
3, 3
4, 4
5、5
6、6
7、7
8、8
9, 9
,
10 11日11日
12日12
13日13
14日14日
15日,15日
16日16
17日17日
18岁,18
19日19日
20日20
21日21日
22日22日
23日23日
24日24日
25日
25日26日
26日27日,27日
28日28日
这个非常明显是y=x
如果输入测试数据x=200 y应该是200

  

但是你用下面的程序测试,发现怎么调参数都不能得200到
因为分类回归树将这些数据分到若干个叶子节点上时候,采用的目标值最大只有28岁,他没有再根据特征做线性关系的拟合。程序如下:

  
 <代码>熊猫作为pd导入
  进口lightgbm恋
  
  path_train=" data.csv "
  train1=pd.read_csv (path_train)
  testlist=[[200]]
  
  #采用激光回归预测模型,具体参数设置如下
  model_lgb=lgb.LGBMRegressor(客观=毓椤?num_leaves=28日
  learning_rate=0.1, n_estimators=2000,
  bagging_fraction max_bin=28日=0.8,
  bagging_freq=5, feature_fraction=0.2319,
  feature_fraction_seed=9, bagging_seed=9,
  min_data_in_leaf=10, min_sum_hessian_in_leaf=100
  max_depth=10)
  #训练,预测
  model_lgb.fit (train1 [[x]] .fillna (1) train1 [y])
  test1=pd.DataFrame (testlist)
  test1。列=[' x ']
  y_pred=model_lgb.predict (test1 [[x]] .fillna (1))
  打印(y_pred)
  打印(“恋成功”) 
  

套用一句话就是“没有见过星空的民族。怎会有遨游宇宙的梦想“
所以并不是什么数据都可以直接往lightgbm, xgboost里面灌的,要注意分析这个新的预测的数据的特征是否在训练数据集的特征的空间范围内。
不然挖掘的时候应该采用其他的方法分析,例如线性回归,或者将上面的博客的分类回归树底层加一个线性回归。

分类回归树什么时候不能反映数据的真实趋势