机器学习(Machine Learning)
机器学习是计算机科学的一个领域,目的在于让计算机能够通过学习数据来做出预测或决策,而无需被明确编程来完成任务。
机器学习的工作模式:
- 数据:机器学习需要数据来“学习”。这些数据可以是图片、文字、数字等。
- 学习过程:计算机使用算法(特定的数学程序)来分析数据,找出数据中的模式或关系。
- 模型:学习的结果是一个“模型”,它可以用来对新的数据进行预测或分类。
例如:垃圾邮件过滤系统中,想要过滤掉电子邮件中的垃圾邮件:
- 数据:有许多标记为垃圾邮件和正常邮件的数据。
- 学习过程:计算机分析这些邮件的内容、发件人等特征,学习哪些特征常出现在垃圾邮件中。
- 模型:训练好的模型可以自动判断新邮件是否是垃圾邮件。
深度学习(Deep Learning)
深度学习通常是人工智能的一部分,被认为是机器学习的一个分支。深度学习专注于基于人工神经网络的算法。这些算法能够处理和理解时间和空间上的复杂依赖关系。深度学习也被称为深度结构化学习(Deep Structured Learning)。
这张图片上面展示了机器学习的流程:
- 在这个流程中,我们首先有一个“输入”(比如一辆车的图片)。
- 然后,由人们提取“特征”(特征提取)。这意味着人们会手动生成一些图片中的一些关键点,比如车的形状、颜色、大小等,作为判断并不是车的参考。
- 接下来,这些提取出来的特征被输入到一个分类器中,分类器会根据这些特征来判断这张图片中有没有车。
- 最终,分类器会输出一个结果:这张图片要么是一辆车,要么不是。
图片下方展示了深度学习的流程:
- 与机器学习不同,在深度学习中,整个过程都是自动化的。
- 输入的仍然是同一张车的图片。
- 不同的是,深度学习模型会自动从图片中提取特征并进行分类。换句话来说,模型不仅学会了“看”图片,还学会了自己从图片中找出什么是重要的,并根据这些信息来判断图片中是否有车。
- 最终,深度学习模型输出一个结果:图片中有一辆车,或者没有。
强化学习(Reinforcement Learning)
强化学习是机器学习的一种方法,通过让代理在环境中不断行动,并根据这些行动所获得的奖励来进行学习。代理的目标是最大化从环境中获得的总奖励,从而学习到最佳的决策策略。
打个比方,强化学习就像训练一只宠物。你希望宠物做出某种行为(比如坐下),当它做对了你就奖励它,而当它做错了你就不会给它奖励。通过不断的尝试和反馈,宠物渐进学会哪些行为是对的,哪些行为是错的。
迁移学习(Transfer Learning)
一种方法,通过使用已经训练好的模型的权重,在新的问题上进行微调,从而加快训练速度并提高模型的表现。
让我们用一个简单的例子来讲解迁移学习,想象你已经学会了一门外语,比如英语,并且你非常流利地使用它。现在你要学习另一门外语,比如法语。
-
普通学习:从头开始学习法语,你需要从基础开始学,例如字母、发音、语法等。这个过程是比较费时的。
-
迁移学习:你已经知道英语的语法、单词和发音规则,这些知识在学习法语时是有帮助的。比如,你知道英语和法语的某些单词非常相似(比如 “hotel” 在英语和法语中都是 “hotel”),你也可以利用你对语法规则的理解来帮助你更快地掌握法语。这就是迁移学习:利用已有的知识(英语)来加快学习新知识(法语)的过程。
在机器学习中,迁移学习的原理类似于上述学习外语的过程:
-
预训练模型:你首先在一个大数据集上训练一个模型,通常这个数据集比较大,任务也相对通用。例如,你可以在一个大规模的图片数据集(如ImageNet)上训练一个深度学习模型,以识别各种物体(如猫、狗、汽车等)。
-
迁移知识:将这个在大数据集上训练好的模型(或其部分,比如模型的前几层)应用到一个新的任务上。例如,你想做一个新的任务——识别某个特定类型的植物。虽然模型之前是为了识别各种物体而训练的,但它已经学到了很多有用的特征(如边缘、形状、纹理等),这些特征对于植物的识别也有帮助。
-
微调:对迁移的模型进行微调。这一步是在你的新任务数据上进一步训练模型,使它能够更好地适应特定的任务。例如,你可以使用植物图片对模型进行进一步的训练,使模型更好地识别不同种类的植物。
监督学习(Supervised Learning)
在有标签的数据集的监督下训练机器学习模型。监督学习算法大致可分为两大类型:回归和分类。
假设你有一批已经标注了各种形状的图片(正方形、圆形、三角形等),你用这些图片来训练一个模型,让其学会在看到新图片时也能正确分类到是哪种形状。
无监督学习(Unsupervised Learning)
一种机器学习方法,在这种方法中,模型在没有标签的数据集上进行训练。无监督学习就像是让学生自己去发现问题的答案。你不给学生任何标注的答案,而是让他们自己去找出数据中的规律或模式。常见无监督学习包括降维和聚类。
这次的图片没有标签,监督学习需要自己根据这些图片分组,比如将四条边的分为一组,但是模型不会知道这是正方形,只是觉得他们很相似,所有就分为一组。
算法(Algorithm)
在机器学习中,算法就是用来处理数据并创建模型的一套步骤或方法。可以把它理解为一个“食谱”,它告诉计算机如何从数据中“学习”。比如,线性回归和决策树就是两种不同的算法。
模型(Model)
算法是处理数据的“方法”或“过程”。
数据集合是算法学习的原料,它合包含了用来训练和验证算法的数据。
模型是算法在特定数据集合上经过训练后得到的“结果”。它代表了从数据中学到的模式和关系,并可以用来对新数据进行预测或分类。
人工神经网络(Artificial Neural Networks, ANNs)
人工神经网络(ANNs)是一种受生物神经网络启发的计算模型,试图模拟人脑中神经元之间的连接和工作方式,用于处理复杂的计算任务,比如分类、回归、图像识别等。
就像动物大脑中的神经元通过连接来处理信息,人工神经网络也通过类似的“神经元”连接来学习和做出预测。
想象一下,人工神经网络就像一个“大型团队”,这个团队有很多“小组”在一起工作,每个小组负责不同的任务。
-
神经元(Neuron):每个小组成员都像一个神经元(大脑的基本单元),他们接收信息(输入数据),处理信息(加权求和、激活函数),然后将结果传递给其他小组成员(下一层神经元)。
-
层(Layer):小组成员们被分成不同的“层级”,每一层的成员只和相邻层的成员进行交流。最常见的层有:
- 输入层(Input Layer):接收外部数据,就像是团队最初接到的任务。
- 隐藏层(Hidden Layer):处理和分析数据,相当于小组成员在内部讨论如何完成任务。
- 输出层(Output Layer):给出最终的结果,相当于团队完成任务后给出的答案。
-
权重(Weight):团队成员之间的交流强度,可以类比为权重。重要的信息会被强调(权重大),不重要的信息会被弱化(权重小)。
-
激活函数(Activation Function):决定小组成员是否要“认真对待”某个信息的规则。类似于“要不要采取行动”的决策规则。
举一个具体的例子:假设你有一张图片,你希望神经网络判断图片上是否有猫。
- 输入层:接收到图片的像素值作为输入数据。
- 隐藏层:的神经元将这些像素值进行处理,逐步提取图片中的特征(比如边缘、形状)。
- 输出层:将处理后的结果综合,最终得出一个概率值,表示这张图片上是否有猫。
如果输出的概率值大于某个阈值(比如0.5),神经网络会判断图片上有猫;否则,判断图片上没有猫。
阳性(Positive)和阴性(Negative)(Confusion Matrix)
阳性(Positive) 通常指的是我们关注的类别或事件,也称为正类;阴性(Negative): 指的是与阳性相反的类别或事件,也称为负类。
如果您对猫类别感兴趣,那么猫就是正类,而其他事物(例如狗,牛,人类)都是负类。
如果您的兴趣是检测/识别行人,那么行人就是正类,而其余的则是负类。
混淆矩阵(Confusion Matrix)
混淆矩阵又称为可能性矩阵或错误矩阵,它是一种用于评估机器学习分类模型表现的工具,它将模型的预测结果分为四类,如果让一个模型预测一批图片是否包含猫:
- 真阳性(True Positive, TP):实际为阳性,预测也为阳性,例如模型将实际包含猫的图片正确地分类为有猫。
- 真阴性(True Negative, TN):实际为阴性,预测也为阴性,例如模型将实际不包含猫的图片正确地分类为没有猫。
- 假阳性(False Positive, FP):实际为阴性,预测为阳性,例如模型错误地将实际不包含猫的图片分类为有猫。这也被称为第一类错误(Type I Error)。
- 假阴性(False Negative, FN):实际为阳性,预测为阴性,例如模型错误地将实际包含猫的图片分类为没有猫。这也被称为第二类错误(Type II Error)。
简单来说,你可以将 False Positive 称为误报,将 False Negative 称为漏报。
第一类错误(Type 1 Error)和第二类错误(Type 2 Error)
第一类错误又称为假阳性,指模型错误地将负类样本预测为正类样本。
第二类错误又称为假阴性,指模型错误地将正类样本预测为负类样本。
准确率(Accuracy)
准确率用于衡量一个分类模型的效果。它表示你预测对的次数占总预测次数的百分比。例如,如果你测试了100张图片,其中有90张预测正确,那么准确率就是90%。
数学表示为:
精确率(Precision)
精确率回答了这样一个问题:在所有被预测为正类的样本中,实际为正类的比例是多少?
召回率(Recall)
召回率回答了这样一个问题:在所有实际为正类的样本中,被正确识别为正类的比例是多少?召回率也称为灵敏度(Sensitivity)或真阳性率。
特异性(Specificity)
等同于真正负类率,衡量模型正确识别负类的能力。
假阳性率(False Positive Rate, FPR)
假阳性率是指在所有实际负样本中,错误地被预测为正样本的比例。它可以通过下列公式计算:
数学上计算为:
准确率、精确率、召回率计算示例
假设某模型将100个肿瘤分为恶性(正类别)或良性(负类别):
根据上述例子的数据我们来计算该模型的准确率、精确率、召回率:
准确率 = (TP + TN) / (TP + TN + FP + FN) = (1 + 90) / (1 + 90 + 1 + 8) = 0.91
精确率 = TP / TP + FP ) = 1/(1+1) = 0.5
召回率 = TP / TP + FN ) = 1/(1+8) = 0.11
特异性 = TN / TN + FP ) = 90/(90+1) = 0.98
假阳性率 = FP / (FP + TN) = 1 / (1 + 90) = 0.02
标注(Annotation)
标注就是给数据打标签的过程。在机器学习中,标注数据是为了让模型能够学习如何将输入数据映射到正确的输出。标注的过程通常包括以下几个步骤:
- 选择数据:选择需要标注的数据,例如图片、文本或视频。
- 添加标签:为每个数据样本添加标签。例如,我们有一组图片,我们会给每张图片加上标签,标明这张图片是“狗”还是“猫”。
- 检查和验证:确保标注的准确性,以便模型可以学习到正确的信息。
比如,在训练一个手写数字识别模型时,我们需要给每张手写数字的图片标上正确的数字。这个过程就叫做标注。
属性(Attribute)
属性(Feature) 是机器学习模型用来进行预测或分类的数据的特征或变量。它是数据中的一个维度,描述了数据集中的某个方面。
例如,一个模型要判断一种水果们是苹果还是橙子。就需要知道水果的颜色、大小、形状、重量等,这些就是水果的属性。
总之属性就是数据中的“特征”,是用来描述和区分数据对象的不同维度,机器学习模型通过这些属性来学习和做出决策。
ROC(曲线(ROC, Receiver Operating Characteristic Curve)
是一种图表,用来展示分类模型在不同分类阈值下的真阳性率与假阳性率的关系,以评估模型的性能。
ROC 曲线的绘制步骤:
- 收集模型预测概率:使用模型对每个样本进行预测,得到每个样本的概率值(或评分),这些概率值表示样本属于正类的可能性。
- 选择不同的阈值:选择不同的阈值来将概率值转化为二分类结果。例如,可以选择阈值为 0.1, 0.2, 0.3, … , 0.9。
- 计算 TPR 和 FPR:对于每个阈值,计算对应的 TPR 和 FPR。
- 绘制 ROC 曲线:将所有阈值对应的 TPR 和 FPR 绘制在图上,FPR 为 x 轴,TPR 为 y 轴,绘制出 ROC 曲线。
- 计算 AUC:ROC 曲线下的面积(AUC)表示模型的整体性能。AUC 值越高,模型的分类性能越好。
举个例子,假设有一个医疗检测模型,用于判断患者是否患有某种疾病(正样本)或没有疾病(负样本)。我们将绘制 ROC 曲线来评估模型性能。
- 收集预测概率:
- 预测结果可能是每个患者的概率值,比如 [0.1, 0.4, 0.35, 0.8]。
- 选择不同阈值:
- 选择阈值 0.2, 0.4, 0.6, 0.8 等。
- 计算 TPR 和 FPR:
- 对于阈值 0.2,将所有预测概率大于等于 0.2 的样本标记为正类。计算 TPR 和 FPR。
- 重复上述步骤,计算其他阈值下的 TPR 和 FPR。
- 绘制 ROC 曲线:
- 在图中,x 轴是 FPR,y 轴是 TPR,绘制 ROC 曲线。
- 计算 AUC:
- 计算 ROC 曲线下的面积。AUC 越接近 1,模型性能越好。
假设你绘制的 ROC 曲线如下:
1.0 | *
| *
| *
| *
| *
| *
0.0 |______________________
0.0 0.2 0.4 0.6 0.8 1.0
曲线接近左上角(TPR 高而 FPR 低)表示模型性能好。曲线接近对角线表示模型性能与随机猜测差不多。
曲线下面积(AUC, Area Under Curve)
曲线下面积(AUC)是 ROC 曲线下的面积,表示分类模型在所有可能的分类阈值下的总体表现。
AUC反映了二分类模型对正负样本的区分能力,取值范围从 0 到 1:
- AUC = 1:模型能够完美地区分所有正样本和负样本。
- AUC = 0.5:模型的性能相当于随机猜测,没有实际区分能力。
- AUC < 0.5:模型的预测性能差于随机猜测,通常需要重新训练或调整模型。
偏差(Bias)
偏差(Bias) 是指模型预测的值与真实值之间的系统性误差。偏差反映了模型的简单程度,或模型对训练数据的拟合能力。偏差大的模型通常过于简单,不能很好地捕捉数据中的复杂模式,因此会产生较大的误差。
想象你在学习射箭,每次射箭的目标是靶心(即真实值),而箭射中的地方是模型预测的值。
- 偏差小:如果你射箭的箭总是接近靶心(下图左边),即便有些分散,但总体离靶心不远,说明你的技术还不错。偏差小的模型通常能较好地捕捉数据中的模式。
- 偏差大:就像你射箭的箭总是偏离靶心(下图右边),集中在一个离靶心较远的地方,说明你射箭的技术(模型)有问题,箭总是打在偏离目标的地方(预测不准)。这种情况通常出现在模型过于简单的情况下,比如线性模型处理非线性数据。
方差(Variance)
方差(Variance) 是指模型预测值的变化范围。它反映了模型对训练数据的敏感程度,即模型是否容易被数据中的噪声影响。方差大的模型对训练数据的变化很敏感,容易在不同的数据集上表现出不同的结果,导致不稳定。
还是以射箭为例,每次射箭的目标是靶心(即真实值),但你每次射箭的结果都分散得很开,虽然有些箭可能打中了靶心,但其他箭分布在靶子各处,形成一个较大的散布区域。这种不稳定性代表了方差比较大。
- 低方差:模型输出的变化很小,即便不完全准确,但变化不大,表现稳定。
- 高方差:模型就像你的射箭技术不稳定,有时能命中靶心,但有时又离靶心十万八千里,整体结果波动很大。这通常发生在模型过于复杂的时候(比如深度神经网络),模型试图过度拟合训练数据中的每一个细节(包括噪声)。
下图的左边的预测结果较为一致,因此方差较低;右边图的预测结果分散且未能收敛,因此方差较高。
分类(Classification)
分类是指将数据点分配到预先定义的类别中。模型是在有标记数据(带标签类别标签)的基础上进行训练的,目标是预测新数据属于哪个类别。以下是一些常见的分类算法类型。
下面是2个典型的分类场景:
- 垃圾邮件分类:将邮件分类为“垃圾邮件”和“正常邮件”。
- 图片分类:根据图片的内容将其分类为“猫”、“狗”、“鸟”等类别。
分类阈值(Classification Threshold)
分类阈值是决定模型预测结果的标准值。例如,如果模型预测一封邮件是垃圾邮箱的概率为95%,而我们设定的分类阈值是90%,那么我们认为这封邮件是垃圾邮件。反之,如果模型预测一封邮件是垃圾邮箱的概率<90%,我们则认为这封邮件不是垃圾邮件。
聚类(Clustering)
聚类是一种无监督学习方法,其中模型根据数据的某些内在特征将数据分成不同的组,使得相同组中的数据点彼此之间更相似,而与其他组的数据点区别更大。常见的聚类算法包括:
- K均值聚类(K-Means)、
- 层次聚类(Hierarchical Clustering)
- 亲和聚类(Affinity Clustering)。
下面是2个典型的聚类场景:
- 客户细分群:根据消费行为将客户分散到不同的群体。
- 图像分割:将一张图片分散到不同的区域,每个区域代表不同的物体或背景。
想象你来到一个没有标签的水果市场,看到各种各样的水果。你根据决定水果的颜色、大小、形状将它们分成不同的组,而不是依赖于预先知道的标签。
总结分类和聚类的区别:
- 分类是根据已有的标签进行分类,是一项有监督学习任务。
- 聚类是根据数据本身的特征进行分组,是一项无监督学习任务。
收敛(Convergence)
收敛(Convergence)是指在训练机器学习模型时,随着迭代次数的增加,模型的损失函数逐渐减小并趋于稳定的过程。换句话说,收敛意味着模型正在逐渐学习到数据中的规律,达到最终一个稳定的状态,不再显着改变。
想象你在爬山,一开始你不熟悉的路径(模型在学习),你可能会走错路,但随着你不断调整方向(更新参数),你离山顶越来越近(损失函数减少),最后你找到了到达山顶的最佳路径,而最终到达山顶,这就是一个收敛的过程。
- 收敛快:表示你很快找到了正确的路径,模型很快学会了数据中的规律。
- 收敛慢:表示你花了很多时间才找到正确的路径,模型学习速度较慢。
维度(Dimension)
维度(Dimension)在机器学习中通常指的是数据特征的数量。每个维度代表数据中的一个特征或属性。维度越多,数据越复杂,模型需要处理的信息量就越大。
想象你在分析一个人,他的年龄、身高、体重、性别、职业等都是他的特征。每增加一个特征,其实就增加了一个维度。
- 二维数据:例如你只考虑一个人的身高和体重,这就是二维数据(2个维度)。
- 三维数据:如果你再考虑他的年龄,那就是三维数据(3个维度)。
- 高维数据:当你考虑更多特征时,维度越来越高,比如10个特征就是10维数据。
维度越多,模型需要处理的信息越复杂,但也更容易遇到所谓的“维度灾难”,即数据维度过多导致模型难以有效学习。
丢弃法(Dropout)
丢弃法是一种正则化技术,用于在训练神经网络时,通过随机丢弃神经网络中的某些隐藏层或可见单元来防止过拟合。这样可以避免模型对训练数据的过度依赖,从而提高其在新数据上的泛化能力。
想象一下你在团队合作中完成一个项目。每次开会时,都会随机“请假”一些成员,让剩余的成员完成任务。这种做法可以防止团队过度依赖某些团队关键成员,从而让整个团队更具弹性和多样性。
- 没有丢弃法:团队缺乏依赖某些成员,他们不在时,项目可能无法顺利完成(模型过)。
- 使用丢弃法:团队成员随机请假,让其他成员更多地参与和学习,从而提高团队的整体能力(防止模型过掉)。
迭代(iteration)和 轮次(Epoch)
1轮次指的是整个数据集被完整地迭代一次。在机器学习训练中,每经过一轮次,模型会处理所有的数据一次,并更新参数。
让我们通过一个例子来理解迭代和轮次,假设我们有 1000 个训练数据集,我们将使用它们来训练机器学习模型。
在上述场景中,我们可以将训练数据集拆分成相当大的批次。假设我们考虑了每批次 500 个数据集,那么需要 2 次迭代才能完成 1 个 轮次。
从数学上来说,我们可以这样理解;
- 训练示例总数 = 1000;
- 假设每个批次大小=500;
- 那么迭代次数 = 训练示例总数/单个批次大小 = 1000/500
- 总迭代次数 = 2
- 1 个Epoch = 2 次迭代
插值(interpolation)和 外推(Extrapolate)
假设我们有以下数据集:
我们可以用一个简单的线性回归模型来拟合这些点:
当我们使用拟合的回归模型来预测现有数据点范围内的点的值时,这称为插值。相反,当我们使用拟合的回归模型来预测现有范围之外的点的值时,这被称为外推。
举个例子:我们有一个时间序列数据,但某些时间点的数据缺失。例如,你可能有2010年、2011年、2013年、2014年、2015年、2016年的数据,但2012年的数据丢失。在这种情况下:
- 插值:用2011年和2013年的气温数据进行插值,估算2012年的气温。
- 外推:用2011年和2013年的气温数据进行插值,估算2024年的气温。
损失(Loss)和 损失函数(Loss Function)
损失是指模型预测结果与实际结果之间的差距。简单来说,它等于实际值减去预测值。损失值越低,说明模型的表现越好(但需要注意避免过拟合)。
损失函数是用来衡量这个差距的数学函数。它将预测值和实际值进行比较,输出一个代表误差的数值。常见的损失函数有均方误差(Mean Squared Error,MSE)和交叉熵损失(Cross-Entropy)。
特征(Feature)和 特征向量(Feature Vector)
特征是对象的一个属性。例如,一个人的一个特征是他们的体重。另一个特征是他们的身高。还有一个特征是他们的腰围。当我们选择一组特征并将它们组合成一个元组时,我们会得到一个特征向量,这里是(身高,以英寸为单位,体重,以磅为单位,腰围,以英寸为单位)。在这个系统中,当前描述我的特征向量是(68.5,175,33)。
局部最小值(Local Minima)和 全局最小值(Global Minima)
局部最小值是损失函数在某个局部区域内的最小值。在这个点,损失函数值比附近的点要小,但在更远的地方,可能还有更小的值。
全局最小值是指损失函数在整个定义域内达到的最小值。通常代表模型的最优性能。
输入层(Input Layer)
输入层是神经网络的第一层,它负责接收外部数据并将其传递给网络的下一层。可以把它看作是神经网络的“感知器”,它负责接收和处理从外部世界来的信息。
假设你在开发一个邮件分类系统,这个系统的目标是将邮件分为“垃圾邮件”和“正常邮件”两类。这个系统可以用一个神经网络来实现。
这个例子中,输入层会接收与每封邮件相关的特征,比如:
- 单词频率:邮件中每个单词出现的次数(如“免费”出现了5次)。
- 邮件长度:邮件的总字符数。
- 发件人:发件人的邮件地址。
如果有100个特征(例如100个不同的单词频率),那么输入层会有100个节点,每个节点对应一个特征。
隐藏层(Hidden Layers)
在神经网络中,隐藏层指的是介于输入层和输出层之间的层。这些层负责学习和提取数据的复杂特征,从而帮助模型做出更准确的预测。
在邮件分类系统中,隐藏层可以识别复杂的模式和特征。例如:
- 特征组合:隐藏层可能学会将“免费”与“优惠”这两个词结合起来,识别出这可能是垃圾邮件的一个特征。
- 邮件结构:隐藏层可能会学习到垃圾邮件往往具有某些特定的结构特征,比如大量的促销词汇和超链接。
假设有两个隐藏层,每个隐藏层有50个神经元,隐藏层的任务是将输入特征的组合转化为更加抽象的特征。
输出层(Output Layer)
输出层是神经网络的最后一层,负责生成最终的预测或分类结果。它根据隐藏层的计算结果给出最终的答案。
在邮件分类系统中,输出层的任务是确定邮件的类别:
- 节点1(Spam):表示邮件是垃圾邮件的概率。
- 节点2(Clean):表示邮件是正常邮件的概率。
- 节点3(Malicious):表示邮件是恶意邮件的概率。
最终的分类结果是概率最高的类别。例如,如果网络的输出概率是:
- 垃圾邮件(Spam):0.4
- 正常邮件(Clean):0.3
- 恶意邮件(Malicious):0.3
则邮件会被分类为垃圾邮件(Spam),因为其概率最高。
实例(Instance)
实例是数据集中一行特征值的样本,也被称为观测值。每个实例包含了一个数据点的所有特征,用于训练和测试模型。
假设你在做一个房价预测模型,那么每一套房子就是一个实例。这套房子的面积、位置、房龄等就是它的特征。每个实例都有自己独特的特征值,比如这套房子的面积是100平方米,房龄是10年等。
独立同分布样本(IID sample)
独立同分布样本指的是样本中的每个随机变量都具有相同的概率分布,并且彼此之间是独立的。这意味着每个样本的分布一致,且样本之间没有关联。
- 独立:指的是每个样本的数据点之间没有任何关系或影响。例如,一个人的身高不会影响另一个人的身高。
- 同分布:指的是所有样本来自于相同的概率分布,也就是说,每个样本是从同一个“总体”中抽取的,遵循相同的统计规律。例如,如果你测量了多个人的身高,并且所有这些身高数据都来自于同一城市,那么这些身高数据就是同分布的。
假设你从一个大袋子里随机取出很多球,这些样本满足独立同分布:
-
独立:假设每次你从袋子里拿出一个球,不管你取了哪个球,它的颜色不会影响其他球的颜色。每次取球的结果都是独立的。
-
同分布:每个球的颜色遵循相同的分布(例如,袋子里30%是红球,50%是蓝球,20%是绿球),无论你取哪个球,它的颜色分布都是一致的。
再举一个不符合独立同分布的例子:假设你在研究城市居民的健康状况,而你选择的样本是所有来自同一个家庭的人。这时候,样本可能不满足独立性,因为家庭成员之间可能存在相似的健康状况(比如遗传因素、生活习惯等)。而且,这些人可能并不完全代表整个城市居民的分布,因此也不满足同分布的条件。
标签(Label)
标签(Label)是机器学习中用来表示实例的真实结果或类别。对于监督学习来说,标签是模型用来学习的目标。模型通过学习特征与标签之间的关系,来预测新数据的标签。
在房价预测问题中,标签就是每套房子的实际售价。模型通过学习房子的特征和对应的售价(标签)之间的关系,来预测新房子的价格。
如果是分类问题,比如图像分类,标签可能是“Cat”或“Dog”这样的类别。
学习率(Learning Rate)
学习率(Learning Rate)是指模型在每次更新参数时的步长。它决定了模型学习新知识的速度。
如果学习率太大,模型可能会错过最优解:
如果学习率太小,模型学习会很慢,甚至可能陷入局部最小化:
打个比方,你在山谷里找最低点(最优解),学习率就像你的步幅。如果步幅太大,你可能直接越过谷底(错过最优解);如果步幅太小,你走得太慢,可能会花很长时间才能接近谷底(慢慢学习)。
归一化(Normalization)
归一化(Normalization)是指将数据的特征值调整到一个统一的范围内,通常是0到1之间。这样做的目的是为了消除不同特征之间由于量纲不同而造成的影响,从而让模型更好地学习数据。
上面的描述可能很难理解,这里我们还是举个例子,假设房子有两个特征,一个是房子的面积,单位是平方米,另一个是房子的房龄,单位是年。面积的数值可能很大,比如100平方米,而房龄的数值通常比较小,比如10年。如果不进行归一化,模型可能会过度关注数值较大的特征(如面积)而忽视其他特征。归一化后,这两个特征都会被调整到0到1之间,从而让模型更公平地看待它们。
为了加深理解,我们就以上面的例子看看如何进行归一化处理:
假设有以下4套房子的特征数据:
看看如何使用Min-Max 归一化,Min-Max 归一化是一种常见的归一化方法,公式如下:
公式中:
- X 是原始特征值。
- 𝑋minimum:是该特征的最小值。
- 𝑋maximum:是该特征的最大值。
- 𝑋normalized:是归一化后的特征值。
下面看看这个例子归一化的具体过程:
-
找出每个特征值的最小和最大值
- 对于面积特征值:𝑋min = 80;𝑋max = 120
- 对于房龄特征值:𝑋min = 10;𝑋max = 25
-
使用 Min-Max 归一化公式对每个特征值进行归一化:
- 面积特征:
- 100平方米的归一化值:(100-80) / (120 - 80) = 0.5
- 80平方米的归一化值:(80-80) / (120 - 80) = 0
- 120平方米的归一化值:(120-80) / (120 - 80) = 1
- 90平方米的归一化值:(90-80) / (120 - 80) = 0.25
- 房龄特征:
- 10年的归一化值:(10-10) / (25 - 10) = 0
- 20年的归一化值:(20-10) / (25 - 10) = 0.67
- 15年的归一化值:(15-10) / (25 - 10) = 0.33
- 25年的归一化值:(25-10) / (25 - 10) = 1
- 面积特征:
-
归一化后的数据表:
噪声(Noise)
噪声是指数据中存在的无意义或干扰的信息,这些信息会影响模型的准确性和预测效果。
假设你在进行房价预测,有一条数据记录了一套面积100平方米的房子售价为1000万,这个价格明显高于其他同等条件的房子。这可能是由于记录错误或市场中的偶然情况(比如这套房子是名人故居)。如果模型把这个数据当作普通数据来学习,可能会影响模型的预测准确性。这种异常数据就是噪声。
零准确度(Null Accuracy)
零准确度是指在分类问题中,如果模型的预测结果完全随机或者对所有输入都输出相同的类别,那么模型的准确度可能为0%。换句话说,模型完全没有学会如何区分不同的类别。
举个例子:假设你训练了一个模型来判断电子邮件是否为垃圾邮件。若模型无论什么邮件都预测为“非垃圾邮件”,而实际上你有很多垃圾邮件,那么模型的准确度可能非常低,接近0%。这种情况就称为“零准确度”。
优化器(Optimizers)
优化器是用于调整模型参数的一种算法,以使损失函数的值最小化。也就是说优化器的目标是找到一个最优的参数组合,使得模型的预测误差最小,梯度下降(Gradient Descent)就是一种常见的优化器。
异常值(Outlier)
异常值是指在数据集中显著不同于其他观测值的数据点。这些值通常与大多数数据样本有很大差异。
例如在房价预测中,大多数房子的价格可能在50万到100万之间,但有一套房子售价2000万,这个数据点就可能是一个异常值。模型如果过于关注这种异常值,可能会导致预测结果不准确。
拟合(Fitting)
简单的讲,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通 过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的 差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合,否则叫作非线性拟合。
在拟合过程中,通常情况下,你一开始并不知道数据的生成函数是什么。你只有一组已知的数据点。拟合的目的是通过调整模型的参数,找到一个最适合这些数据点的函数。
例如,假设你知道几个年龄和对应的身高值的数据点,,但不知道实际的身高值和年龄之间的具体关系。这时,你可以尝试用不同的函数(如线性模型、二次曲线等)来尝试拟合这些数据,这些函数包含一些可以调整的参数,通过不断调整参数,直到找到最适合的数据模型。
假设这里选择了线性模型,即y=kx+b,拟合就是调整参数k和b,使得这个函数的预测值和实际值之间的差异最小。
过拟合(Overfitting)
过拟合是指模型太复杂,过度拟合训练数据中的细节和噪声,导致在训练数据上表现很好,但在新数据上表现很差。相当于用非常复杂的曲线去连接每一个数据点,反而失去了泛化能力。
欠拟合(Underfitting)
欠拟合指模型太简单,无法捕捉数据中的规律,导致训练和测试的准确度都很低。相当于用直尺画一个复杂的曲线,线条根本不能反映实际的形状。
参数(Parameters)和 超参数(Hyperparameters)
参数(Parameter) 是指模型中的可调节变量,它们决定了模型如何根据输入数据进行预测。在训练过程中,优化器会调整这些参数的值,以最小化损失函数,提升模型的预测能力。
在房价预测模型中,参数可能是线性模型中各个特征的权重(比如面积的权重、房龄的权重等)。这些权重决定了每个特征对房价预测的影响程度。训练的过程就是不断调整这些权重,使得模型能够更准确地预测房价。
超参数(Hyperparameters) 是模型在训练前设置的变量,它们不能从数据中学到,需要由人来设定。超参数会影响模型的学习过程和最终性能,常见的超参数有:
- 学习率:控制每次更新参数的步伐大小。如果学习率太大,模型可能会跳过最佳解;如果太小,模型可能收敛得很慢。
- 决策树的深度:在构建决策树时,可以设置树的最大深度。深度太大可能导致过拟合,深度太小可能导致欠拟合。
总而言之:
- 参数是模型从数据中学到的,它们直接决定模型的输出
- 超参数是人为设置的,它们决定模型如何学习。
回归(Regression)
回归是一种机器学习方法,用于预测连续的数值输出。例如,它可以用来预测房价、温度等数值型变量。
正则化(Regularization)
正则化是一种防止模型过拟合的技术,用于防止模型在训练数据上表现过于完美但在新数据上表现不佳的问题。这种技术通过在模型的损失函数中加入惩罚项,约束模型的复杂度,使得模型在面对新数据时表现更好。
假设我们在做一个房价预测模型,模型的目标是根据房屋的以下特征来预测房子的价格。
- 𝑥1:房屋面积
- 𝑥2:房龄
- 𝑥3:是否有游泳池
- 𝑥4:距离市中心的距离
- 𝑥5:房间数量
在没有正则化的情况下,模型可能会为每个特征都分配一个非零的权重,即:
房价=𝑤1 * 𝑥1 + 𝑤2 * 𝑥2 + 𝑤3 * 𝑥3 + 𝑤4 * 𝑥4 + 𝑤5 * 𝑥5 + b
为了防止过拟合,我们引入了正则化。使用L1正则化后,模型可能会认为某些特征对房价的影响较小,比如“是否有游泳池”可能不太重要。L1正则化会倾向于将这些不重要特征的系数 𝑤3压缩为零,结果可能是:
房价=𝑤1 * 𝑥1 + 𝑤2 * 𝑥2 + 𝑤4 * 𝑥4 + 𝑤5 * 𝑥5 + b
这样,模型只会考虑最重要的特征,简化了复杂度。
除了L1正则 化,还有L2正则化等方式。
训练集(Train Set)
用于训练机器学习模型的数据集。
训练集就像是你平时做的练习题,帮助你掌握知识点。
验证集(Validation Set)
验证集比训练集小,用于在训练过程中验证模型的性能和调整参数,以检查模型的泛化能力。
验证集就像是模拟考试,帮助你检查哪些知识点还没有掌握好,调整学习方法。
测试集(Test Set)
用于评估机器学习模型泛化能力的数据集。这些数据在模型训练过程中未被使用。
测试集就是最后的正式考试,用来评估你最终的学习效果。
总结: 训练集用于模型学习,验证集用于模型调优,测试集用于最终评估模型的表现。
通用逼近定理(Universal Approximation Theorem)
通用逼近定理(Universal Approximation Theorem)是机器学习和神经网络领域的一个重要理论,它的核心思想是:具有足够复杂度的神经网络可以逼近任何连续函数。换句话说,一个足够复杂的神经网络可以学到任何复杂的模式或关系。
想象你有一个非常复杂的数学函数,它很难直接描述。通用逼近定理告诉我们,只要你的神经网络够强大(比如有足够的隐藏层和神经元),它就能够近似地拟合这个函数。这样,无论这个函数多么复杂,神经网络都能够学会它的行为。
假设你预测房屋的价格。你有一些数据,包括房屋的面积、房龄、位置等特征,并且你知道价格与这些特征之间存在复杂的非线性关系。
-
普通模型:如果你用一个简单的线性模型(例如线性回归),它可能无法很好地捕捉价格与特征之间的复杂关系。比如,价格可能随着房屋面积的增加而非线性地增长。
-
复杂模型(神经网络):通用逼近定理告诉我们,只要神经网络的结构足够复杂(有足够的隐藏层和神经元),它就能够近似任何你想要的价格预测函数。即使价格和特征之间的关系非常复杂,神经网络也能通过调整其参数来逼近这个关系。
- 输入层:接受房屋的特征(面积、房龄、位置等)。
- 隐藏层:通过多个隐藏层和神经元,逐步提取和组合特征,捕捉复杂的关系。
- 输出层:最终输出房屋的预测价格。
权重(Weights)
机器学习模型中的可学习参数,负责调节模型的输出。
想象一下你在评估一所学校时,决定要考虑多个因素,比如教学质量、校园环境、毕业率等。你认为教学质量最重要,所以赋予它最高的“权重”,而校园环境可能相对来说不太好重要的是,所以赋予较低的“权重”。这些权重有助于你做出最终决定。
在机器学习中,模型会自动调整各个特征的权重,使得模型的预测结果问题准确。
Z均值(Z-score)
Z均值(Z-score),也叫标准分,是一个统计量,用于表示数据点相对于数据集均值的相差程度。它是数据标准化的一种方式,使得不同特征的数据可以处于相同的程度尺下比较。
想象你在参加一个跑步比赛,想知道自己跑得快不快。光看你的成绩可能不够,因为不同比赛的难度不同。于是你计算了自己的Z均值,告诉你自己跑得比平均水平快多少或慢多少。
要计算Z均值,我们需要知道总体平均值 (μ) 以及总体标准差 (σ)。
Z均值为0表示数据点正好是均值,正值表示高于均值,负值表示低于均值。
例如,Z-score为 2 表示数据点比均值高出2个标准差。假设你参加了一个考试,平均分是70分,标准差是5分。标准差代表分数的波动范围。如果你的Z均值为2,意味着你的分数比平均分高出2个标准差,大概高出10分(2 × 5)。所以你的分数可能是80分(70 + 10),这表示你在考试中表现得非常好。