一、机器学习
1.1 什么是机器学习?
计算机程序从经验 E 中学习解决某个任务 T,进行某一性能度量 P,通过 P 测定在 T 上的表现因 E 而提高。(重要的三元素:任务T + 经验E + 性能P)
eg:跳棋程序
E: 程序自身下的上万盘棋局
T: 下跳棋
P: 与新对手下跳棋时赢的概率
1.2 监督学习supervised learning(回归问题regression、分类问题classification、带标签)
定义:给算法一个数据集,其中包含了正确答案,算法的目的是给出更多的正确答案
详细解释: 监督学习的训练数据包括输入特征和对应的标签或类别。在监督学习中,模型通过分析训练数据的特征和对应的标签之间的关系,来学习一个预测模型。然后,使用这个模型来预测新的、未标记的数据样本的标签或类别。
例子:手写数字识别是一个监督学习的例子。训练数据包括一系列手写数字的图像(输入特征)以及对应的数字标签。模型会学习不同数字的特征,并根据这些特征预测新的手写数字图像的对应数字。
例1.房价预测(属于回归问题)
什么是线性回归:
在统计学中,回归(regression)指的是通过建立一个数学模型来研究两个或多个变量之间的关系。线性回归是一种常见的回归分析方法。线性回归是一种用于建立和预测连续变量之间线性关系的统计模型。它通过在一个或多个自变量(输入特征)与一个因变量(输出目标)之间拟合一个线性方程来描述两者之间的关系。
线性回归模型的主要目标是找到最佳拟合直线,使得预测值与真实观测值之间的残差(差异)最小化。这个直线可以用以下形式的方程表示:y = b₀ + b₁x₁ + b₂x₂ + … + bₙxₙ,其中y表示因变量,x₁、x₂、…、xₙ表示自变量,b₀、b₁、b₂、…、bₙ表示拟合的系数。
线性回归的含义是通过拟合一条直线来建立自变量与因变量之间的线性关系,并且可以利用这个关系进行预测或推断。该模型可以帮助我们理解自变量如何影响因变量,并且可以用于预测未知的因变量值。例如,通过给定一些自变量的值,我们可以使用线性回归模型来预测房屋的价格、销售量等等。
回归问题目的: 预测连续的数值输出图中明显是二次方程的拟合效果更好。
例2.预测肿瘤是良性还是恶性(属于分类问题)
分类问题目的: 预测离散值输出。
就本问题而言,结果只有0和1的输出。
什么是分类问题:
在机器学习中,分类是一种监督学习任务,其中我们的目标是将数据样本分配到预定义的类别或标签中。分类任务可以被看作是将输入空间划分为不同的决策区域,每个区域对应一个类别。
分类问题的关键是使用之前标记好的训练数据来构建一个预测模型,该模型可以根据输入的特征,将新的未标记数据分配到合适的类别中。这个模型通常是根据已有数据样本的特征和对应的标签之间的关系进行训练的。
例如,在手写数字识别中,我们希望将手写数字的图像分为0到9的不同类别。为了达到这个目标,我们会使用训练集,其中每个图像都有与之对应的数字标签。我们会训练一个分类模型,通过学习图像中不同的特征和数字之间的对应关系,来进行数字的分类预测。
分类问题在许多实际应用中具有广泛的用途。例如,垃圾邮件分类、恶意软件检测、图像分类、文本分类、疾病预测等等。通过分类模型,我们可以基于数据的特征,自动将未知的数据样本分配到特定的类别或标签中,从而帮助我们做出决策、了解数据的特点和进行预测。
①当只有一个特征时:
②当有两个特征时:
3.无监督学习
只给算法一个数据集,但是不给数据集的正确答案,由算法自行分类。
无监督学习可以用于以下几种问题:
-
聚类(Clustering):将数据样本划分为相似的组或簇,每个簇内的样本彼此相似,而不同簇之间的样本不相似。聚类算法旨在发现数据中的潜在群组和相似性,对数据进行划分和归类。
-
降维(Dimensionality
Reduction):降低高维数据的维度,同时保留大部分数据的信息。通过降维可以减少数据存储和计算的复杂性,同时有助于可视化和理解数据。 -
关联规则学习(Association Rule
Learning):发现数据中的关联和关系。关联规则学习关注于寻找数据项之间的依赖关系和频繁出现的模式。 -
异常检测(Anomaly Detection):识别不符合正常模式或数据分布的异常样本。异常检测主要目的是检测数据中的罕见或不寻常的行为。
-
主题建模(Topic Modeling):从文本数据中发现主题或隐藏的语义结构。主题建模可以帮助我们了解文本数据中的主要主题和关键词。
二、单变量的线性回归 univariate linear regression
2.1 线性回归模型
这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们: 根据我们的数据来说,房子实际的价格是多少,而且,更具体来说,这是一个回归问题。回 归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格。
这里我们输入特征x,经过训练算法的处理,输出估计值y-hat,y-hat是我们的一个预测值,不一定等于真实值。在线性回归中,函数f是线性的,只含有一个特征/输入变量,所以这样的问题称作单变量线性回归问题。
2.2 代价/损失函数
2.2.1 代价/损失函数的推导
模型输出的是一个预测值,模型中的w和b这两个参数需要我们进行调整,w代表的是直线的斜率,b代表的是直线在y轴上的截距,我们需要尽量地使直线和数据相拟合。
由于我们的预测值与实际值总是有误差存在的,我们使用均方误差来衡量这个尺度。选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,我们通过误差的大小来对参数进行调整。
注意:这个公式中的1/2m一般写成1/m,这里的2是为了方便计算。cost function函数就是根据全部实际值和预测值之差的平方和推导出。
2.2.2 理解代价函数
首先需要明确我们的目标是最小化代价函数,使得y-hat与实际值尽量拟合,并找出最小化代价函数的参数(单变量线性回归中是w和b)。
现在开始绘制J(w)的图像,假设训练集的数据如下左图所示,当w等于1时,J(w) = 0。
继续绘制J(w)的图像,当w=0.5时,可以计算出J(w)的值,并把点标在图像上。
测试完一系列点,最终的代价函数可视化图像如下所示,当w=1时,代价函数最小。
2.2.3 代价函数的可视化
如果是三维空间的话是碗状的:
或者是等高线图:
在这种图中,能使得预测值更接近中心点的话,则证明拟合的效果更好。
2.3 梯度下降算法 Gradient Descent algorithm
2.3.1 梯度下降算法是如何实现的
首先梯度下降算法的目标是求得函数的最小值,梯度下降的思想是:我们随机选择参数组合(w,b),计算代价函数,再寻找下一个参数组合,计算代价函数,持续这样做直到我们得到一个局部的代价函数最小值(local minimum).
梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
用下山作例子,我们站在山坡上,查看周围,你会发现最佳的下山方向,你再看看周围,然后再按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。
这里引入一个新的参数:𝑎学习率(learning rate),它决定代价函数向着下降程度最大的方向迈出的步子有多大。
下面介绍一种梯度下降的另一种变体:
批量梯度下降(batch gradient descent)
在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
在梯度下降算法中,这是正确实现同时更新的方法。我不打算解释为什么你需要同时更新,同时更新是梯度下降中的一种常用方法。
2.3.3 学习率
如果𝑎太小即学习速率太小,它会需要很多步才能到达全局最低点。
如果𝑎太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果𝑎太大,它会导致无法收敛,甚至发散。(之字形)