个性化阅读
专注于IT技术分析

机器学习随机森林算法

本文概要

随机森林是一种流行的机器学习算法属于监督学习技术。它可用于在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),而不过度拟合问题的最小数量。我们将通过改变分类树木的数量得到不同的结果。


赞(0)
未经允许不得转载:srcmini » 机器学习随机森林算法

评论 抢沙发

评论前必须登录!