15- 决策回归树, 随机森林, 极限森林 (决策树优化) (算法)

决策树算法优化(一篇文章 理解) 综上所述,决策树算法虽然有一些缺点,但通过剪枝、集成学习、连续变量处理、特征选择优化以及参数调优等方法,可以有效地优化其性能,提高模型的泛化能力和预测准确性。当然,这只是一个简要的概述,对于每个优化策略,都有更深入的研究和实践可以探索。希望这对你有所启发! 阅读详情
  • 1.  决策回归树:
from sklearn.tree import DecisionTreeRegressor
model = DecisionTreeRegressor(criterion='mse',max_depth=3)
model.fit(X,y)    # X是40个点 y是一个圆
  • 2.  随机森林 + 稳定预测:
from sklearn.ensemble import RandomForestClassifier
# model = RandomForestClassifier()
# model.fit(X_train,y_train)
score = 0
for i in range(100):
    model = RandomForestClassifier()
    model.fit(X_train,y_train)
    score += model.score(X_test,y_test)/100
print('随机森林平均准确率是:',score) 
  • 3. 极限森林:
from sklearn.ensemble import ExtraTreesClassifier
clf3 = ExtraTreesClassifier(max_depth = 3)
clf3.fit(X_train,y_train)


1、决策回归树原理概述

  • 与分类树一样

  • 裂分指标,使用的是MSE、MAE

        \bg_white \small \text{MSE}(y, \hat{y}) = \frac{1}{n_\text{samples}} \sum\limits_{i=0}^{n_\text{samples} - 1} (y_i - \hat{y}_i)^2

        \text{MAE}(y, \hat{y}) = \frac{1}{n_{\text{samples}}} \sum\limits_{i=0}^{n_{\text{samples}}-1} \left| y_i - \hat{y}_i \right|

  • 决策回归树,认为它是分类问题,只是,分的类别多一些!!!

  • 只要树,分类回归,其实就是分类多和少的问题

2、决策回归树算例

2.1、决策树预测圆的轨迹

2.1.1 导包并创建数据与可视化

import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import graphviz
X = np.linspace(0,2*np.pi,40).reshape(-1,1)
X_test = np.linspace(0,2*np.pi,187).reshape(-1,1)
# y 一个正弦波,余弦波,圆
y = np.c_[np.sin(X),np.cos(X)]
plt.figure(figsize=(3,3))
plt.scatter(y[:,0],y[:,1])

2.1.2 使用线性回归预测,看效果

linear = LinearRegression()
linear.fit(X,y) #将数据交给算法,学习,希望算法,找到规律
# X ----> y 是一个圆;预测X_test返回值y_ 如果预测好,也是圆
y_ = linear.predict(X_test)
plt.figure(figsize=(3,3))
plt.scatter(y_[:,0],y_[:,1])

 2.1.3 使用决策树回归,看效果

model = DecisionTreeRegressor(criterion='mse',max_depth=3)
model.fit(X,y)#X 是40个点 y是一个圆
y_ = model.predict(X_test) #X_test是187点,预测y_应该是一个圆
# 请问y_中有多少数据???
print(y_.shape)
plt.figure(figsize=(6,6))
plt.scatter(y_[:,0],y_[:,1],color = 'green')
plt.savefig('./3-决策树回归效果.png',dpi = 200)

2.1.4 决策回归树可视化

# 决策树形状
dot_data = tree.export_graphviz(model,filled=True)
graph = graphviz.Source(dot_data)
graph.render('./1-决策回归树')

 因为决策树深度是3,所以最终得到8个叶节点,所以分成8类!

2.2、增加决策树深度

model = DecisionTreeRegressor(criterion='mse',max_depth=4)
model.fit(X,y)#X 是40个点 y是一个圆
y_ = model.predict(X_test) #X_test是187点,预测y_应该是一个圆
# 请问y_中有多少数据???
print(y_.shape)
plt.figure(figsize=(6,6))
plt.scatter(y_[:,0],y_[:,1],color = 'green')
plt.savefig('./4-增加深度决策树回归效果.png',dpi = 200)
# 决策树形状
dot_data = tree.export_graphviz(model,filled=True)
graph = graphviz.Source(dot_data)
graph.render('./5-增加深度决策回归树')

2.3、决策回归树分裂原理剖析

以上面深度为3的决策树为例

1、计算未分裂时,整体MSE:

\text{MSE}(y, \hat{y}) = \frac{1}{n_\text{samples}} \sum\limits_{i=0}^{n_\text{samples} - 1} (y_i - \hat{y}_i)^2

mse = ((y - y.mean(axis = 0))**2).mean()
print('未分裂时,整体MSE:',mse)

2、根据分裂标准X[0] <= 3.142,计算分裂后的MSE:

cond = X <= 3.142
part1 = y[cond.reshape(-1)]
part2 = y[(~cond).reshape(-1)]
mse1 = ((part1 - part1.mean(axis = 0))**2).mean()
mse2 = ((part2 - part2.mean(axis = 0))**2).mean()
print(mse1,mse2)

3、寻找最佳分裂条件:

split_result = {}
mse_lower = 0.5
for i in range(len(X) - 1):
    split = round(X[i:i + 2].mean(),3)
    cond = X <= split
    part1 = y[cond.reshape(-1)]
    part2 = y[(~cond).reshape(-1)]
    mse1 = ((part1 - part1.mean(axis = 0))**2).mean()
    mse2 = ((part2 - part2.mean(axis = 0))**2).mean()
    mse = mse1 * len(part1)/cond.size + mse2 * len(part2)/cond.size
    mse_result.append(mse)
    if mse < mse_lower:
        split_result.clear()
        split_result[split] = [i,mse]
        mse_lower = mse
print('最佳分裂条件:',split_result)

根据打印输出,我们知道最佳裂分,索引是:19。分裂条件是:3.142。

结论:和直接使用决策回归树绘图显示的结果一模一样~

3、决策回归树 VS 线性回归

1、加载数据  (糖尿病数据)

import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn import tree
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
diabetes = datasets.load_diabetes()#糖尿病
X = diabetes['data']
y = diabetes['target']
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 911)

2、线性回归表现

linear = LinearRegression()
linear.fit(X_train,y_train)
linear.score(X_test,y_test)    # 0.41394315401409987

3、决策树回归表现

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'STKaiti'
max_depth = np.arange(1,16)
score = []
for d in max_depth:
    model = DecisionTreeRegressor(max_depth = d)
    model.fit(X_train,y_train)
    score.append(model.score(X_test,y_test))
plt.plot(max_depth,score,'ro-')
plt.xlabel('max_depth',fontsize = 18)
plt.ylabel('Score',fontsize = 18)
plt.title('决策树准确率随着深度变化',pad = 20,fontsize = 20)
plt.savefig('./6-决策树回归糖尿病.png',dpi = 200)

4、结论

  • 对于这个案例,线性回归效果更好一些

  • 糖尿病这个数据,更适合使用方程对规律进行拟合

  • 在很多方面,决策树回归表现也优秀~

4、集成算法

4.1、集成算法概述

集成算法核心:

  • 少数服从多数,人多力量大,三个臭皮匠顶个诸葛亮。

聚合模型:

  • 所有朋友的意见投票, 少数服从多数(随机森林对应原理公式)

G(x) = \frac{1}{n}\sum\limits_{i =1}^n1 \times g_i(x)

  • 牛一点的朋友多给几票,弱鸡一点的少给几票(Adaboost对应原理公式)

G(x) = \frac{1}{n}\sum\limits_{i =1}^n \alpha_i \times g_i(x) ;\alpha_i \ge 0

4.2、构造不同模型(朋友)

  • 同样的数据,行列都相同,不同的超参数,可以得到不同的模型。
  • 同样的超参数,行相同,列不同,可以得到不同的模型。
  • 同样的超参数,行不同,列相同,可以得到不同的模型。
  • 同样的超参数,同样的数据,但是数据权重不同,可以得到不同的模型。

4.3、集成算法不同方式

  • 方式一Bagging(套袋法)

    • 对训练集进行抽样, 将抽样的结果用于训练 g(x)。

    • 并行,独立训练。

    • 随机森林random forest便是这一类别的代表。

  • 方式二Boosting(提升法)

    • 利用训练集训练出模型,根据本次模型的预测结果,调整训练集。

    • 然后利用调整后的训练集训练下一个模型。

    • 串行,需要第一个模型。

    • Adaboost,GBDT,Xgboost都是提升树算法典型代表。

4.4、Bagging集成算法步骤

  1. Bootstrap(独立自主) : 有放回地对原始数据集进行均匀抽样

  2. 利用每次抽样生成的数据集训练模型

  3. 最终的模型为每次生成的模型进行投票

  4. 其实 boosting 和 bagging 都不仅局限于对决策树这种基模型适应

  5. 如果不是同一种 base model,也可以做集成算法

5、随机森林

5.1、随机森林介绍

Bagging 思想 + 决策树就诞生了随机森林。

随机森林,都有哪些随机?

  • bagging生成一颗决策树时,随机抽样

  • 抽样后,分裂时,每一个结点都随机选择特征,从部分特征中筛选最优分裂条件

5.2、随机森林实战

1、导包加载数据

import numpy as np
from sklearn import tree
from sklearn import datasets
from sklearn.model_selection import train_test_split
import graphviz
# ensemble 集成
# 随机森林
from sklearn.ensemble import RandomForestClassifier
# 作为对照
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
# 加载数据
X,y = datasets.load_iris(return_X_y=True)
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 112)

2、普通决策树

score = 0
for i in range(100):
    X_train,X_test,y_train,y_test = train_test_split(X,y)
    model = DecisionTreeClassifier()
    model.fit(X_train,y_train)
    score += model.score(X_test,y_test)/100
print('随机森林平均准确率是:',score)   #  0.9486842105263149

3、随机森林(运行时间稍长,10s)

score = 0
for i in range(100):
    X_train,X_test,y_train,y_test = train_test_split(X,y)
    model = RandomForestClassifier()
    model.fit(X_train,y_train)
    score += model.score(X_test,y_test)/100
print('随机森林平均准确率是:',score)   # 随机森林平均准确率是: 0.9457894736842095

结论:

  • 和决策树对比发现,随机森林分数稍高,结果稳定

  • 即降低了结果方差,减少错误率

4、逻辑斯蒂回归

import warnings
warnings.filterwarnings('ignore')
score = 0
for i in range(100):
    X_train,X_test,y_train,y_test = train_test_split(X,y)
    lr = LogisticRegression()
    lr.fit(X_train,y_train)
    score += lr.score(X_test,y_test)/100
print('逻辑斯蒂回归平均准确率是:',score)   #  0.9602631578947363

结论:

  • 逻辑斯蒂回归这个算法更加适合鸢尾花这个数据的分类

  • 随机森林也非常优秀

5.3、随机森林可视化

1、创建随机森林进行预测

X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 9)
forest = RandomForestClassifier(n_estimators=100,criterion='gini')
forest.fit(X_train,y_train)
score1 = round(forest.score(X_test,y_test),4)
print('随机森林准确率:',score1)         # 1.0
print(forest.predict_proba(X_test))

2、对比决策树

X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 112)
model = DecisionTreeClassifier()
model.fit(X_train,y_train)
print('决策树准确率:',model.score(X_test,y_test))
proba_ = model.predict_proba(X_test)
print(proba_)

总结:

  • 一般情况下,随机森林比决策树更加优秀

  • 随机森林,是多棵树投票的概率,所以predict_proba()概率值,出现0.97

  • 单一决策树,不是,通过投票,而是通过决策树叶节点分类,所以概率要么是0,要么是1

3、绘制决策树

dot_data = tree.export_graphviz(forest[0],filled=True)
graph = graphviz.Source(dot_data)
graph

# 第五十颗树类别
dot_data = tree.export_graphviz(forest[49],filled=True)
graph = graphviz.Source(dot_data)
graph

# 第100颗树类别
dot_data = tree.export_graphviz(forest[-1],filled=True)
graph = graphviz.Source(dot_data)
graph

5.4、随机森林总结

随机森林主要步骤:

  • 随机选择样本(放回抽样);

  • 随机选择特征;

  • 构建决策树;

  • 随机森林投票(平均)

优点:

  • 表现良好

  • 可以处理高维度数据(维度随机选择)

  • 辅助进行特征选择

  • 得益于 Bagging 可以进行并行训练

缺点:

  • 对于噪声过大的数据容易过拟合

6、极限森林

6.1、极限森林介绍

极限森林,都有哪些随机?

  • 极限森林中每一个决策树都采用原始训练集

  • 抽样后,分裂时,每一个结点分裂时,都进行特征随机抽样(一部分特征作为分裂属性)

  • 从分裂随机中筛选最优分裂条件

6.2、极限森林实战

1、加载数据

import warnings
warnings.filterwarnings('ignore')
import numpy as np
from sklearn.ensemble import RandomForestClassifier,ExtraTreesClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
from sklearn.model_selection import train_test_split
import graphviz
from sklearn import tree

# 加载数据
X,y = datasets.load_wine(return_X_y=True)
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 119)

2、单棵决策树

clf = DecisionTreeClassifier()
clf.fit(X_train,y_train)
print('单棵决策树得分:',clf.score(X_test,y_test))  # 0.9555555555555556
print('数据特征:',clf.n_features_)    # 13
print('节点分裂选择最大特征数量:',clf.max_features_)  # 13

3、随机森林

clf2 = RandomForestClassifier()
clf2.fit(X_train,y_train)
print('随机森林得分:',clf2.score(X_test,y_test))  #  1.0
print('数据特征:',clf2.n_features_)   # 13
for t in clf2:
    print('节点分裂选择最大特征数量:',t.max_features_)    # 3

4、极限森林

clf3 = ExtraTreesClassifier(max_depth = 3)
clf3.fit(X_train,y_train)
print('极限森林得分:',clf3.score(X_test,y_test))
print('数据特征:',clf3.n_features_)
for t in clf3:
    print('节点分裂选择最大特征数量:',t.max_features_)

5、可视化

dot_data = tree.export_graphviz(clf3[0],filled=True)
graph = graphviz.Source(dot_data)

dot_data = tree.export_graphviz(clf3[49],filled=True)
graph = graphviz.Source(dot_data)

6、分裂标准代码演练

6.1、计算未分裂gini系数

count = []
for i in range(3):
    count.append((y_train == i).sum())
count = np.array(count)
p = count / count.sum()
gini = (p * (1 - p)).sum()
print('未分裂,gini系数是:',round(gini,3))  # 未分裂,gini系数是: 0.653

6.2、根据属性寻找最佳分裂条件

f = np.sort(X_train[:,11])
gini_lower = 1
best_split = {}
for i in range(len(f) - 1):
    split = round(f[i:i + 2].mean(),3)
    cond = X_train[:,11] <= split
    part1 = y_train[cond]
    part2 = y_train[~cond]
    # 计算每一部分的gini系数
    count1 = []
    count2 = []
    for j in range(3):
        count1.append((part1 == j).sum())
        count2.append((part2 == j).sum())
    count1,count2 = np.array(count1),np.array(count2)
    p1 = count1 / count1.sum()
    p2 = count2 / count2.sum()
    gini1 = round((p1 * (1 - p1)).sum(),3)
    gini2 = round((p2 * (1 - p2)).sum(),3)
    # 计算整体的gini系数
    gini = round(gini1 * count1.sum()/(y_train.size) + 
                 gini2 * count2.sum()/(y_train.size),3)
    if gini < gini_lower:
        gini_lower = gini
        best_split.clear()
        best_split[j] = split
    print(split,gini1,gini2,gini,count1,count2)
print(best_split,gini_lower)

结论:

  • 通过打印输出可知,极限森林分裂条件,并不是最优的

  • 并没有使用gini系数最小的分裂点

  • 分裂值,具有随机性,这正是极限森林的随机所在!

常见的机器学习算法(十)决策树、随机森林、极限树 直接调用sklearn的API: from sklearn import tree #决策树分类器# module = tree.DecisionTreeClassifier(criterion='gini') module.fit(x, y) module.score(x, y) module.predict(test) from sklearn.datasets import load_iris from sklearn.tree . 阅读详情

相关推荐

空间分析三大核心算法:随机森林、GWR与DBSCAN实战指南

空间分析是地理信息系统(GIS)、遥感、城市科学和环境建模的基础技术能力,其核心在于处理兼具属性与位置特征的地理数据。理解空间自相关、空间非平稳性与密度异质性等基本原理,是构建可靠模型的前提。随机森林凭借对高维异构空间特征的鲁棒性,成为预测建模的稳定器;地理加权回归(GWR)通过局部参数估计,有效应对空间非平稳性带来的解释失效;DBSCAN则基于密度与距离双重约束,在噪声密集的真实地理场中自动识别有意义的空间聚类。三者分别解决变量混杂、参数恒定假设失真、先验结构缺失等典型工程痛点,广泛应用于国土监测、房价建

abo1977的博客 435

【决策树】理解、构建和优化

决策树是一种基于树状结构的分类和回归算法,可以用于处理带有标签的数据集。它可以帮助我们理解数据集中各个特征之间的关系,并推断出哪些特征最重要。决策树在零散、复杂和非线性数据上表现得比较好,因此常被广泛应用于金融、医疗、电商等领域。

Shea_Qiu的博客 1214

【python】蜜蜂算法优化决策树回归的超参数

蜜蜂算法是一种基于蜜蜂的群体行为模拟的解优算法。其灵感来源于蜜蜂在寻找食物、建筑巢穴等任务中的群体行为。蜜蜂算法通过对这种行为的模拟来实现搜索空间中最优解的寻找。蜜蜂算法的基本思想是,将参数空间视为蜂巢,并在参数空间中展开搜索,将搜索任务分配给一群“蜜蜂”。每个“蜜蜂”在搜索空间中进行搜索,并与其他蜜蜂共享其搜索结果。通过某些操作,蜜蜂会找到最优解并返回给算法,最终获得全局最优解。蜜蜂算法的优点是可以在大型搜索空间中有效运行,同时能够克服局部最优解。

weixin_48618536的博客 627

随机森林(randomForest)和极限树或者叫做极端随机树(extraTree),

随机森林:是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。,随机森林对回归的结果在内部是取得平均 但是并不是所有的回归都是取的平均,有些是取的和,以后会发博文来解释这样的一个现象,需要整理些资料出来。 随机森林里的随机包含的意思是: 样本随机 特征随机 参数随机 模型随机(ID3 ,C4.5) 极限树/极端随机树里的随机包含的意思是: 特征随机 参...

lc574260570的博客 4万+

【信息科学与工程学】计算机科学与自动化——第十六篇 GPU 05 工艺(3)

序号工艺工序名称工艺步骤核心参数其他参数关键部件及原材料控制指标加工设备类型加工工艺/技巧1衬底准备​1.1 硅晶圆清洗 1.2 热氧化生长薄SiO₂层(1-5nm) 1.3 衬底温度稳定温度: 600-800°C 厚度: 1-5nm 表面粗糙度: <0.2nm晶向: (100) 晶圆尺寸: 300mm 掺杂浓度: 1-10 Ω·cm p型Si晶圆、O₂气体、清洗液(SC1/SC2)氧化层厚度均匀性(±0.1nm) 界面态密度(Dit)<1e10 cm⁻²eV⁻¹清

weixin_49199313的博客 1326

转录组数据提取技巧汇总

数据整理是数据分析的前提,而数据的正确提取则是数据整理的前提。

zfyyzhys的博客 1781

回归树入门:用‘如果…那么…’思维理解机器学习

回归树是机器学习中最基础、最可解释的预测模型,其核心思想是通过递归分组实现数值预测,而非依赖复杂数学公式。它基于业务决策逻辑,将连续目标变量按特征阈值离散化为多个局部均值,天然适配存在断点规则的实际场景(如运营时段、促销周期、天气阈值)。相比线性模型,回归树不假设数据平滑,更擅长捕捉隐性分段关系与非线性交互;其分裂准则(如方差最小)背后实为业务可解释性、数据稳定性与计算效率三重约束的平衡。作为XGBoost、随机森林等集成方法的基学习器,回归树既是可落地的独立工具,也是理解更复杂AI模型的思维起点。

weixin_33713503的博客 375

txt经纬度批量转面要素(附自定义ArcGIS工具箱方法)

当涉及大量txt坐标文件需要转换成面要素的时候,逐步操作工作量较大。本文由需求出发,以ArcGIS10.2为例,采用python脚本自定义ArcGIS工具,实现批量操作的目的。

m0_59216200的博客 1818

顺丰科技算法岗笔试复盘:从机器学习基础到物流场景的考点全解析

在算法岗求职中,笔试环节往往侧重于考查候选人对机器学习、深度学习等核心概念的理解深度与工程判断力。不同于纯编程考核,客观题更考验对算法原理的精准辨析,例如损失函数设计、正则化机制、模型对比及特征工程等基础知识点。深入理解偏差方差权衡、L1稀疏性来源、梯度下降变种等底层逻辑,不仅是应对笔试的关键,也是实际业务建模的基本功。随着物流科技与产业数字化的推进,算法工程师需要将通用模型能力与具体场景结合,如分拣识别、路径优化、异常检测等,通过场景化思考提升技术落地的有效性。本文以一场典型的技术笔试为线索,系统梳理概率

weixin_30321449的博客 391

python音频信号分析

声音以具有诸如频率、带宽、分贝等参数的音频信号的形式表示,典型的音频信号可以表示为幅度和时间的函数

MAY的博客 2785

单片机通识之UART通信协议(如何用汇编实现)

使用汇编实现UART通信

smart_num_1的博客 996

数学建模竞赛深度复盘:从问题拆解到模型调优的通用心法

数学建模是解决复杂现实问题的核心方法,其本质是通过数学语言抽象描述问题,并利用算法模型寻找最优解。从原理上看,它融合了统计分析、优化理论与机器学习等多领域技术,通过模型构建、求解与验证的闭环流程实现问题转化。在技术价值层面,数学建模能力已成为数据分析、决策支持和科研创新的基础,能有效提升解决不确定性问题的系统思维。其应用场景广泛覆盖金融风控、供应链优化、科学研究及工业设计等领域。本文聚焦于数学建模竞赛的实战复盘,深入探讨了**模型融合**与**参数调优**等关键技术环节,为参赛者提供从问题拆解到模型优化的完

weixin_30915951的博客 332

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2095

大模型技术之机器学习

无

dangerouszzz的博客 464

北斗导航 | raPPPid软件功能模块详解

raPPPid(Rapid Precise Point Positioning with integer ambiguity resolution,快速精密单点定位与整周模糊度解算)是由维也纳工业大学(TU Wien)大地测量与地理信息系开发的MATLAB开源PPP软件包。它是VieVS(Vienna VLBI and Satellite Software,维也纳VLBI与卫星软件)的PPP模块,由Marcus Franz Glaner和Robert Weber主导开发。

尘世冰封的专栏 583

【Prometheus】prometheus结合cAdvisor监控docker容器运行状态,并且实现实时告警通知

Docker的监控,可以使用Docker自带的stats命令来获取当前主机上运行中的容器的资源使用情况。 例如:容器的CPU使用率、内存占用、网络IO以及磁盘IO等指标。

景天科技苑 6万+

游戏行业数据挖掘校招笔试全解析:从LR到业务场景

数据挖掘是游戏行业精细化运营的核心技术,通过分析玩家行为、付费模式与流失特征,支撑精准推荐、流失预警和活动策略优化。笔试通常考察经典机器学习算法原理、概率统计基础、SQL取数能力以及业务场景建模思维,其中逻辑回归、GBDT、协同过滤等是高频考点。理解算法背后的数学推导与适用边界,比追逐复杂模型更为关键;同时,能否将模糊业务问题转化为清晰的建模任务,直接体现候选人的工程实践水平。游戏公司数据岗的笔试往往模拟真实工作流,从用户留存率计算到流失预测方案设计,再到AB实验评估,考察的是完整的数据分析闭环能力。本文以

weixin_30847939的博客 428

8. Spring Ai之入门到精通(超级详细)

Spring AI 1.0.0 M1里程碑版本发布,标志着 Java 终于踏进Ai的时代半只脚。

gorgor在码农 3万+

机器学习之优化决策树

连续值处理,预剪枝和后剪枝

qq_54129718的博客 1401

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

决策树与剪枝、bagging与随机森林、极端随机树、Adaboost、GBDT算法原理详解

1、决策树 基本概念:从一组无次序、无规则的实例中推理出决策树表示形式的分类规则。 1.1 ID3 具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归调用以上方法,构建决策树。 基础概念: - 熵: 熵越大,随机变量的不确定性越大。 - 条件熵: H(Y|X)表示在已知随机变量X的条件下...

qq_29153321的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

决策树(二) CART、决策树中的超参、决策树局限性

决策树(二) CART、决策树中的超参、决策树局限性

qq_45906101的博客 1150

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

决策树超参数max_depth(最大深度)详细解析

总结起来,选择合适的max_depth值需要综合考虑模型性能、数据集大小和正则化技术。通过尝试不同的max_depth值并评估其性能,可以找到适合特定问题的最佳参数值。记住,决策树的max_depth参数是一个重要的调整参数,对模型性能有着显著影响。

AI_dataloads的博客 1万+

Spark随机森林算法对数据分类(一)——计算准确率和召回率

1.召回率和正确率计算对于一个KK元的分类结果,我们可以得到一个K∗KK*K的混淆矩阵,得到的举证结果如下图所示。 从上图所示的结果中不同的元素表示的含义如下: mijm_{ij} :表示实际分类属于类ii,在预测过程中被预测到分类jj对于所有的mijm_{ij}可以概括为四种方式不同类型的数据:TPTP(真正):真正的分类结果属于ii预测的结果也属于ii,此时对于 mijm_{ij} 而言i=

猜丁壳 1万+

随机森林&极限随机树(ensemble learning >Bagging)

随机森林与极限随机树的Python代码: from sklearn.model_selection import cross_val_score from sklearn.datasets import make_blobs from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import Extr...

Carohuan的博客 4697

机器学习之随机森林(Random forest)

随机森林是一种监督式算法,使用由众多决策树组成的一种集成学习方法,输出是对问题最佳答案的共识。随机森林可用于分类或回归,是一种主流的集成学习算法。

十年以上架构设计经验,专注于软件架构和人工智能领域,对机器视觉、NLP、音视频等领域都有涉猎 3万+

随机森林的随机性体现和优缺点

随机森林的随机性体现和优缺点1.随机性主要体现在两个方面:2.优点3.缺点: 1.随机性主要体现在两个方面: 训练每棵树时,从全部训练样本(样本数为N)中选取一个可能有重复的大小同样为N的数据集进行训练(即bootstrap取样) 在每个节点,随机选取所有特征的一个子集,用来计算最佳分割方式。 2.优点 在当前的很多数据集上,相对其他算法有着很大的优势,表现良好 它能够处理很高维度(feature很多)的数据,并且不用做特征选择 PS:特征子集是随机选择的 在训练完后,它能够给出哪些f

l491899327的博客 5978
上一篇: 14- 决策树算法 (有监督学习) (算法)
下一篇: 16- 梯度提升分类树GBDT (梯度下降优化) (算法)
处女座_三月
博客等级 码龄6年 1482粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值