机器学习随机森林算法

本文概要

  • 假设随机森林
  • 为什么要使用随机森林?
  • 如何随机森林算法的工作?
  • 随机森林中的应用
  • 随机森林的优点
  • 随机森林的缺点
  • 随机森林算法的Python实现
随机森林是一种流行的机器学习算法属于监督学习技术。它可用于在ML分类和回归的问题。它是基于集成学习,这是组合多个分类解决一个复杂的问题,并提高模型的性能的过程的概念。
正如其名,“随机森林是一个包含若干个给定数据集的各种子集决策树,并采取平均,以提高该数据集的预测准确度的分类。”而不是依靠一个决策树,随机森林从每棵树需要预测,并根据预测的多数票,并预测最终的输出。
树木在森林带来更高的精度和防止过度拟合的问题更大数量。
下面的图表说明了随机森林算法的工作:
机器学习随机森林算法

文章图片
注:为了更好地理解随机森林算法,你应该有决策树算法的知识。假设随机森林由于随机森林合并多个树来预测类数据集的,有可能是一些决策树可以预测正确的输出,而其他人可能不会。但同时,所有的树木预测正确的输出。因此,下面是两个假设一个更好的随机森林分类:
  • 应该有一些实际值数据集中的特征变量,这样的分类可以预测准确的结果,而不是推测的结果。
  • 从每棵树的预测必须有很低的相关性。
为什么要使用随机森林?下面是一些点,解释我们为什么要使用随机森林算法:
  • 与其他算法相比,它需要更少的训练时间。
  • 它可以高精度地预测输出,即使对于大型数据集,它也可以高效地运行。
  • 当大量数据丢失时,它也能保持准确性。
如何随机森林算法的工作?随机森林工程两阶段首先是通过组合ň决策树创建随机森林,二是使在第一阶段创建每棵树预测。
工作过程可以在下面的步骤和图进行说明:
第1步:从训练集随机选择K个数据点。
步骤2:构建与所选择的数据点(子集)相关联的判定树。
步骤3:选择数N决策树要构建。
步骤4:重复步骤1和2。
步骤5:对于新的数据点,找到每个决策树的预测,并指定新的数据指向赢得多数选票的类别。
该算法的工作可以通过下面的例子可以更好地理解:
例如:假设有一个包含多个水果图像的数据集。因此,该数据集是考虑到随机森林分类。该数据集分为亚群,给每个决策树。在训练阶段,每个决策树生成预测结果,当一个新的数据点出现,然后根据多数的结果,随机森林分类预测的最终决定。考虑下面的图片:
机器学习随机森林算法

文章图片
随机森林中的应用主要有其中随机森林主要用于四个方面:
  1. 银行业:银行业大多采用这种算法对贷款风险的识别。
  2. 医药:有了这个算法的帮助下,疾病发展趋势和疾病的风险可以被识别。
  3. 土地用途:我们可以通过该算法确定的同类土地使用面积。
  4. 营销:营销趋势可以用这个算法来识别。
随机森林的优点
  • 随机森林是能够执行分类和回归任务。
  • 它能够处理大型数据集的高维数。
  • 它增强了模型的准确性和防止过度拟合问题。
随机森林的缺点
  • 尽管随机森林可用于分类和回归任务,它是不是更适合回归任务。
随机森林算法的Python实现现在,我们将使用Python实现随机森林算法的树。为此,我们将使用相同的数据集“user_data.csv”,这是我们在以前的分类模型已经使用。通过使用相同的数据集,我们可以比较的随机森林分类与其他分类模型,如决策树分类,KNN,SVM,Logistic回归等。
实施步骤给出如下:
  • 数据前处理步骤
  • 拟合随机森林算法训练集
  • 预测测试结果
  • 结果的测试精度(混淆矩阵的创建)
  • 可视化测试集的结果。
1.Data预处理步骤:
下面是用于预处理步骤的代码:
# importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd#importing datasets data_set= pd.read_csv('user_data.csv')#Extracting Independent and dependent Variable x= data_set.iloc[:,[2,3]].values y= data_set.iloc[:,4].values# Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test= train_test_split(x,y,test_size= 0.25,random_state=0)#feature Scaling from sklearn.preprocessing import StandardScaler st_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_test= st_x.transform(x_test)

在上面的代码中,我们已经预先处理的数据。当我们已加载的数据集,给出如下:
机器学习随机森林算法

文章图片
2.配件随机森林算法训练集:
【机器学习随机森林算法】现在,我们将配合随机森林算法训练集。为了适应它,我们会从sklearn.ensemble库导入RandomForestClassifier类。该代码下面给出:
#Fitting Decision Tree classifier to the training set from sklearn.ensemble import RandomForestClassifier classifier= RandomForestClassifier(n_estimators= 10,criterion="entropy") classifier.fit(x_train,y_train)

在上面的代码,所述分类对象采用以下参数:
  • n_estimators =所需数量的随机森林树木。默认值是10,我们可以选择任何号码,但需要采取过度拟合问题的关心。
  • 准则=它是分析分割的精度的函数。在这里,我们采取了“熵”的信息增益。
输出:
RandomForestClassifier(bootstrap=True,class_weight=None,criterion='entropy',max_depth=None,max_features='auto',max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,min_samples_leaf=1,min_samples_split=2,min_weight_fraction_leaf=0.0,n_estimators=10,n_jobs=None,oob_score=False,random_state=None,verbose=0,warm_start=False)

3.预测测试集的结果
由于我们的模型拟合训练集,所以现在我们可以预测的测试结果。对于预测,我们将创建一个y_pred新的预测向量。下面是它的代码:
#Predicting the test set result y_pred= classifier.predict(x_test)

输出:
预测向量给定为:
机器学习随机森林算法

文章图片
通过检查上述预测矢量和测试集实向量,我们可以确定由分类做了不正确的预测。
4.创建混淆矩阵
现在,我们将创建混淆矩阵来确定正确的和不正确的预测。下面是它的代码:
#Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test,y_pred)

输出:
机器学习随机森林算法

文章图片
正如我们可以在上述矩阵看到的,有4 + 4 = 8个不正确的预测和64 + 28 = 92正确的预测。
5.可视化训练集结果
在这里,我们将可视化训练集的结果。以可视化的训练集中的结果,我们将绘制的随机森林分类的??图表。分类器将是或否预测谁已经购买或不购买的SUV车,因为我们在Logistic回归所做的用户。下面是它的代码:
from matplotlib.colors import ListedColormap x_set,y_set = x_train,y_train x1,x2 = nm.meshgrid(nm.arange(start = x_set[:,0].min() - 1,stop = x_set[:,0].max() + 1,step=0.01),nm.arange(start = x_set[:,1].min() - 1,stop = x_set[:,1].max() + 1,step = 0.01)) mtp.contourf(x1,x2,classifier.predict(nm.array([x1.ravel(),x2.ravel()]).T).reshape(x1.shape),alpha = 0.75,cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(),x1.max()) mtp.ylim(x2.min(),x2.max()) for i,j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j,0],x_set[y_set == j,1],c = ListedColormap(('purple','green'))(i),label = j) mtp.title('Random Forest Algorithm (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show()

输出:
机器学习随机森林算法

文章图片
上面的影像是与训练集结果随机森林分类工作的可视化结果。这是非常相似的决策树分类。每个数据点对应于的user_data中的每个用户,紫和绿色区域是预测区域。紫色区域被划入谁没有购买SUV车的用户,绿色区域是谁购买了SUV的用户。
所以,在随机森林分类,我们已经采取的预言是或否购买的变量10棵树。该分类采取多数预测和提供的结果。
6.可视化测试集结果
现在,我们将可视化测试集的结果。下面是它的代码:
#Visulaizing the test set result from matplotlib.colors import ListedColormap x_set,y_set = x_test,y_test x1,x2 = nm.meshgrid(nm.arange(start = x_set[:,0].min() - 1,stop = x_set[:,0].max() + 1,step=0.01),nm.arange(start = x_set[:,1].min() - 1,stop = x_set[:,1].max() + 1,step = 0.01)) mtp.contourf(x1,x2,classifier.predict(nm.array([x1.ravel(),x2.ravel()]).T).reshape(x1.shape),alpha = 0.75,cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(),x1.max()) mtp.ylim(x2.min(),x2.max()) for i,j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j,0],x_set[y_set == j,1],c = ListedColormap(('purple','green'))(i),label = j) mtp.title('Random Forest Algorithm(Test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show()

输出:
机器学习随机森林算法

文章图片
上述图像是用于测试集可视化结果。我们可以检查是否有不正确的预测(8),而不过度拟合问题的最小数量。我们将通过改变分类树木的数量得到不同的结果。

    推荐阅读