机器学习核心任务
机器学习是通过让计算机从数据中自动学习并进行预测或分析的技术。其核心任务主要包括回归与分类。回归致力于预测连续值输出,如线性回归通过拟合最佳直线预测目标变量;逻辑回归虽名含“回归”,实则应用于分类,利用Sigmoid函数转换预测连续概率。分类任务则是将数据分配至预设类别,如决策树通过特征分割数据,采用剪枝策略防过拟合;支持向量机(SVM)通过找到最大化类别间隔的边界进行分类,可选多种核函数适应不
机器学习两大核心任务
文章目录
摘要
机器学习是通过让计算机从数据中自动学习并进行预测或分析的技术。其核心任务主要包括回归与分类。回归致力于预测连续值输出,如线性回归通过拟合最佳直线预测目标变量;逻辑回归虽名含“回归”,实则应用于分类,利用Sigmoid函数转换预测连续概率。分类任务则是将数据分配至预设类别,如决策树通过特征分割数据,采用剪枝策略防过拟合;支持向量机(SVM)通过找到最大化类别间隔的边界进行分类,可选多种核函数适应不同数据特性。
以鸢尾花数据为例,展示了决策树的构建流程及可视化结果,说明了决策节点的划分逻辑与剪枝优化的重要性。同时,通过SVM模型的比较分析,揭示了线性核、RBF核及多项式核在数据分类上的表现差异,强调了核函数选择对模型适应性的关键作用。实践环节使用Python代码实现了不同核函数的SVM在鸢尾花数据集上的分类演示,直观展示了各类模型的决策边界。
Abstract
Regression is committed to predicting continuous value output; Although the name contains “regression”, logistic regression is actually applied to classification, using Sigmoid function transformation to predict continuous probability. The classification task is to assign data to preset categories, such as decision tree segmentation data through features, using pruning strategy to prevent overfitting; The support vector machine (SVM) classifies by finding the boundary that maximizes the class interval, and can choose multiple kernel functions to adapt to different data characteristics.
1.机器学习的定义
机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析。
2.机器学习前两大任务
回归(Regression)
回归是一种预测性的建模技术,研究的是自变量与因变量之间的关系,通常使用曲线来拟合数据点,想要使得拟合曲线到各个数据点之间的误差总和最小。当达到一定预测精度后,就可以用该拟合曲线来代表该自变量与因变量之间的关系,并且可以用他来处理更多的输入。
常见的回归类型
线性回归(Linear Regression)
线性回归(Linear Regression)是最基础且广泛应用的回归方法,试图通过拟合一条直线(或多维空间中的超平面)来建立输入特征与连续目标变量之间的关系。
用一个方程式来表示它,即Y=a+b*X+e,其中a表示截距,b表示直线的斜率,e是误差项。这个方程可以根据给定的预测变量(X)来预测目标变量的值。
逻辑回归(Logistic Regression)
逻辑回归(Logistic Regression):虽然名字中含有“回归”,但常用于分类问题,通过Sigmoid函数将线性模型的输出转化为概率估计。下面是回归的表达式方程:
分类(Classification)
在机器学习中,分类(Classification)是指将数据实例划分到预定义的类别或标签中的任务。这是监督学习(Supervised Learning)的一种常见形式,其中训练数据包含了输入特征和对应的目标标签(类别),模型的目标是学习如何根据输入特征来预测正确的类别。常见的分类算法有如下几种:
决策树(Decision Trees)
-
基于树结构的分类方法,通过一系列的决策节点进行分类,每个节点基于特征的阈值来分割数据。
下面是决策树的基本流程图
如果按照我们之前的方法形成决策树后,会存在一定的问题。决策树会无休止的生长,直到训练样本中所有样本都被划分到正确的分类。实际上训练样本中含有异常点,当决策树节点样本越少的时候,异常点就可能使得该结点划分错误。剪枝处理是防止决策树过拟合的有效手段。剪枝,其实就是把决策树里不该生长的枝叶剪掉,也就是不该划分的节点就不要继续划分了。剪枝分为“预剪枝”和“后剪枝”。两种操作在决策树生成步骤的位置如下图:
预剪枝:在决策树生成过程中,对每个结点在划分前先进性估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。它的位置在每一次生成分支节点前,先判断有没有必要生成,如没有必要,则停止划分。
后剪枝:先从训练集生成一棵完整的决策树(相当于结束位置),然后自底向上的对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点,相当于将子树剪去。
决策树分类
与其他分类器一样,将两个数组作为输入: 一个数组 X,稀疏或密集,其形状包含 训练样本,以及整数值的数组 Y、shape、 持有训练样本的类标签:
from sklearn.tree import plot_tree
from sklearn import tree
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
plt.figure()
iris = load_iris()
clf = tree.DecisionTreeClassifier().fit(iris.data, iris.target)
plot_tree(clf, filled=True)
plt.title("Decision tree trained on all the iris features")
plt.show()
结果如下图:
x[i] <= value
表示在特征 i 上的一个阈值分割点。gini = value
是节点处的基尼指数,它衡量了该节点样本的纯度(越小表示类别越单一)。samples = value
指的是当前节点包含的数据样本数量。value = [class1, class2, ...]
列出了各个类别的计数。
例如,在根节点上,我们看到 x[3] <= 0.8
分割了数据集。如果这个条件为真,则继续向右分支;否则,向左分支。然后,根据后续的特征和阈值,我们可以逐步缩小目标类别的范围,直到达到叶节点,即最终预测结果。
整个过程遵循以下规则:
- 选择一个最优划分属性(如基尼指数最小化)。
- 根据选定的属性及其阈值得到两个子集。
- 对于每个子集递归地应用步骤 1 和 2,直至满足停止条件(如达到最大深度、纯度超过某个阈值等)
Iris feature"指的是鸢尾花数据集(Iris dataset)中的特征(features)。鸢尾花数据集是机器学习中常用的一个经典数据集,由英国统计学家和生物学家Ronald Fisher在1936年发布。这个数据集包含了三种不同种类的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)各50个样本,每个样本都有四个特征,分别是:
- 花萼长度(sepal length)
- 花萼宽度(sepal width)
- 花瓣长度(petal length)
- 花瓣宽度(petal width)
这四个特征是对鸢尾花进行描述的数值型测量,通过这些特征可以区分不同种类的鸢尾花。在机器学习中,研究人员经常使用鸢尾花数据集来演示和测试不同分类算法的性能。
支持向量机(Support Vector Machines, SVM)
- 用于二分类和多分类问题,通过找到能够最大化类别之间边界的超平面来分类数据。
定义了四种不同的SVM模型,分别是线性核、线性SVC、RBF核和多项式核SVM,并对每个模型在数据集上进行训练。只考虑此iris数据集的前 2 个特征:
-
萼片长度
-
萼片宽度
import matplotlib.pyplot as plt from sklearn import datasets, svm from sklearn.inspection import DecisionBoundaryDisplay # 加载数据 iris = datasets.load_iris() # 只考虑前两个特征 X = iris.data[:, :2] y = iris.target C = 1.0 # SVM 正则化参数 models = ( svm.SVC(kernel="linear", C=C), svm.LinearSVC(C=C, max_iter=10000), svm.SVC(kernel="rbf", gamma=0.7, C=C), svm.SVC(kernel="poly", degree=3, gamma="auto", C=C), ) models = (clf.fit(X, y) for clf in models) # 标题 titles = ( "SVC with linear kernel", "LinearSVC (linear kernel)", "SVC with RBF kernel", "SVC with polynomial (degree 3) kernel", ) # 绘制2*2的图 fig, sub = plt.subplots(2, 2) plt.subplots_adjust(wspace=0.4, hspace=0.4) X0, X1 = X[:, 0], X[:, 1] for clf, title, ax in zip(models, titles, sub.flatten()): disp = DecisionBoundaryDisplay.from_estimator( clf, X, response_method="predict", cmap=plt.cm.coolwarm, alpha=0.8, ax=ax, xlabel=iris.feature_names[0], ylabel=iris.feature_names[1], ) ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="b") ax.set_xticks(()) ax.set_yticks(()) ax.set_title(title) plt.show()
svm.SVC(kernel="linear", C=C), svm.LinearSVC(C=C, max_iter=10000)
LinearSVC与SVC(kernel=‘linear’)相似,但内部实现和优化算法不同,LinearSVC使用的是对偶坐标下降法,对大数据集更高效,且支持多分类问题的原生处理,但不直接提供概率预测。
svm.SVC(kernel="rbf", gamma=0.7, C=C)
- .RBF(径向基函数)核,这是一种非常常用的核函数,特别适合处理具有复杂边界的数据。RBF核通过计算输入样本之间的高维空间欧几里得距离的高斯函数,转换原始特征空间。
- 参数
gamma
控制了RBF核的宽度。较大的gamma
值会导致决策边界更加局部化,模型会更倾向于过拟合(对训练数据的噪声敏感);较小的值会使决策边界更平滑,泛化能力可能更好。这里设置为0.7,说明对近邻样本的重视程度较高,模型可能较为复杂。
svm.SVC(kernel="poly", degree=3, gamma="auto", C=C)
- 使用的是多项式核函数,它通过计算输入特征的多项式组合来创建特征空间。这种核函数适用于数据间存在多项式关系的问题。
- 参数
degree
指定多项式的阶数。这里设置为3,意味着模型会考虑三次多项式特征交互,可以捕捉到较复杂的非线性关系。 - 设置为"auto"意味着γ值将由libsvm库根据训练数据自动确定,通常这会基于保持核矩阵正定的要求来决定。自动选择γ可以简化参数调优过程。
3.总结
本周对机器学习的理论以及两大任务进行深入学习,使用鸢尾花数据集在决策树和支持向量机中的分类模型的训练和分类。
更多推荐
所有评论(0)