文章目录
前言
博客仅记录个人学习进度和一些查缺补漏。
学习内容:BV1Bq421A74G
一、监督学习
-Supervised Learning (rapid advacements used most in real-world applications)
监督学习是机器学习中的一种常见方法,它使用标记的训练数据来训练模型,以便模型能够预测或决定未见过数据的标签。在监督学习中,每个训练样本都有一个与之相关的输出标签,模型的目标是学习输入数据和输出标签之间的关系。以下是监督学习的一些关键特点和常见任务:
-
分类 :预测离散标签的任务。例如,根据电子邮件的内容判断其是否为垃圾邮件,或者根据图像识别图像中的对象。.
-
回归 :预测连续值的任务。例如,根据房屋的特征预测其价格,或者根据病人的医疗记录预测其住院时间。
-
标记:在文本、图像或视频数据中识别和分类实体或对象。例如,命名实体识别(NER)可以识别文本中的人名、地点和组织名。
-
排序:预测数据点的相对顺序。例如,搜索引擎中的网页排名。
-
多任务学习:同时学习多个相关任务,以提高模型的泛化能力。
监督学习的过程通常包括以下步骤:
-
数据收集:收集带有标签的数据集。
-
数据预处理:清洗数据,处理缺失值,进行特征工程等。
-
选择模型:根据问题类型选择合适的机器学习算法。
-
训练模型:使用训练数据集来训练模型。
-
评估模型:使用验证集或测试集来评估模型的性能。
-
调优模型:通过调整模型参数或使用更复杂的模型来提高性能。
-
部署模型:将训练好的模型部署到生产环境中,以对新数据进行预测。
监督学习算法的例子包括:
- 决策树:通过树状图结构进行决策。
- 支持向量机(SVM):在高维空间中寻找最优分割超平面。
- 随机森林:集成多个决策树以提高预测准确性。
- 梯度提升机(GBM):集成多个弱预测模型以提高预测准确性。
- 神经网络:模仿人脑的神经元网络,可以用于复杂的模式识别任务。
- 线性回归:预测连续值,模型输出是输入特征的线性组合。
- 逻辑回归:用于二分类问题,尽管名字中有"回归",但它是一个分类算法。
监督学习在许多领域都有应用,如金融、医疗、自动驾驶、语音识别等。
二、无监督学习
-Unsupervised Learning
无监督学习是机器学习中的一种方法,它与监督学习相对。在无监督学习中,训练数据不带有标签,算法需要自行发现数据中的结构和模式。
无监督学习通常用于以下几类任务:
-
聚类 :将数据集中的样本根据相似性分组,使得同一组内的样本相似度高,不同组之间的样本相似度低。常见的聚类算法包括K-means、层次聚类、DBSCAN等。
-
降维:减少数据的维度,同时尽可能保留原始数据的重要信息。这有助于去除噪声和冗余信息,提高数据处理的效率。常用的降维技术包括主成分分析(PCA)、线性判别分析(LDA)、t-SNE等。
-
关联规则学习:在大规模数据集中寻找变量之间的有趣关系。例如,在市场篮子分析中,可以发现顾客购买某些商品时也倾向于购买其他特定商品。Apriori算法和FP-Growth算法是这类任务中常用的方法。
-
异常检测:识别数据集中的异常或不寻常的模式。这对于信用卡欺诈检测、网络安全等领域非常重要。
-
密度估计:估计输入数据的概率分布,这在概率建模和生成模型中非常有用。
-
生成模型:学习数据的生成过程,以便能够生成新的数据实例。例如,自编码器和生成对抗网络(GANs)可以用于生成新的图像、文本或其他类型的数据。
无监督学习在数据探索和发现隐藏信息方面非常有用,尤其是在数据集很大且难以手动标注的情况下。
三、一些基本概念
线性回归模型
线性回归是监督学习 中的一种基本且广泛使用的方法,用于预测连续数值。它假设输入变量(自变量)和输出变量(因变量)之间存在线性关系。线性回归模型可以是简单线性回归(一个自变量)或多元线性回归(多个自变量)。
和分类的区别在于,分类只会输出离散的有限的可能输出,而回归问题中,可能会输出无限范围的数值。
简单线性回归
多元线性回归
模型训练
线性回归模型的训练涉及找到最佳参数β 值,使得模型预测值与实际值之间的差异最小。这通常通过最小化损失函数来实现,最常用的损失函数是均方误差(MSE):
模型评估
评估线性回归模型的性能通常使用以下指标:
- 均方误差(MSE):预测值与实际值差的平方的平均值。
- 均方根误差(RMSE):MSE的平方根。
- 决定系数(R²):表示模型解释的变异量占总变异量的比例。
应用
线性回归在许多领域都有应用,包括:
- 经济预测:预测经济指标,如GDP增长率。
- 金融市场分析:预测股票价格或市场趋势。
- 医疗研究:预测疾病的发展或患者的生存时间。
- 工程问题:预测材料的强度或机械的性能。
线性回归模型简单、直观,易于理解和实现,是许多数据分析和预测任务的起点。然而,它也有局限性,比如不能很好地处理非线性关系,对异常值敏感等。在面对更复杂的数据关系时,可能需要考虑使用更高级的模型。
损失函数 (cost function)
在机器学习中,代价函数(Cost Function)或损失函数(Loss Function)是用来衡量模型预测值与实际值之间差异的函数。它是一个非常重要的概念,因为它指导了模型的训练过程。通过最小化代价函数,模型可以学习到数据中的模式,并做出更准确的预测。
以下是一些常见的代价函数:
-
均方误差(Mean Squared Error, MSE) :
额外除2是为了让后面的计算结果更整洁
-
均方根误差(Root Mean Squared Error, RMSE) :
-
平均绝对误差(Mean Absolute Error, MAE) :
-
交叉熵损失(Cross-Entropy Loss) :
-
对数损失(Log Loss):
- 与交叉熵损失相同,通常用于评估分类模型的性能。
-
0-1损失(0-1 Loss) :
-
Hinge Loss :
-
自定义代价函数:
- 在某些特定问题中,可能需要根据问题的特性设计自定义的代价函数。
代价函数的选择取决于问题类型、数据特性和模型目标。在训练过程中,通过优化算法(如梯度下降)不断调整模型参数,以最小化代价函数的值,从而提高模型的预测性能。
梯度下降 (gradient descent)
梯度下降(Gradient Descent)是机器学习和优化算法中用来寻找函数局部最小值的一种迭代方法。它主要用于训练模型,通过优化目标函数来调整模型参数。
梯度下降算法的基本思想是:
- 初始化:随机选择一个参数的初始值。
- 计算梯度:计算目标函数关于每个参数的梯度(即导数),梯度指示了函数增长最快的方向。
- 更新参数:按照梯度的反方向更新参数,因为反方向是函数下降最快的方向。更新的步长由学习率(learning rate)决定。
- 迭代:重复步骤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)等。
特征缩放有两个主要方法:
- 归一化(Min-Max Scaling) :
最大值归一化:
均值归一化:
- 标准化(Standardization) :
特征缩放的好处包括:
- 提高算法性能:对于基于距离的算法,特征缩放可以确保所有特征在计算距离时具有相同的权重。
- 加快收敛速度:在梯度下降等优化算法中,特征缩放可以加快收敛速度。
- 避免数值问题:在计算过程中,可以避免由于特征尺度不同而导致的数值稳定性问题。
特征缩放通常在数据预处理阶段进行,并且在训练模型之前完成。需要注意的是,用于训练模型的特征缩放参数(如最小值、最大值、均值和标准差)应该保存下来,以便在新数据上应用相同的缩放。
- 多项式回归:在计算过程中,可以避免由于特征尺度不同而导致的数值稳定性问题。