机器学习概述
00 min
2024-4-23

1. 概述

notion image

1.1 定义

机器学习正是这样的一门学科,人的“经验”对应计算机中的“数据”,让计算机来学习这些经验数据,生成一个算法模型,在面对新的情况中,计算机便能作出有效的判断,这便是机器学习。
另一本经典教材的作者Mitchell给出了一个形式化的定义,假设:
  • P:计算机程序在某任务类T上的性能。
  • T:计算机程序希望实现的任务类。
  • E:表示经验,即历史的数据集。
若该计算机程序通过利用经验E在任务T上获得了性能P的改善,则称该程序对E进行了学习。

1.2 基本概念

1.2.1 样本概念

  • 所有记录的集合为:数据集。
  • 每一条记录:一个实例(instance)或样本(sample)。
  • 单个样本的特点:特征(feature)或属性(attribute),特征或属性上的取值为属性(特征)值
    • 对于一条记录,如果在坐标轴上表示,每个西瓜都可以用坐标轴中的一个点表示,一个点也是一个向量,例如(青绿,蜷缩,浊响),即每个西瓜为:一个特征向量(feature vector)。
  • 一个样本的特征数:维数(dimensionality),当维数非常大时,也就是现在说的“维数灾难”。
  • 模型要预测的样本的某个特征:标签(label)或目标(target)
    • 特征是数据中抽取出来的,对预测结果即有用的信息,所以特征是要和目标具有相关性
  • 计算机程序学习经验数据生成算法模型的过程中,每一条记录称为一个“训练样本”,同时在训练好模型后,我们希望使用新的样本来测试模型的效果,则每一个新的样本称为一个“测试样本”。训练样本和测试样本之间本能重复。
  • 所有训练样本的集合为:训练集(trainning set)——特殊。
  • 所有测试样本的集合为:测试集(test set)——一般。
  • 命名:x, y分表表示特征值和目标值;train,test分别表示训练集和和测试集
    • x_train:训练集的特征值
    • x_test:测试机的特征值
    • y_train:训练集的目标值
    • y_test:测试机的目标值
  • 机器学习出来的模型适用于新样本的能力称为:泛化能力(generalization),即从特殊到一般。

1.2.2 算法概念

  • 预测值为离散值的问题为:分类(classification)。
    • 例如预测西瓜是好瓜还是坏瓜,则是分类(二分类)问题
  • 预测值为连续值的问题为:回归(regression)。
  • 监督学习(supervised learning):训练数据有标签(目标)信息的学习任务,分类和回归都是监督学习的范畴。
    • 例如推荐算法就是典型的二分类问题
  • 无监督学习(unsupervised learning):训练数据没有标签(目标)信息的学习任务为,常见的有聚类和关联规则。
    • 无监督学习只有特征没有目标
  • 半监督学习:训练数据部分有标签信息,部分没有标签信息的学习任务
    • 标注少量数据的标签信息,然后训练出一个模型,再利用该模型去套用未标记的数据,最后通过将分类结果和模型分类结果做对比从而对模型做进一步改善和提高
    • 半监督学习方式可以大幅度降低标记成本
  • 强化学习:
在实际开发过程中, 监督学习的分类问题是最常见的。

2. 建模流程

                                                                         建模全流程
建模全流程

2.1 特征工程

 

3. 模型评估与选择

3.1 误差与过/欠拟合

差异(error):对学习器的实际预测结果与样本的真实值之间的差异.
  • 在训练集上的误差称为训练误差(training error)或经验误差(empirical error)。
  • 在测试集上的误差称为测试误差(test error)。
  • 学习器在所有新样本上的误差称为泛化误差(generalization error)
显然,我们希望得到的是在新样本上表现得很好的学习器,即泛化误差小的学习器。因此,让学习器尽可能地从训练集中学出普适性的“一般特征”,这样在遇到新的样本时才能做出正确的判断
  • 过拟合(overfitting):学习器把训练集学的“太好”,导致把训练样本无关的自身特点作为普遍特征
    • 过拟合通常是学习器本身过于复杂导致
    • 过拟合的训练误差十分小,反而测试误差较大
  • 欠拟合(underfitting):学习器把训练集学的“太差”,导致无法学习到训练集的基本特征
    • 欠拟合通常是学习期本身过于简单复杂导致
    • 欠拟合的训练误差大,测试误差同样也大
                                                                             欠拟合与过拟合
欠拟合与过拟合

K-邻近算法

K-邻近算法(K-Nearest Neighbors, KNN)是一种基本的分类和回归算法。它的原理非常简单,通过计算待预测样本与已知样本的距离,选取距离最近的K个样本,然后根据这K个样本的标签进行预测。

算法步骤

K-邻近算法的步骤如下:
  1. 准备数据集:首先,我们需要收集已知样本的特征和标签信息。这些已知样本将用于训练我们的模型。
  1. 计算距离:对于待预测样本,我们需要计算它与已知样本之间的距离。常用的距离度量包括欧氏距离、曼哈顿距离等。
  1. 选择K值:在K-邻近算法中,K代表我们选择的最近邻居的数量。我们需要确定一个合适的K值,通常通过交叉验证来选择最佳的K值。
  1. 进行投票:根据K个样本的标签进行投票,选择票数最多的标签作为预测结果。如果是回归问题,可以计算K个样本标签的平均值作为预测结果。
  1. 输出预测结果:最后,我们将预测结果返回。

算法特点

K-邻近算法具有以下特点:
  • 简单直观:K-邻近算法的原理非常简单易懂,容易实现。即使对于初学者来说,也很容易理解和应用。
  • 无参数:K-邻近算法不需要进行参数估计,无需事先假设数据分布。这使得它具有更大的灵活性,可以适用于各种数据类型。
  • 非线性:K-邻近算法可以处理非线性问题,不需要对数据进行线性假设。这使得它可以处理更复杂的数据关系。
  • 可解释性:K-邻近算法的结果具有很强的可解释性。我们可以通过查看K个最近邻的样本了解预测原因,这对于理解模型的决策过程非常有帮助。

算法应用

K-邻近算法在实际应用中广泛使用,特别适用于以下场景:
  • 分类问题:K-邻近算法在分类问题中表现出色,可以应用于图像识别、文本分类等任务。例如,在图像识别中,我们可以使用K-邻近算法将待识别的图像与已知图像进行比较,从而确定其所属类别。
  • 回归问题:除了分类问题,K-邻近算法也可以用于回归问题。例如,在房价预测中,我们可以使用K-邻近算法根据已知房屋的特征(如面积、位置等)来预测待预测房屋的价格。
  • 推荐系统:K-邻近算法可以用于推荐系统中的用户协同过滤。通过根据用户行为的相似性来推荐相似用户感兴趣的物品。例如,在电商网站上,我们可以使用K-邻近算法根据用户的购买历史和浏览行为来推荐相关产品。
虽然K-邻近算法简单易懂,但在实际应用中也存在一些问题。例如,K-邻近算法对异常值敏感,因为它的预测结果完全依赖于最近邻的样本。此外,计算所有样本之间的距离可能会导致计算复杂度较高。因此,在选择使用K-邻近算法时,需要综合考虑数据集特点和算法的优缺点。
希望本文对您理解K-邻近算法有所帮助!