用于分类的顶级机器学习算法有哪些?详细列表

2021年11月28日05:03:05 发表评论 1,991 次浏览

机器学习是目前全世界研究最多的领域之一。在过去的二十年里,机器学习为全球无数问题提供了解决方案。从物体检测到自动驾驶汽车,机器学习使世界技术呈指数级增长。

机器学习的两种主要类型是监督学习和无监督学习。监督学习和无监督学习最基本的区别在于,在监督学习的情况下,算法对每种输入都有可用的输出,并且算法是自己确定输入和输出之间的相关性,而在无监督学习的情况下,我们没有可用的输出。

监督机器学习的两种最基本类型是分类和回归。分类基本上是将输入数据分类为一组输出类。

机器学习哪个分类算法最好?在这里,输出具有不同的值,假设函数仅将输出作为表示类的有限值之一给出。在回归的情况下,我们有对应于每个输入的连续输出,并且新输入可以根据假设函数给出的内容输出任何值,这并不完全映射到特定的输出集,而是可以是任意值。

机器学习分类算法有哪些?在本文中,我们将分析目前实际使用的一些最流行的机器学习分类算法,包括一些机器学习分类算法示例代码。因此,文章分为以下几个部分:

  • 机器学习中的分类
  • 流行的分类算法
    • 逻辑回归
    • 朴素贝叶斯
    • 决策树
    • 支持向量机
    • K-最近邻
    • 随机森林
  • 在 Sklearn 和 Python 中的实现
    • 逻辑回归
    • 朴素贝叶斯
    • 决策树
    • 支持向量机
    • K-最近邻
    • 随机森林
  • 结论

机器学习中的分类

分类,具体在机器学习中,是指将每个输入数据分类为特定数量的类。它是一种监督学习算法,这意味着我们有一组输出数据,这些数据对应于模型学习阶段的给定输入数据。

输出数据将输入数据分类为特定数量的类。例如,如果我们有图像数据作为输入,输出数据由一个布尔数组成,即 0 或 1,其中 1 表示输入图片是猫的,0 表示不是猫的图像。作为分类算法,我们算法的任务是从这些训练数据中学习并计算假设函数。

假设函数将是这样的,当将图像提供给算法时,它将计算输出为 0 或 1,其中 1 表示输入图像是猫的,0 表示不是。

用于分类的顶级机器学习算法有哪些?详细列表

机器学习中的分类方法产生了两种学习算法的概念:

  • 懒惰的学习者
  • 渴望学习者

这两者都有不同的输入数据分类方法。懒惰的学习者等待测试数据开始分类。他们基本上按原样存储原始数据,没有学习过程,并在对测试数据进行分类时开始学习。

这提供了一种算法,它需要更少的时间学习和更多的时间对数据进行分类。另一方面,急切的学习者一旦获得数据就开始学习过程,也称为训练,而不是等待测试集继续进行。当他们获得测试数据时,他们只使用已经学习的特征进行分类。

这提供了一种算法,该算法需要更多的训练时间,而对新数据进行分类所需的时间却很少。


机器学习分类算法有哪些?分类算法对于几种基于人工智能的系统非常有用,无论它们是对象检测器还是生成网络。分类也广泛应用于计算机视觉领域甚至自然语言处理领域。因此,今天我们将看看一些最流行的机器学习分类算法。因此,事不宜迟,让我们直接进入:

逻辑回归

机器学习分类算法示例:逻辑回归是一种基于统计和概率概念的分类算法。它使用一组自变量来预测输出类别。逻辑回归是一种被​​开发用于对二元问题进行分类的算法,即它只能对两个输出类别进行分类,因为假设函数给出了一个介于 0 和 1 之间的概率值。

但是现在,在 Sklearn 中,它不仅可以用于二元分类,还可以用于多类分类,因为可以基于输出类的数量构建多个假设函数。

来源:https://static.javatpoint.com/tutorial/machine-learning/images/logistic-regression-in-machine-learning.png
来源:https://static.javatpoint.com/tutorial/machine-learning/images/logistic-regression-in-machine-learning.png

Logistic 回归发现因变量和一组自变量之间的关系。如上所述,假设给出了介于 0 和 1 之间的概率值。然后使用阈值将概率值确定为两个二元类之一。低于阈值的概率映射为 0,而高于阈值的概率映射为 1。

朴素贝叶斯

机器学习哪个分类算法最好?朴素贝叶斯是一组基于贝叶斯定理的概率机器学习分类器。贝叶斯定理定义如下:

用于分类的顶级机器学习算法有哪些?详细列表

这个方程给出了事件 A 发生的概率,使得 B 已经发生。朴素贝叶斯假设输入特征都是相互独立的。如果特征实际上相互依赖,它们的属性会独立地影响概率。它比其他机器学习分类算法更简单。在 n 个特征的情况下,单个特征对假设有贡献的概率由下式给出:

用于分类的顶级机器学习算法有哪些?详细列表

有几种类型的朴素贝叶斯分类器。这些包括:

  • 多项式朴素贝叶斯
  • 伯努利朴素贝叶斯
  • 高斯朴素贝叶斯

其中使用最广泛的分类器是高斯朴素贝叶斯。它假设概率值是从高斯或正态分布函数中采样的。为了实现的目的,我们还将使用高斯朴素贝叶斯分类器。

决策树

机器学习分类算法合集:决策树由于其简单性而成为应用最广泛的分类算法之一。它还为不是由过于复杂的属性组成的数据集提供了良好的预测。它以流程图的形式出现,也可以被认为是一棵树,有根,枝条从树上冒出来。它在单个节点中对输入数据的属性执行一系列测试,根据测试的输出将节点拆分为进一步的分支。每个新分支都通向另一个节点,该节点以同样的方式分裂成更多的分支。这就是赋予它树状结构的原因。所有这些节点和分支都以称为叶节点的最终节点结束,这些节点将输出作为单个类。

用于分类的顶级机器学习算法有哪些?详细列表

树中节点分裂的计算基于称为属性选择度量 (ASM) 的技术。ASM有两种基本方法:

  • 信息增益
  • 基尼系数

信息增益基于对基于每个属性的整个数据集的熵变化的度量。换句话说,我们计算一个属性拥有多少信息。具有最高信息增益的属性被用作执行测试的属性。

基尼指数衡量用于创建决策树的纯度或杂质。具有较低基尼指数值的属性优选用于节点中。

支持向量机

机器学习分类算法有哪些?支持向量机是机器学习中使用的最强大的算法之一。这是一种复杂的算法,即使在大型复杂数据集上也能很好地工作。SVM 算法背后的主要思想是在 n 维空间中确定一个超平面,其中 n 是数据集中的特征数量,对数据集中的每个类进行分类。最优超平面是具有最大边距的平面,即每个类的数据点之间的最大距离。

来源:https://miro.medium.com/max/600/0*0o8xIA4k3gXUDCFU.png
来源:https://miro.medium.com/max/600/0*0o8xIA4k3gXUDCFU.png

边距可以是硬边距或软边距。在硬边界的情况下,算法不能承受任何错误分类的数据点,而在软边界的情况下,分类器可以有一些异常值被错误分类,以实现整体更好的性能。

来源:https://miro.medium.com/max/1104/1*CD08yESKvYgyM7pJhCnQeQ.png
来源:https://miro.medium.com/max/1104/1*CD08yESKvYgyM7pJhCnQeQ.png

K-最近邻

KNN 是一种惰性学习器分类算法。它将整个训练数据存储在一个 n 维空间中。它不用于构建通用函数来对数据集的任何新实例进行分类,而只是将数据集存储在一个空间中并从头开始处理每个新实例。分类是通过对 n 维空间中的每个点的简单多数投票方案完成的。为了对空间中的新实例进行分类,它会查看与新点最近的所有点。所有的近点都被称为实例的最近邻居。大多数邻居拥有的标签被分配给新实例。“K”是用于分类目的的邻居数。

随机森林

随机森林算法是一种集成学习技术,我们使用多个决策树基于每个决策树的多数投票来构建分类模型。在训练期间,多个决策树中的每一个都提供了整个数据集的一个子集。然后使用多数投票技术使用来自每棵树的输出来输出单个最可能的预测。随机森林中的每个决策树都按照上面决策树部分中的描述工作。

用于分类的顶级机器学习算法有哪些?详细列表

要了解有关随机森林和决策树算法基础知识的更多信息,请访问我们深入了解随机森林分类算法 。


在 Sklearn 和 Python 中的实现

机器学习分类算法合集实现示例:现在我们已经了解了每种分类方法的基础知识,我们必须转到算法的实现上,看看哪种算法效果最好。

我们将在 Python 和 Sklearn 中实现这些算法。SKlearn 或 Scikit-Learn 是一个广泛的库,用于开发各种机器学习模型。

它由大量预先开发的机器学习工具组成,用于开发 ML 模型,包括分类和回归模型。此外,Sklearn 库还有一组性能指标来评估开发的机器学习模型。

在继续实现这些算法之前,我们必须在与我们正在使用的 Python 相同的环境中安装 Sklearn:

使用pip命令,安装如下:

pip install -U scikit-learn

使用 conda 环境,安装使用:

conda install scikit-learn

现在,让我们深入研究算法的实现:

机器学习哪个分类算法最好?首先,我们将导入所有必需的模块,包括分类算法模型。我们将使用已经存在于数据集的 sklearn 库数据库中的虚拟数据集。我们将使用的数据集与我们在深入研究随机森林分类算法时使用的数据集相同 。

# Random Forest Classification

# Importing the libraries
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, plot_confusion_matrix
from sklearn.datasets import load_digits

#importing the classification models
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier

matplotlib.pyplot库用于可视化基于图像的数据。训练测试拆分模块用于将整个数据集拆分为两个子集,即训练数据和测试数据。度量模块提供了许多其他模块,用于评估开发的模型。

load_digits是用于加载已经存在于Sklearn库的数据集的模块。之后,我们导入开发机器学习分类算法所需的所有类。现在,我们导入数据集并绘制它以进行可视化。

# Importing the dataset
dataset = load_digits()
# Vizualizing the Dataset
_, axes = plt.subplots(nrows=1, ncols=4, figsize=(10, 3))
for ax, image, label in zip(axes, dataset.images, dataset.target):
ax.set_axis_off()
ax.imshow(image, cmap=plt.cm.gray_r)
ax.set_title("Training: %i" % label)

这里我们使用 load_digits 模块加载数据,然后使用 matplotlib 库对其进行可视化。

用于分类的顶级机器学习算法有哪些?详细列表

现在,我们将数据解包成 X 和 Y 集,其中 X 是输入特征,Y 是与 X 中的实例对应的输出目标。然后我们将整个数据分成训练和测试的两个子集。

# Unpacking the data into X(input) and Y(target output)
n_samples = len(dataset.images)
X = dataset.images.reshape((n_samples, -1))
Y = dataset.target
# Splitting the dataset into the Training set and Test set
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.25)

拆分数据后,我们现在可以继续对每个分类模型进行训练和评估。

机器学习分类算法有哪些:逻辑回归

# Logistic Regression

# Fitting LR Classification to the Training set
classifier = LogisticRegression(max_iter=1500)
classifier.fit(X_train, y_train)


# Predicting the Test set results
y_pred = classifier.predict(X_test)


# Computing Accuracy
accuracy = accuracy_score(y_test, y_pred)


print("Accuracy of model: ", accuracy)
plot_confusion_matrix(classifier, X_test, y_test, cmap='Blues', display_labels=dataset.target_names)
plt.tight_layout()
plt.show()

在这里,我们首先创建一个 Logistic 回归类的实例。我们将 max_iter,即最大迭代次数设置为 1500,因为对于这个特定的数据集,模型在达到迭代限制之前无法收敛。如果遇到关于达到迭代限制的错误,可以增加迭代次数以查看模型是否收敛。

然后我们使用该fit()模块来训练模型。训练后,该模型用于使用该predict()模块为测试数据集创建预测。

然后,我们最终计算模型的准确度。最后我们打印准确率和混淆矩阵,用于评估模型的性能。

用于分类的顶级机器学习算法有哪些?详细列表

现在,我们继续以与逻辑回归模型相同的方式开发其他分类模型。

机器学习分类算法示例:朴素贝叶斯

# Naive Bayes

# Fitting Gaussian Naive Bayes Classification to the Training set
classifier = GaussianNB()
classifier.fit(X_train, y_train)


# Predicting the Test set results
y_pred = classifier.predict(X_test)


# Computing Accuracy
accuracy = accuracy_score(y_test, y_pred)

print("Accuracy of model: ", accuracy)
plot_confusion_matrix(classifier, X_test, y_test, cmap='Blues', display_labels=dataset.target_names)
plt.tight_layout()
plt.show()
用于分类的顶级机器学习算法有哪些?详细列表

机器学习分类算法合集:决策树示例

# Decision Tree

# Fitting Decision Tree Classification to the Training set
classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)

# Predicting the Test set results
y_pred = classifier.predict(X_test)

# Computing Accuracy
accuracy = accuracy_score(y_test, y_pred)

print("Accuracy of model: ", accuracy)
plot_confusion_matrix(classifier, X_test, y_test, cmap='Blues', display_labels=dataset.target_names)
plt.tight_layout()
plt.show()
用于分类的顶级机器学习算法有哪些?详细列表

支持向量机

# Support Vector Machine

# Fitting SVM Classification to the Training set
classifier = SVC()
classifier.fit(X_train, y_train)

# Predicting the Test set results
y_pred = classifier.predict(X_test)

# Computing Accuracy
accuracy = accuracy_score(y_test, y_pred)

print("Accuracy of model: ", accuracy)
plot_confusion_matrix(classifier, X_test, y_test, cmap='Blues', display_labels=dataset.target_names)
plt.tight_layout()
plt.show()
用于分类的顶级机器学习算法有哪些?详细列表

机器学习分类算法有哪些:K-最近邻

# K-Nearest Neighbor

# Fitting KNN Classification to the Training set
classifier = KNeighborsClassifier()
classifier.fit(X_train, y_train)

# Predicting the Test set results
y_pred = classifier.predict(X_test)


# Computing Accuracy
accuracy = accuracy_score(y_test, y_pred)


print("Accuracy of model: ", accuracy)
plot_confusion_matrix(classifier, X_test, y_test, cmap='Blues', display_labels=dataset.target_names)
plt.tight_layout()
plt.show()
用于分类的顶级机器学习算法有哪些?详细列表

机器学习分类算法示例:随机森林

# Random Forest


# Fitting Random Forest Classification to the Training set
classifier = RandomForestClassifier(n_estimators = 10, criterion = 'entropy')
classifier.fit(X_train, y_train)

# Predicting the Test set results
y_pred = classifier.predict(X_test)

# Computing Accuracy
accuracy = accuracy_score(y_test, y_pred)


print("Accuracy of model: ", accuracy)
plot_confusion_matrix(classifier, X_test, y_test, cmap='Blues', display_labels=dataset.target_names)
plt.tight_layout()
plt.show()
用于分类的顶级机器学习算法有哪些?详细列表
机器学习分类算法有哪些

机器学习分类算法合集总结

机器学习哪个分类算法最好?从上述模型的准确率和混淆矩阵可以看出,K-Nearest Neighbor 的准确率最高,为 98.88%,支持向量机为 98.66%。精度最低的算法是决策树算法。

这证明 K 近邻最适合我们用于评估这些模型的数据集。因此,没有通用的标准数据来评估任何分类模型并宣称它比另一个更好。每种算法都以独特的方式适应每个数据集,并且在一个数据集上表现不佳的算法可能对另一个数据集最有效。

这就是为什么这里的模型都没有过时的原因,而是所有这些模型都经常用于机器学习领域。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: