大师兄的数据分析学习笔记(二十三):人工神经网络
大师兄的数据分析学习笔记(二十五):聚类(一)
一、回归树
- 回归树是决策树的一种算法,但回归的值是连续值。
- 与分类树不同,回归树的每个节点(包括叶子节点和中间节点),都会得到预测值。
- 一般这个预测值就是这些连续标注的平均值。
- 对特征进行分类,切分属性的依据不再是熵或基尼系数,而是最小方差。
- 也就是说在根据某一个属性切分后,必须要满足两部分的方差的和是最小的。
- 之后就可以套用其它特征进行同样的过程,直到满足回归树的停止条件。
- 停止条件可以是剪枝的限制、叶子最大样本数量等等。
- 如果要进行预测,顺着回归树的特征到叶子节点,取叶子节点的平均值作为预测值。
二、提升树
- 提升树的构建基于回归树,提升树中以梯度提升决策树(GBDT)的预测效果最好。
- 梯度提升决策树是一种集成方法:
- 其中第一棵树是一个弱集成器,拟合效果误差较大。
- 下一个棵树的标签,是上一棵预测后,与原标签的差分值。
- 重复第二步直到结束。
- 详细算法如下:
| Setting | Loss Function | ![]() |
|---|---|---|
| Regression | ![]() |
![]() |
| Regression | ![]() |
![]() |
| Regression | Huber | for ![]() for ![]() where ![]() |
| Classification | Deviance | kth component:![]() |
其中:
是实际值。
代表预设值,希望预设值更小,所以与
相减。
三、代码实现
>>>import os >>>import pandas as pd >>>import numpy as np >>>from sklearn.model_selection import train_test_split >>>from sklearn.metrics import accuracy_score,recall_score,f1_score >>>from sklearn.ensemble import GradientBoostingClassifier >>>models = [] >>>models.append(("GBDT",GradientBoostingClassifier(max_depth=6,n_estimators=100))) >>>df = pd.read_csv(os.path.join(".", "data", "WA_Fn-UseC_-HR-Employee-Attrition.csv")) >>>X_tt,X_validation,Y_tt,Y_validation = train_test_split(df.JobLevel,df.JobSatisfaction,test_size=0.2) >>>X_train,X_test,Y_train,Y_test = train_test_split(X_tt,Y_tt,test_size=0.25) >>>for clf_name,clf in models: >>> clf.fit(np.array(X_train).reshape(-1,1),np.array(Y_train).reshape(-1,1)) >>> xy_lst = [(X_train,Y_train),(X_validation,Y_validation),(X_test,Y_test)] >>> for i in range(len(xy_lst)): >>> X_part = xy_lst[i][0] >>> Y_part = xy_lst[i][1] >>> Y_pred = clf.predict(np.array(X_part).reshape(-1,1)) >>> print(i) >>> print(clf_name,"-ACC",accuracy_score(Y_part,Y_pred)) >>> print(clf_name,"-REC",recall_score(Y_part,Y_pred,average='macro')) >>> print(clf_name,"-F1",f1_score(Y_part,Y_pred,average='macro')) >>> print("="*40) 0 GBDT -ACC 0.31746031746031744 GBDT -REC 0.25609813587629976 GBDT -F1 0.1933613852394503 ======================================== 1 GBDT -ACC 0.29931972789115646 GBDT -REC 0.22676837725381413 GBDT -F1 0.173353927942814 ======================================== 2 GBDT -ACC 0.2925170068027211 GBDT -REC 0.2583216292134831 
![\frac{1}{2}[y_i-f(x_i)]^2](https://file.ai-club.cn/2026/10/30/da3137a9dbf647d28f7838e6dd8fd7b4.jpg)


![sign[y_i-f(x_i)]](https://file.ai-club.cn/2026/10/30/d8a5b37706ba4a32bb2d90f2739b8a8e.jpg)
for 
for 


是实际值。
代表预设值,希望预设值更小,所以与
相减。