机器学习(吴恩达)

1.机器学习分为监督学习和非监督学习

监督学习:1.回归算法:预测一个正确的数字从可能出现的无限个输出结果中ps:输出结果在无限的输出集

                   2.分类算法:将给定的几个输入值得到的输出值归为某一类ps:输出结果在有限的输出集

无监督学习:1.聚类算法:根据数据的相似度将数据分为多类的过程。

                       2.降维算法:在保证数据所具有的代表性特性或者分布的情况下,将高维数据转化为低维数据的过程,主要用于数据压缩和数据的可视化。

2.线性回归模型(监督学习)

2.1成本函数

找到最适合的参数w和b,来将成本函数减到最小

简化的f(x)函数 ps:当b为0时

w的选取对f(x)函数的影响以及对应的成本函数的影响

所以可以通过看成本函数何时最小,找到合适的w。当参数不止有w一个时,也是这个道理。

可视化的成本函数使用三维图或者等高线图(二维)

2.2梯度下降算法

用于最小化成本函数,通过每一次修改参数来降低成本函数,直到希望成本函数到达或者接近最小值

梯度下降算法不止适用于线性回归还适用于各种函数

成本函数可以有几个局部最小值

学习率决定了你下坡的大小,成本函数的偏导数决定了下坡的方向

梯度下降算法的数学表达式,特别注意,w和b同时更新才是正确的做法

斜率为正和为负的两种情况(其中学习率一定为正数)

学习率太小会花费太多资源和时间来到达成本函数的最小值

学习率太大可能会导致过冲以及可能永远到达不了最小值从而导致发散

当w的值恰好对应成本函数的某个局部最小值,学习率为0时,导数也是0,所以w不会变

尽管学习率是固定的,成本函数也可以到达最小值,因为进行梯度下降时,导数变小,会使更新的每一步大小变小。越接近成本函数的最小值,下降的步伐会越小。

w的偏导数和b的偏导数展开形式

ps:线性回归模型的成本函数没有多个局部最小值,只有唯一的全局最小值

3.多元线性回归(前面学的线性回归是只有一个特征x)

表示符号

多元线性回归的数学表示形式

向量化可以加速代码的运行,更好的使用计算机的硬件3

3.1多元线性回归的梯度下降算法

数学表达式

  

3.2正规方程(和梯度下降算法一样,去得到参数w和b)

3.3特征缩放(可以加快梯度下降的速度)

不同的特征的范围有很大不同,会直接影响梯度下降到达最小值的时间

3.3.1除以最大值的缩放方法

3.3.2均值的缩放方法

3.3.3Z-score的缩放方法

3.4梯度下降是否收敛

第一种方式看左边的图(曲线称为学习曲线),横坐标是迭代次数

第二种方式是找到一个合适的“epsilon”,通过自动收敛检测来检测是否收敛

3.5如何选择合适的学习率

当梯度下降不起作用的时候,通常将学习率设置为非常小,如果调整学习率过后成本函数还是不减小,大概率就是代码出现了问题。

可以通过设置不同大小的学习率,多做测试然后找到合适的学习率

特征工程:

3.6多项式回归

即使用多项式函数来拟合数据

4.逻辑回归

ps:名字是回归其实是分类算法

数学公式

决策边界:用来决定在边界里的是什么类,在边界外的是什么类

4.1逻辑回归中的损失函数

如果使用线性回归相同的成本函数,图像将会如图所示,成本函数会有很多个局部最小值点,不利于进行梯度下降

下图是y=1的情况,f的取值在0到1之间

下图是y=0的情况

简化的损失函数

成本函数

4.2实现逻辑回归中的梯度下降

逻辑回归中梯度下降的数学公式

尽管线性回归和逻辑回归的梯度下降公式看起来一样,但是其实里面的f函数并不相同

5.过度拟合

回归模型

分类模型

5.1解决过度拟合

1.可以增加训练集的大小

2.减少特征,进行“特征选择”

3.正则化

不必直接删掉一个特征,而是改变一些特征的参数大小,将某些参数变得特别小,等于减少了一个特征(导致函数的阶数不必太高,从而降低拟合的程度)

5.2正则化的具体实现

 通过在成本函数中增加正则化项,当将成本函数最小化时,wj也需要变小,从而避免过度拟合。

1.当参数lambda等于0时候,会过度拟合

2.当参数lambda特别大的时候,为了保证成本函数最小,wj中的所有w都基本为0,导致f=b

所以lambda的选择十分重要

5.2.1正则化在线性回归中的应用

加了正则化项后的成本函数在梯度下降算法中的改变

wj有变化     b没有变化

5.2.2正则化在逻辑回归中的应用

6.神经网络

需求预测

图像感知的例子

每一个神经网络层都会自动学习,从识别一小部分到将这些小部分组合在一起,然后识别中等大小部分,然后中等大小部分组合成大的部分,然后通过大的部分进行感知,最后得出结论(与这辆车相似的可能性是多少)

弄清楚神经网络中符号如何表示

总结的公式

用代码实现推理

使用顺序函数密集流用python实现

强人工智能(AGI)可以模仿人类的所有行为

神经网络为什么高效?原因是可以使用向量化,如下图所示

矩阵乘法的具体代码6.

6.1在tensorflow中训练神经网络

1.由给定的输入和参数得出输出值

2.指定损失和成本函数(使用不同的算法可以调用不同的损失函数,比如你是二分类问题就可以调用BinaryCrossentropy损失函数,如果你是回归问题就可以调用MeanSquaredError损失函数等等)

3.训练成本函数,将成本函数最小化

6.2如何选择激活函数

可以替换sigmod激活函数的其他函数举例

比如sigmod激活函数和ReLU激活函数

1.由于sigmod函数比较复杂,所以运行时间较慢。ReLU函数比较简单,运行时间较快

2.由于sigmod函数有两趋于平稳的地方,所以成本函数使用梯度下降算法的时候会比较慢。而ReLU函数只有一个趋向平稳的地方,所以速度较快。

隐藏层推荐使用ReLU函数,输出层推荐使用sigmod函数

隐藏层最好不要用线性函数作为激活函数,因为

  • 线性函数在隐藏层中会导致整个网络仍然是线性的,这意味着网络只能学习到线性的模式,无法学习到复杂的非线性模式。
  • 使用非线性激活函数,如sigmoid、tanh或ReLU等,可以让网络具有非线性转换能力,从而学习到更复杂的函数映射。

6.3多分类问题

多分类问题就是你可以有多个输出值,而不仅仅是0和1

softmax函数以及他的损失函数如何用tensorflow实现softmax(但是有更好的版本)

为了提高精度,使用如下的办法,将输出层的激活函数改为线性函数,并且from_logits=True

6.4多标签分类问题

多分类问题关注的是将样本划分到互斥的类别中,而多标签问题关注的是为每个样本预测一组相关的类别标签。这两种问题需要采用不同的建模方法和评估指标。

6.5Adam算法

Adam可以自动调节学习率,当学习率太大时,将它减少点。当学习率太小时,将它增加点。

在complie步骤中加了一个Adam算法

6.6卷积层

我们之前使用的都是压缩层(会将上一层的输出全部作为下一层的输入)

如下图是卷积层

7.诊断学习算法

7.1模型评估

将数据分为训练集和测试集:通过训练集可以确定参数w和b,然后运用到测试集中来看看是否泛化错误很低。

泛化错误:在机器学习中,泛化错误(Generalization Error)是指模型在未见过的新数据上的预测误差,也称为泛化误差或泛化风险。它反映了模型在实际应用中的预测性能。

可以将数据分为,训练集和cross-validation集和测试集

首先在训练集中选取训练集中成本函数最低得w和b然后运用到cv集中来选取成本函数最低得项,来得到选取d得大小。然后将w,b以及d运用到测试集中来评价泛化误差。

7.2方差和偏差

多项式得度数如何影响方差和偏差得如图所示正则化对方差和偏差得影响

1.当lambda特别大的时候,为了将成本函数最小,wj基本都等于0,所以函数约等于b

2.当lambda特别小时,等于没有正则化

3.当lambda中等的时候,比较合适

不同得lambda大小训练集和cv集得成本函数得影响,与多项式度数对训练集和cv集得成本函数得影响成镜像

7.3学习曲线

当训练集合变大时,会学习一个很好得模型,导致cv得成本函数下降

当训练集合变大时,train的成本函数会变大。列如,模型是个二次函数,当训练集合变大的时候,二次函数对训练集的拟合程度会变差,所以成本函数将会逐步变大。

一般jcv会比jtrain大当你的学习算法具有高偏差的时候,增加训练集的大小,并不会再降低你的误差了,最后都会趋于一个稳定

当你的学习算法具有高方差的时候,增加训练集,有助于讲误差降低

有哪些方法可以解决模型的高偏差和高方差

1.加训练集可以减少算法的过度拟合

2.减少特征也可以减少算法的过度拟合

3.增加特征相反

4.增加多项式和增加特征类似

5.减少lambdak可以使模型更加拟合数据

6.增大lambda可以减少过度拟合

当你的正则化合适,神经网络基本越大越好,几乎没什么毛病

当你的训练集不是特别大的时候,在大型神经网络中,偏差很小

7.4机器学习开发的迭代

  1. 数据增强(Data Augmentation):

    • 定义: 数据增强是通过对现有的训练数据进行一系列变换或操作,生成新的相似样本的技术。
    • 目的: 扩大训练数据集的规模和多样性,提高模型的泛化能力,减少过拟合。
    • 常见方法:
      • 图像增强: 旋转、缩放、翻转、添加噪音等。
      • 文本增强: 同义词替换、句子重排、插入/删除词语等。
      • 时间序列增强: 时间平移、缩放、插值等。
  2. 数据合成(Data Synthesis):

    • 定义: 数据合成是通过生成全新的模拟数据,而不是对现有数据进行变换,来扩充训练集的技术。
    • 目的: 解决训练数据稀缺或不平衡的问题,为某些特殊场景生成所需的训练样本。
    • 常见方法:
      • 生成对抗网络(GAN): 通过生成器和判别器的对抗训练生成新数据。
      • 变分自编码器(VAE): 利用编码器-解码器结构生成新数据。
      • 基于规则的合成: 根据领域知识设计规则生成数据。

  3.迁移学习

  • 在源领域(Source Domain)上预先训练好的模型,其学习到的知识和特征可能对目标领域(Target Domain)也有帮助。
  • 通过迁移这些预训练模型的参数或特征,可以减少目标任务的训练数据需求,提高学习效率。

选项一:只训练输出层的参数,其他隐藏的参数不变

选项二:训练所有层次的参数

机器学习项目的完整周期

精确率:精确率描述的是模型正确识别的相关样本占所有被识别为相关的样本的比例。

诊断出患有这种罕见疾病的患者真的得这种病得概率。

召回率:召回率描述的是模型正确识别出的相关样本占所有相关样本的比例。

一个患有这种罕见疾病的患者,算法可以正确识别他们患有这种疾病的概率。

精确率和召回率的权衡

  • F1-score是精确率和召回率的调和平均,可以用来综合评估两者的平衡。
  • F1-score = 2 * (精确率 * 召回率) / (精确率 + 召回率)
  • F1-score取值在0到1之间,越大表示两者越平衡。

8.决策树模型

构造决策树时的两个问题

8.1纯度

熵函数是衡量一组数据是否不纯的指标,熵函数越大越不纯。

减少熵函数就是信息增益

信息增益越大代表分支后的纯度改变越大,信息增益决定选择什么特征来进行一个节点的分割

8.2one-shot编码

特征不仅可以分为两种,可以分成好几种,用0和1表示某种特征8.是否是这种类型。

8.3连续有价值的功能

通过调整不同的阈值,然后计算信息增益,选择信息增益最大的作为阈值进行分割。

8.4多决策树

当改变单个决策树的训练事例时,决策树的改变会很大,算法的健壮性不太好。所以可以使用多个决策树,根据每个树的结果进行预测。使用多个决策树会导致算法不那么敏感。

有放回抽样(with replacement sampling)是机器学习中常用的一种抽样方法,用于从数据集中随机选择样本。在有放回抽样中,每次抽取一个样本后,该样本被放回数据集中,因此它有可能在后续的抽样中再次被选中。

有放回抽样的主要特点包括:

  1. 重复抽样:每次抽样后,被选中的样本会放回数据集,因此每次抽样都是独立的。
  2. 可能重复选择相同样本:由于样本被放回,同一个样本在多次抽样中可能会被选择多次。
  3. 样本之间相互独立:每次抽样都是独立进行的,样本之间的选择不会相互影响。

8.5随机森林

随机森林(Random Forests)是一种强大的集成学习算法,常用于分类和回归问题。它由多个决策树组成,每个决策树都是通过对训练数据进行有放回抽样(bootstrap sampling)和特征随机选择(feature randomization)而构建的。

以下是随机森林的主要特点和步骤:

  1. 特征随机选择:在构建每个决策树的过程中,随机森林从原始特征集合中随机选择一部分特征子集,这样可以增加每个决策树的差异性,并减少特征之间的相关性。

  2. 有放回抽样:使用自助法(bootstrap method),随机森林从原始训练数据集中进行有放回抽样,生成多个不同的训练子集,每个子集用于构建一个决策树。

  3. 决策树构建:对于每个训练子集,随机森林使用决策树算法(如CART)来构建一个决策树模型。决策树根据选定的特征进行递归分割,直到达到预定义的停止条件(例如达到最大深度、叶节点样本数量等)。

  4. 集成预测:当需要进行预测时,随机森林将所有决策树的预测结果进行集成。对于分类问题,采用投票机制(majority voting),多数决定最终的分类结果。对于回归问题,取所有决策树预测值的平均值作为最终的回归结果。

8.6XGboost

GBoost(eXtreme Gradient Boosting)是一种高效且强大的机器学习算法,用于解决回归和分类问题。它是梯度提升树(Gradient Boosting Tree)方法的扩展,通过结合多棵决策树进行集成学习,具有极强的预测能力。

以下是XGBoost的一些关键特点:

  1. 梯度提升树:XGBoost基于梯度提升树方法,通过迭代地训练多个决策树来逐步提升模型性能。每棵树都会纠正前一棵树的误差,从而逐渐减小预测偏差。

  2. 正则化:为了控制模型的复杂度并防止过拟合,XGBoost引入了正则化项。这包括L1和L2正则化,以及控制树的最大深度、叶子节点权重等参数。

8.7决策树vs神经网络

9.聚类算法

k-means算法是一种聚类(Clustering)算法,用于将数据集分成k个不同的组或簇。该算法通过迭代的方式将数据点分配到最近的簇中,直到满足停止准则为止。

以下是k-means算法的步骤:

  1. 初始化:选择k个初始质心作为簇的中心点。通常情况下,可以从数据集中随机选择k个样本点作为初始质心,或者使用其他更加复杂的方法来确定它们的位置。

  2. 分配:对于每个样本点,计算其与k个质心之间的距离,并将其分配到最近的簇中。

  3. 更新:对于每个簇,重新计算其中所有样本点的均值,并将其作为新的质心。这一步可以使用简单的平均值计算,也可以使用加权平均等其他方法。

  4. 重复:重复执行步骤2和步骤3,直到簇的分配不再发生变化或达到预设的迭代次数。

  5. 输出结果:最终结果包括k个簇以及它们的质心。可以根据需要对簇进行进一步分析或可视化展示。

k-means算法的优点包括易于实现、速度快、可扩展性强等特点。但它也存在一些不足,如对初始质心的依赖性较强、容易收敛到局部最优解等问题。为了克服这些问题,研究人员还提出了许多改进的算法,如k-medoids、层次聚类等。

k-means的成本函数如图

k-means算法做的就是每次减少成本函数的大小

初始化质心很多次,然后得到c和u,然后通过c和u来计算成本函数。选择成本函数最低的那个。

如何选择k值?有一种方法叫做elbow方法如图

随着k的增加,成本函数会下降,成本函数的图像会有一个转折点,然后就选择这个转折点的k值作为最后的k值。但是有的成本函数是光滑下降的,不会有elbow点,所以这个方法基本没什么用。k值得选择还是根据业务得需要来决定。(比如k值代表要生成得衣服得尺寸个数,这个问题就得按照具体的业务情况来决定了)

10.异常检测算法

正态分布

1.首先选择你觉得可能异常的example

2.求得参数均值和方差

3.计算给定example得概率,如果概率小于指定值则算为异常

训练集来构建高斯分布,交叉验证集用来调整参数,测试集用来评估。

算法评估

异常检测算法是无监督学习,因为训练集没有带标签y

异常检测算法与监督学习的对比

特点异常检测算法监督学习
训练数据往往只有正常数据,没有标记的异常数据有带有标签的训练数据
目标检测新数据中的异常或未知模式预测标签或类别
算法设计在训练时仅使用正常样本,侧重于异常的分布和特征使用已标记的数据来学习分类器
性能评估使用离群点检测指标(如AUC、AP等)进行评估使用准确度、精确度、召回率等指标进行评估
数据需求适用于少量异常数据、不平衡的数据集需要大量带有标签的数据
应用场景金融欺诈检测、网络入侵检测、健康监测等图像分类、文本分类、推荐系统等

总体而言,异常检测算法更适用于发现数据中的潜在异常或未知模式,而监督学习更适用于预测和分类任务。选择算法取决于数据的特性、问题的需求,以及可用的标记数据量。

11.推荐系统

用户j对电影i的评价

成本函数

用户j评价了多少个电影是一个常数,对成本函数没有影响。

11.1协同过滤算法

可以通过每个用户对同一个电影的评分,来猜测特征的值。然后得到了特征值后又可以估算出用户对未评价电影可能给出的评分。

11.2均值归一化

在推荐系统中,均值归一化是一种常见的预处理技术,用于将用户对物品的评分进行归一化处理。这有助于消除用户评分偏差,使得不同用户的评分可以更好地比较和分析。以下是均值归一化的基本步骤:

  1. 计算每个用户的评分均值:

    • 对于每个用户,计算他们对已评分物品的平均评分。这样就可以得到每个用户的评分偏差。
  2. 减去用户均值:

    • 对于每个用户对物品的评分,减去该用户的评分均值。这样可以消除用户之间的整体评分偏差。
  3. 对用户评分进行缩放:

    • 可以选择将用户评分缩放到一个合适的范围,例如0到1之间。这有助于确保评分彼此之间具有可比性。
  4. 使用均值归一化后的评分进行推荐:

    • 在进行推荐时,使用经过均值归一化处理的评分来训练模型或计算相似度,从而提高推荐系统的准确性和效果。

通过应用均值归一化技术,推荐系统可以更好地理解用户的行为偏好,并提供更个性化的推荐结果。这种预处理技术有助于减少评分之间的偏差,使得推荐系统更加稳健和可靠。

当w和b全为0的时候,新用户对电影的评价为其他用户对电影评分的均值

11.3在tensorflow中实现协同过滤

举例子:如何在tensorflow中实现对成本函数的梯度下降算法。

协同过滤算法的实现

11.4基于内容过滤算法

机器学习中基于内容的过滤算法

在机器学习中,基于内容的过滤算法是一种常见的推荐系统技术,它利用物品本身的特征信息(内容)来进行推荐。这种算法通常用于个性化推荐和信息检索任务。以下是基于内容的过滤算法的关键概念:

  1. 特征提取:

    • 对于每个物品,从其属性或特征中提取相关信息,如关键词、标签、描述等。这些特征可以是结构化的(例如类别、标签)或非结构化的(例如文本、图像)。
  2. 特征向量化:

    • 将提取的特征转换为数值型向量表示,以便计算相似度或训练模型。常用的方法包括词袋模型、TF-IDF、Word2Vec等。
  3. 相似度计算:

    • 基于特征向量的表示形式,计算物品之间的相似度。通常使用余弦相似度或欧氏距离等度量来衡量物品之间的相似程度。
  4. 推荐生成:

    • 对用户已经交互过的物品或者对其感兴趣的物品,找到与之最相似的其他物品,并将这些相似物品推荐给用户。
  5. 模型优化:

    • 可以采用机器学习技术如决策树、支持向量机(SVM)、神经网络等来训练模型,以进一步提高推荐准确性和个性化程度。

基于内容的过滤算法不需要用户行为数据,只需物品自身的特征信息,因此适用于新用户或冷启动问题。通过利用物品的内容信息进行推荐,这种算法能够提供更具有个性化和解释性的推荐结果,为用户提供更好的体验。

给用户和电影都设置几个特征,然后将特征向量化

由xu和xm计算得出vu和vm

基于内容过滤的深度学习方法

将xu和xm通过神经网络生成vu和vm,然后将vu和vm进行点乘然后带入到逻辑回归函数中

成本函数如图。

vu和vm的向量大小相同才能进行点积。寻找与电影i最相似的电影就是计算与电影ivm的差的平方最小的电影。

从大型目录中推荐分为两步retrieval和rank

第一步retrieval就是将最有可能被推荐的电影筛选出来

第二步将最有可能的电影列表进行学习,然后通过prediction选取最终决定推荐的电影

12.强化学习

强化学习是一种机器学习范式,其目标是让智能体(agent)通过与环境的交互学习来实现某种目标或最大化累积奖励。在强化学习中,智能体根据环境的反馈,通过尝试不同的动作来学习行为策略,以使得在未来获得更好的长期回报。

关键概念和要素:

  1. 智能体(Agent):

    • 代表进行决策和学习的系统或算法,可以是机器人、游戏玩家、自动驾驶汽车等。
  2. 环境(Environment):

    • 智能体所处的外部世界或系统,智能体通过与环境的交互来学习。
  3. 状态(State):

    • 描述环境的特定配置或情况,智能体根据状态做出决策。
  4. 动作(Action):

    • 在给定状态下,智能体可以执行的操作或选择的行为。
  5. 奖励(Reward):

    • 表示智能体对于采取某个动作在某个状态下的反馈(正面奖励或负面惩罚),用于指导智能体优化决策策略。
  6. 策略(Policy):

    • 描述智能体如何在给定状态下选择动作的规则或方针。

强化学习的目标是找到最优的策略,使得智能体在与环境交互的过程中获得最大的长期奖励或累积回报。著名的强化学习算法包括Q学习、深度强化学习(如DQN)、策略梯度方法等。强化学习在许多领域有着广泛的应用,如游戏领域、金融领域、自动控制等。

火星探测器的例子

s代表state

a代表action

r(s)代表reward

s’代表action后的state

强化学习中的回报,其中有一个折扣参数,一般选择比1小的数字,因为距离原始状态越远的奖励,他的回报应该越小,距离原始状态越近,回报应该越大。

在强化学习中,策略(Policy)是指智能体在特定状态下选择动作的规则或方针。策略可以看作是一个映射函数,将环境的状态映射到应该采取的动作上。具体来说,策略定义了智能体如何在不同情况下做出决策。

12.1状态-动作价值函数

在强化学习中,状态动作价值函数(State-Action-Value Function),通常记为 Q 函数,是用来评估在给定状态和采取特定动作后所能获得的预期回报。该函数表示了对于每个状态-动作对的评估值,以帮助智能体做出最优决策。

通过计算Q函数,可以得出正确的action(选取值最大的Q函数)

12.2贝尔曼方程

在强化学习中,贝尔曼方程是描述状态值函数或状态动作值函数之间关系的重要方程。它为强化学习算法提供了一种递归定义价值函数的方法,可以帮助智能体更好地理解环境,并指导其做出最12.3登月器

  • 30
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值