一、第三课:监督学习

在第三课中,我们将探讨监督学习,这是机器学习中最常见的一种类型。监督学习涉及到根据带有标签的训练数据来训练模型,以便模型能够对未见过的数据做出预测。这一课将包括分类和回归两大类监督学习任务,以及模型评估的基本方法。

3.1 分类

分类是一种监督学习任务,目标是预测离散标签。例如,根据电子邮件的内容预测它是垃圾邮件还是非垃圾邮件。

  • 算法示例
    • 逻辑回归LogisticRegression):一种广泛使用的线性分类器,适用于二分类和多分类任务。
    • 决策树DecisionTreeClassifier):通过学习简单的决策规则推断出的模型。
    • 随机森林RandomForestClassifier):基于决策树的集成学习方法,它通过构建多棵决策树来提高分类的准确性。
    • 支持向量机SVC):一种强大的分类方法,能够在高维空间中有效地进行分类。

3.2 回归

回归是另一种监督学习任务,它预测连续的数值标签。例如,根据房屋的特征(如面积、位置等)预测房屋的价格。

  • 算法示例
    • 线性回归LinearRegression):最基本的回归模型,预测变量和响应变量之间的线性关系。
    • 岭回归Ridge):一种线性回归的变体,通过引入L2正则化来防止过拟合。
    • Lasso回归Lasso):另一种线性回归的变体,通过引入L1正则化来进行特征选择。
    • 决策树回归DecisionTreeRegressor):使用决策树模型进行回归预测。

3.3 模型评估

了解如何正确评估监督学习模型的性能是至关重要的。这包括使用正确的评估指标和交叉验证方法。

  • 分类评估指标

    • 准确率(Accuracy)
    • 精确度(Precision)
    • 召回率(Recall)
    • F1 分数(F1 Score)
    • ROC 曲线和 AUC 分数
  • 回归评估指标

    • 均方误差(MSE)
    • 均方根误差(RMSE)
    • 平均绝对误差(MAE)
    • R² 分数
  • 交叉验证

    • 使用 cross_val_scoreGridSearchCV 实现交叉验证,以更准确地评估模型的性能。

实战示例

让我们通过一个简单的分类实战示例,使用决策树分类器对鸢尾花数据集进行分类:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# 加载数据
iris = load_iris()
X, y = iris.data, iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化决策树分类器
clf = DecisionTreeClassifier(random_state=42)

# 训练模型
clf.fit(X_train, y_train)

# 预测测试集
y_pred = clf.predict(X_test)

# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

output:

Accuracy: 1.0

通过这个示例,你可以看到如何使用 Scikit-learn 来实现一个基本的分类任务,从数据准备、模型训练到模型评估的整个过程。

二、评估模型的性能

在机器学习中,尤其是在处理分类问题时,评估模型的性能是非常重要的。以下是一些常用的分类评估指标,它们可以帮助我们从不同的角度理解模型的表现:

1. 准确率(Accuracy)

准确率是最直观的性能指标,它衡量的是分类模型正确预测的样本占总样本的比例。计算公式为:

[ \text{Accuracy} = \frac{\text{正确预测的数量}}{\text{总样本数量}} ]

虽然准确率是一个直观的指标,但在不平衡类别的数据集中,它可能不是一个好的性能衡量标准。

2. 精确度(Precision)

精确度衡量的是被模型预测为正类别中实际为正类别的比例。它是评估模型在预测正类别方面的准确性的一个指标。计算公式为:

[ \text{Precision} = \frac{\text{真正例(TP)}}{\text{真正例(TP)} + \text{假正例(FP)}} ]

3. 召回率(Recall)或敏感度

召回率衡量的是实际为正类别的样本中被模型正确预测为正类别的比例。它是评估模型在覆盖实际正类别方面的能力的一个指标。计算公式为:

[ \text{Recall} = \frac{\text{真正例(TP)}}{\text{真正例(TP)} + \text{假负例(FN)}} ]

4. F1 分数(F1 Score)

F1 分数是精确度和召回率的调和平均值,它试图在精确度和召回率之间达到平衡。F1 分数的计算公式为:

[ F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} ]

当你不能只看重精确度或召回率时,F1 分数是一个很好的性能衡量指标。

5. ROC 曲线和 AUC 分数

  • ROC 曲线(Receiver Operating Characteristic curve):是真正例率(TPR,召回率)对假正例率(FPR)的图表表示。它通过在不同的分类阈值下计算 TPR 和 FPR 来显示分类模型的性能。

  • AUC 分数(Area Under the Curve):是 ROC 曲线下的面积,用来衡量分类模型的整体性能。AUC 分数的值范围从 0 到 1,一个完美的模型有 AUC = 1,而一个随机猜测的模型的 AUC = 0.5。

ROC 曲线和 AUC 分数对于评估在不同阈值设置下模型的性能非常有用,尤其是在类别不平衡的情况下。它们提供了一个全面的视图,帮助我们理解模型在区分类别方面的能力。

这一课为你提供了监督学习的基本概念和技术,以及如何使用 Scikit-learn 来实现这些任务。在接下来的学习中,你将能够深入探索更多算法和高级技巧,进一步提高你的机器学习技能。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐