Machine Learning Specialization 学习笔记(1)

文章目录


前言

博客仅记录个人学习进度和一些查缺补漏。

学习内容:BV1Bq421A74G


一、监督学习

-Supervised Learning (rapid advacements used most in real-world applications)

监督学习是机器学习中的一种常见方法,它使用标记的训练数据来训练模型,以便模型能够预测或决定未见过数据的标签。在监督学习中,每个训练样本都有一个与之相关的输出标签,模型的目标是学习输入数据和输出标签之间的关系。以下是监督学习的一些关键特点和常见任务:

  1. 分类 :预测离散标签的任务。例如,根据电子邮件的内容判断其是否为垃圾邮件,或者根据图像识别图像中的对象。.

  2. 回归 :预测连续值的任务。例如,根据房屋的特征预测其价格,或者根据病人的医疗记录预测其住院时间。

  3. 标记:在文本、图像或视频数据中识别和分类实体或对象。例如,命名实体识别(NER)可以识别文本中的人名、地点和组织名。

  4. 排序:预测数据点的相对顺序。例如,搜索引擎中的网页排名。

  5. 多任务学习:同时学习多个相关任务,以提高模型的泛化能力。

监督学习的过程通常包括以下步骤:

  1. 数据收集:收集带有标签的数据集。

  2. 数据预处理:清洗数据,处理缺失值,进行特征工程等。

  3. 选择模型:根据问题类型选择合适的机器学习算法。

  4. 训练模型:使用训练数据集来训练模型。

  5. 评估模型:使用验证集或测试集来评估模型的性能。

  6. 调优模型:通过调整模型参数或使用更复杂的模型来提高性能。

  7. 部署模型:将训练好的模型部署到生产环境中,以对新数据进行预测。

监督学习算法的例子包括:

  • 决策树:通过树状图结构进行决策。
  • 支持向量机(SVM):在高维空间中寻找最优分割超平面。
  • 随机森林:集成多个决策树以提高预测准确性。
  • 梯度提升机(GBM):集成多个弱预测模型以提高预测准确性。
  • 神经网络:模仿人脑的神经元网络,可以用于复杂的模式识别任务。
  • 线性回归:预测连续值,模型输出是输入特征的线性组合。
  • 逻辑回归:用于二分类问题,尽管名字中有"回归",但它是一个分类算法。

监督学习在许多领域都有应用,如金融、医疗、自动驾驶、语音识别等。

二、无监督学习

-Unsupervised Learning

无监督学习是机器学习中的一种方法,它与监督学习相对。在无监督学习中,训练数据不带有标签,算法需要自行发现数据中的结构和模式。

无监督学习通常用于以下几类任务:

  1. 聚类 :将数据集中的样本根据相似性分组,使得同一组内的样本相似度高,不同组之间的样本相似度低。常见的聚类算法包括K-means、层次聚类、DBSCAN等。

  2. 降维:减少数据的维度,同时尽可能保留原始数据的重要信息。这有助于去除噪声和冗余信息,提高数据处理的效率。常用的降维技术包括主成分分析(PCA)、线性判别分析(LDA)、t-SNE等。

  3. 关联规则学习:在大规模数据集中寻找变量之间的有趣关系。例如,在市场篮子分析中,可以发现顾客购买某些商品时也倾向于购买其他特定商品。Apriori算法和FP-Growth算法是这类任务中常用的方法。

  4. 异常检测:识别数据集中的异常或不寻常的模式。这对于信用卡欺诈检测、网络安全等领域非常重要。

  5. 密度估计:估计输入数据的概率分布,这在概率建模和生成模型中非常有用。

  6. 生成模型:学习数据的生成过程,以便能够生成新的数据实例。例如,自编码器和生成对抗网络(GANs)可以用于生成新的图像、文本或其他类型的数据。

无监督学习在数据探索和发现隐藏信息方面非常有用,尤其是在数据集很大且难以手动标注的情况下。

三、一些基本概念

线性回归模型

线性回归是监督学习 中的一种基本且广泛使用的方法,用于预测连续数值。它假设输入变量(自变量)和输出变量(因变量)之间存在线性关系。线性回归模型可以是简单线性回归(一个自变量)或多元线性回归(多个自变量)。

和分类的区别在于,分类只会输出离散的有限的可能输出,而回归问题中,可能会输出无限范围的数值。

简单线性回归

多元线性回归

模型训练

线性回归模型的训练涉及找到最佳参数β 值,使得模型预测值与实际值之间的差异最小。这通常通过最小化损失函数来实现,最常用的损失函数是均方误差(MSE):

模型评估

评估线性回归模型的性能通常使用以下指标:

  • 均方误差(MSE):预测值与实际值差的平方的平均值。
  • 均方根误差(RMSE):MSE的平方根。
  • 决定系数(R²):表示模型解释的变异量占总变异量的比例。

应用

线性回归在许多领域都有应用,包括:

  • 经济预测:预测经济指标,如GDP增长率。
  • 金融市场分析:预测股票价格或市场趋势。
  • 医疗研究:预测疾病的发展或患者的生存时间。
  • 工程问题:预测材料的强度或机械的性能。

线性回归模型简单、直观,易于理解和实现,是许多数据分析和预测任务的起点。然而,它也有局限性,比如不能很好地处理非线性关系,对异常值敏感等。在面对更复杂的数据关系时,可能需要考虑使用更高级的模型。

损失函数 (cost function)

在机器学习中,代价函数(Cost Function)或损失函数(Loss Function)是用来衡量模型预测值与实际值之间差异的函数。它是一个非常重要的概念,因为它指导了模型的训练过程。通过最小化代价函数,模型可以学习到数据中的模式,并做出更准确的预测。

以下是一些常见的代价函数:

  1. 均方误差(Mean Squared Error, MSE)

    额外除2是为了让后面的计算结果更整洁

  2. 均方根误差(Root Mean Squared Error, RMSE)

  3. 平均绝对误差(Mean Absolute Error, MAE)

  4. 交叉熵损失(Cross-Entropy Loss)

  5. 对数损失(Log Loss)

    • 与交叉熵损失相同,通常用于评估分类模型的性能。
  6. 0-1损失(0-1 Loss)

  7. Hinge Loss

  8. 自定义代价函数

    • 在某些特定问题中,可能需要根据问题的特性设计自定义的代价函数。

代价函数的选择取决于问题类型、数据特性和模型目标。在训练过程中,通过优化算法(如梯度下降)不断调整模型参数,以最小化代价函数的值,从而提高模型的预测性能。

梯度下降 (gradient descent)

梯度下降(Gradient Descent)是机器学习和优化算法中用来寻找函数局部最小值的一种迭代方法。它主要用于训练模型,通过优化目标函数来调整模型参数。

梯度下降算法的基本思想是:

  1. 初始化:随机选择一个参数的初始值。
  2. 计算梯度:计算目标函数关于每个参数的梯度(即导数),梯度指示了函数增长最快的方向。
  3. 更新参数:按照梯度的反方向更新参数,因为反方向是函数下降最快的方向。更新的步长由学习率(learning rate)决定。
  4. 迭代:重复步骤2和3,直到满足某个停止条件,比如梯度足够小、达到预设的迭代次数或目标函数值的改善小于某个阈值。

梯度下降算法有几种变体,包括:

  • 批量梯度下降(Batch Gradient Descent):每次迭代使用全部数据来计算梯度和更新参数。
  • 随机梯度下降(Stochastic Gradient Descent, SGD):每次迭代随机选择一个样本来更新参数,这种方法可以加快收敛速度,但可能不如批量梯度下降稳定。
  • 小批量梯度下降(Mini-batch Gradient Descent):介于批量和随机梯度下降之间,每次迭代使用一小批数据来更新参数。

梯度下降算法的关键点包括:

  • 学习率 :学习率决定了每次迭代参数更新的幅度,如果太大可能会导致算法在最小值附近震荡,太小则收敛速度慢。

    学习率的选择:

    注意当损失函数增加的时候,也可能在提示学习率应该为负数
    ''

    一些常用的学习率:

  • 收敛性:梯度下降算法可能不会总是收敛到全局最小值,特别是当目标函数是非凸的时候,它可能会收敛到局部最小值或鞍点。

  • 特征缩放:为了加快梯度下降的收敛速度,通常需要对特征进行缩放,使得它们具有相似的尺度。

梯度下降是许多机器学习算法,如线性回归、逻辑回归、神经网络等的基础优化方法。

但是遇到局部最低点的时候,由于梯度下降算法的自更新机制,会导致参数w卡死在局部最低点

所以最好选择凸函数作为损失函数,因为它只会收敛到全局最小值

  • BATCH
    在使用梯度下降算法时,"batch"通常指的是批量大小(batch size),它表示在每次迭代中用于计算梯度和更新模型参数的样本数量。

不同的梯度下降变体对批量大小有不同的处理方式:

批量梯度下降(Batch Gradient Descent):在这种变体中,整个训练集(所有样本)被用作一个批次来计算梯度并更新模型参数。这意味着每次参数更新都是基于整个数据集的。这种方法确保了每次更新都是精确的,但计算成本很高,尤其是在大数据集上。(课程中就是采用了这种方式来训练w、b)

随机梯度下降(Stochastic Gradient Descent, SGD):与批量梯度下降相反,SGD每次只使用一个样本来计算梯度并更新模型参数。这种方法的计算成本较低,收敛速度快,但更新过程中的噪声较大,可能会导致参数更新路径较为曲折。

小批量梯度下降(Mini-batch Gradient Descent):这是批量梯度下降和随机梯度下降的折中方案。在小批量梯度下降中,每次迭代使用一小批样本(例如32、64或128个样本)来计算梯度并更新模型参数。这种方法在计算效率和更新稳定性之间提供了一个平衡。

选择适当的批量大小对于算法的性能和模型的收敛速度有重要影响。太小的批量大小可能导致算法收敛速度慢且不稳定,而太大的批量大小则可能增加计算负担并需要更多的内存。通常,批量大小的选择需要根据具体问题和可用资源进行调整。

  • 特征工程 :结合已有的特征,创造新的特征

多类特征(multiple features)

**"multiple features"**指的是用于训练模型的数据集中的多个变量或属性。特征是数据集中的单个可测量的属性,它们被用来描述数据集中的每个实例。在机器学习中,特征通常用来从数据中学习模式,以便进行预测或分类。

例如,如果你正在构建一个用于预测房价的模型,那么可能的特征包括:

房屋的大小(平方米)

房屋的卧室数量

房屋的浴室数量

房屋的年龄

房屋的位置(如城市、街区)

周边设施(如学校、医院、交通)

这些特征可以是数值型的(如房屋大小),也可以是类别型的(如房屋的位置)。在机器学习中,特征的选择和处理对于模型的性能至关重要。特征工程是机器学习中的一个关键步骤,它涉及到选择最有信息量的特征,以及可能的特征转换和特征组合,以提高模型的准确性和效率

需要注意的是,对于多特征的梯度下降,每次用于计算梯度的函数是包括w1~wn的全参数fxb(x),去减去对应的y。而后面乘上的那个x1是数而不是向量,这很容易理解,因为此时是对w1求偏导,而w1偏导前面的系数就是x1,实际上预测函数是一个关于w,b,x的多元函数fwb(x),此时系数可以当成未知数,来预测两个系数的具体值。

特征缩放(feature scaling)

如果没有特征缩放,各特征之间的比例尺会变得很奇怪。

在梯度下降的时候,参数会反复回弹,行驶缓慢。如果经过缩放处理,梯度下降可以找到一条更直接的路径到达全局最小值
**特征缩放(Feature Scaling)**是机器学习中的一项技术,用于将所有特征的尺度调整到相似的范围。这样做的目的是为了优化算法的性能,特别是对于那些对变量尺度敏感的算法,如支持向量机(SVM)、K-最近邻(K-NN)和主成分分析(PCA)等。

特征缩放有两个主要方法:

  1. 归一化(Min-Max Scaling)

    最大值归一化:

均值归一化:

  1. 标准化(Standardization)

特征缩放的好处包括:

  • 提高算法性能:对于基于距离的算法,特征缩放可以确保所有特征在计算距离时具有相同的权重。
  • 加快收敛速度:在梯度下降等优化算法中,特征缩放可以加快收敛速度。
  • 避免数值问题:在计算过程中,可以避免由于特征尺度不同而导致的数值稳定性问题。

特征缩放通常在数据预处理阶段进行,并且在训练模型之前完成。需要注意的是,用于训练模型的特征缩放参数(如最小值、最大值、均值和标准差)应该保存下来,以便在新数据上应用相同的缩放。

  • 多项式回归:在计算过程中,可以避免由于特征尺度不同而导致的数值稳定性问题。


相关推荐
量子-Alex12 分钟前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡16 分钟前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
CCSBRIDGE3 小时前
Magento2项目部署笔记
笔记
爱吃西瓜的小菜鸡3 小时前
【C语言】判断回文
c语言·学习·算法
小A1593 小时前
STM32完全学习——SPI接口的FLASH(DMA模式)
stm32·嵌入式硬件·学习
亦枫Leonlew3 小时前
微积分复习笔记 Calculus Volume 2 - 5.1 Sequences
笔记·数学·微积分
岁岁岁平安4 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA4 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
qq_589568104 小时前
数据可视化echarts学习笔记
学习·信息可视化·echarts