目录

一文彻底搞懂机器学习-随机森林Random-Forest

一文彻底搞懂机器学习 - 随机森林(Random Forest)

https://i-blog.csdnimg.cn/img_convert/5db855a08b7e7f7f5ea4e96bcb52ca00.jpeg

随机森林 是机器学习中的 一种 集成学习方法 ,通过 构建多个引入随机性的决策树 来进行分类或回归预测,以提高模型的准确性和泛化能力。

随机森林集成多个决策树, 每个决策树基于自助采样数据集构建,分裂时随机选特征,最后投票(分类)或平均(回归)整合预测 ,提升准确性与泛化力。

https://i-blog.csdnimg.cn/img_convert/c59831bb3b1c588ab600ac8f8f9778cd.png

Random Forest

一、集成学习

**********集成学习(Ensemble Learning)**********是什么? 集成学习是一种机器学习技术,它通过将多个学习器的预测结果进行组合,以提高整体的预测或分类性能。

这些学习器可以是不同类型的,如决策树、支持向量机、神经网络等,也可以是相同类型的多个实例。

https://i-blog.csdnimg.cn/img_convert/35b7c2e8514327bb3b01c6f81d20f3b7.png

集成学习的实现方法有哪些Bagging 、Boosting和Stacking是三种常见的集成学习方法。

Bagging并行训练多样本集基学习器,平均或投票预测降方差;Boosting串行纠正弱学习器错误,提升性能但易过拟合;Stacking则以基学习器预测为新特征,元模型组合得更优效果。

  1. Bagging:通过 并行训练多个 基于不同自助采样数据集的 基学习器 ,并 平均或投票其预测结果 ,以降低方差并提高模型的泛化能力。
  2. Boosting:通过 串行训练多个弱学习器 ,每个新模型都 关注并纠正前一个模型的错误 ,逐步提高整体模型的性能,但可能导致过拟合。
  3. Stacking:将 多个基学习器的预测结果作为新的特征 ,训练一个 元模型来组合这些预测 ,从而获得比单个模型更好的效果。

https://i-blog.csdnimg.cn/img_convert/645008ddf4525b61ac3181596378b53c.jpeg

二、随机森林

************随机森林(Random Forest)****是什么? 随机森林是一种集成学习算法,它通过将多个决策树组合在一起形成一个强大的分类器或回归器。

对于分类任务,随机森林取所有决策树的预测结果中占多数的类别作为最终预测结果。

import numpy as np``import matplotlib.pyplot as plt``from sklearn.ensemble import RandomForestClassifier``from sklearn.model_selection import train_test_split``from sklearn.datasets import load_iris``from sklearn.metrics import accuracy_score``   ``# 加载数据集``data = load_iris()``# 只选择前两个特征``X = data.data[:, :2]``y = data.target``   ``# 划分训练集和测试集``X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)``   ``# 初始化随机森林分类器``clf = RandomForestClassifier(n_estimators=100, random_state=42)``   ``# 训练模型``clf.fit(X_train, y_train)``   ``# 预测``y_pred = clf.predict(X_test)``   ``# 计算准确率``accuracy = accuracy_score(y_test, y_pred)``print(f'Accuracy: {accuracy:.2f}')``   ``# 可视化决策边界(近似)``h = .02  # 网格中的步长``x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1``y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1``xx, yy = np.meshgrid(np.arange(x_min, x_max, h),`                     `np.arange(y_min, y_max, h))``Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])``Z = Z.reshape(xx.shape)``   ``plt.contourf(xx, yy, Z, alpha=0.8)``# 绘制训练样本点``scatter = plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o')``plt.legend(*scatter.legend_elements(), title="Classes")``plt.xlabel('Feature 1')``plt.ylabel('Feature 2')``plt.title('Random Forest Classification Decision Boundary (Approximation using 2 features)')``plt.show()

https://i-blog.csdnimg.cn/img_convert/bd85c9706a18414a122d372e1b62da28.png

对于回归任务,则取所有树预测结果的平均值作为最终预测结果。

import numpy as np``import matplotlib.pyplot as plt``from sklearn.ensemble import RandomForestRegressor``from sklearn.model_selection import train_test_split``from sklearn.datasets import load_diabetes``from sklearn.metrics import mean_squared_error``   ``# 加载数据集``data = load_diabetes()``X, y = data.data, data.target``   ``# 划分训练集和测试集``X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)``   ``# 初始化随机森林回归器``reg = RandomForestRegressor(n_estimators=100, random_state=42)``   ``# 训练模型``reg.fit(X_train, y_train)``   ``# 预测``y_pred = reg.predict(X_test)``   ``# 计算均方误差``mse = mean_squared_error(y_test, y_pred)``print(f'Mean Squared Error: {mse:.2f}')``   ``# 可视化回归结果``plt.scatter(y_test, y_pred, edgecolors=(0, 0, 0))``plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=4)``plt.xlabel('Actual Values')``plt.ylabel('Predicted Values')``plt.title('Random Forest Regression: Actual vs Predicted')``plt.show()

https://i-blog.csdnimg.cn/img_convert/7f1b38ad7379dab19b9fa28ad02394dd.png

随机森林如何实现?随机森林是 集成学习中Bagging方法的一种具体实现 ,通过 并行训练多个基于不同自助采样数据集的决策树 ,并 组合其预测结果 来提高整体模型的准确性和稳定性。

  • 随机森林通过自助采样(Bootstrap Sampling)方法从原始数据集中随机有放回地抽取多个样本子集。
  • 对于每个样本子集,独立地构建一棵决策树。在树的每个节点分裂时,随机选择一部分特征作为候选,并选择最优特征进行分裂。
import numpy as np``import matplotlib.pyplot as plt``from sklearn.datasets import load_iris``from sklearn.tree import DecisionTreeClassifier``from sklearn.model_selection import train_test_split``from sklearn.metrics import accuracy_score``   ``# 加载数据集``iris = load_iris()``X, y = iris.data, iris.target``   ``# 为了可视化,我们只选择两个特征``feature_indices = [0, 1]  # 选择前两个特征(花萼长度和花萼宽度)``X_vis = X[:, feature_indices]``   ``# 分割数据集为训练集和测试集``X_train, X_test, y_train, y_test = train_test_split(X_vis, y, test_size=0.3, random_state=42)``   ``# 定义随机森林类``class RandomForest:`    `def __init__(self, n_estimators=100, max_depth=None, min_samples_split=2, random_state=42):`        `self.n_estimators = n_estimators`        `self.max_depth = max_depth`        `self.min_samples_split = min_samples_split`        `self.random_state = random_state`        `self.trees = []`        `np.random.seed(random_state)``   `    `def fit(self, X, y):`        `for _ in range(self.n_estimators):`            `# 自助抽样(Bootstrap Sampling)`            `indices = np.random.choice(X.shape[0], X.shape[0], replace=True)`            `X_sample, y_sample = X[indices], y[indices]``   `            `# 训练决策树`            `tree = DecisionTreeClassifier(max_depth=self.max_depth, min_samples_split=self.min_samples_split, random_state=self.random_state)`            `tree.fit(X_sample, y_sample)`            `self.trees.append(tree)``   `    `def predict(self, X):`        `# 对每个样本,收集所有树的预测结果`        `tree_preds = np.array([tree.predict(X) for tree in self.trees])``   `        `# 对于分类任务,采用多数投票机制`        `majority_votes = np.apply_along_axis(lambda x: np.bincount(x).argmax(), axis=0, arr=tree_preds)`        `return majority_votes``   ``# 初始化并训练随机森林``rf = RandomForest(n_estimators=100, max_depth=None, min_samples_split=2, random_state=42)``rf.fit(X_train, y_train)``   ``# 预测测试集``y_pred = rf.predict(X_test)``accuracy = accuracy_score(y_test, y_pred)``print(f'Accuracy: {accuracy:.2f}')``   ``# 可视化决策边界(仅适用于二维数据)``x_min, x_max = X_vis[:, 0].min() - 1, X_vis[:, 0].max() + 1``y_min, y_max = X_vis[:, 1].min() - 1, X_vis[:, 1].max() + 1``xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01),`                     `np.arange(y_min, y_max, 0.01))``   ``# 对网格中的每个点进行预测``Z = rf.predict(np.c_[xx.ravel(), yy.ravel()])``Z = Z.reshape(xx.shape)``   ``# 绘制决策边界和测试数据点``plt.contourf(xx, yy, Z, alpha=0.3)``plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, edgecolors='k', marker='o', cmap=plt.cm.Paired)``plt.xlabel(iris.feature_names[feature_indices[0]])``plt.ylabel(iris.feature_names[feature_indices[1]])``plt.title('Random Forest Decision Boundaries (2 features)')``plt.show()

https://i-blog.csdnimg.cn/img_convert/4df2e1d5e862311147850af6b37927fe.jpeg

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括 AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以 扫描下方二维码 & 点击下方CSDN官方认证链接 免费领取 【保证100%免费】

https://img-blog.csdnimg.cn/img_convert/889b2f9e52944e7410c04936159de6cb.jpeg

读者福利:

(👆👆👆安全链接,放心点击)

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。

二方面是可以根据这些资料规划好学习计划和方向。

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。 (全套教程文末领取哈)

https://i-blog.csdnimg.cn/direct/1a01ecf96fb142ae925bedad049ca7ba.png#pic_center

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

https://i-blog.csdnimg.cn/direct/50ece67c703340608cbfaf2daeea1358.png#pic_center

https://i-blog.csdnimg.cn/direct/bd4618f1675b4870a7299d0212047e25.png

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。 (全套教程文末领取哈)

https://i-blog.csdnimg.cn/direct/dc21268d8e9c4bda953ab1687bbca43d.png#pic_center

👉4.大模型落地应用案例PPT👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。 (全套教程文末领取哈)

https://i-blog.csdnimg.cn/direct/a7511f74c1e14c4dbd1c846267399c2b.png#pic_center

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。 (全套教程文末领取哈)

https://img-blog.csdnimg.cn/direct/f3f83643ea7e4954ad51c4b3099dddc6.png

https://img-blog.csdnimg.cn/direct/348db3f6b65a4a8f8b94c3a6ab560457.jpeg

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。 (全套教程文末领取哈)

https://i-blog.csdnimg.cn/direct/77792b8008fb4d849647c0db9adb148a.png

👉学会后的收获:👈

基于大模型全栈工程实现 (前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求 : 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能 , 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力 : 大模型应用开发需要掌握机器学习算法、深度学习

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以 扫描下方二维码&点击下方CSDN官方认证链接免费领取

【保证100%免费】

https://img-blog.csdnimg.cn/img_convert/889b2f9e52944e7410c04936159de6cb.jpeg

读者福利:

(👆👆👆安全链接,放心点击)