[ML]机器学习_机器学习开发流程

目录

一、机器学习开发的循环迭代

1、循环迭代思想

2、整体过程

二、误差分析

1、误差分析步骤

2、举例说明

三、数据增强

1、数据增强原则

2、数据增强的方法

四、迁移学习

1、定义

2、工作原理

五、机器学习项目完整周期

1、机器学习项目完整周期

2、举例说明

六、公平、偏见与伦理

七、倾斜数据集

1、倾斜数据集的误差指标

2、精确率与召回率的权衡


一、机器学习开发的循环迭代

1、循环迭代思想

        首先,决定系统的总体架构,然后根据架构实现模型和训练模型,之后是诊断模型,根据诊断的结论更新模型架构,然后使用新的总体架构再次进行循环迭代,直到模型达到预期的性能要求。

2、整体过程

        Iterative Loop of ML Development指的是机器学习开发过程中反复进行的一系列步骤,以逐步优化和改进模型的性能和精度。这个循环迭代的过程通常包括以下步骤:

  1. 数据准备和清洗:收集和准备数据集,并进行数据清洗和预处理,以保证数据的质量和一致性。

  2. 特征工程:从数据中提取有用的特征,以提高模型的性能和预测准确率。

  3. 模型选择和训练:根据数据特征和问题类型选择合适的机器学习算法和模型,并使用训练数据集进行模型训练。

  4. 模型评估和调优:使用测试数据集对模型进行评估,并根据评估结果进行模型调优,以提高模型的性能和预测准确率。

  5. 部署和监控:将优化的模型部署到实际应用中,并定期监控和改进模型的性能和精度。

        这个循环迭代的过程是一个持续的过程,需要不断的评估和改进,以保证模型的性能和精度始终符合实际需求。

二、误差分析

        机器学习的误差分析是指在机器学习模型的开发和应用过程中,对模型预测结果的误差进行分析和解释的过程。通过误差分析,可以帮助我们了解模型的预测能力、发现模型中存在的问题,进而指导我们改进模型并提高其性能和可靠性。

1、误差分析步骤

误差分析一般分为以下几个步骤:

  1. 收集并标注误差数据:通过观察模型的预测结果,收集和标注预测错误的样本数据,包括错误的样本标签、预测结果和预测置信度等信息。

  2. 分析误差数据:对收集的误差数据进行分析和统计,了解模型存在的错误类型、错误频率、错误分布等情况,来定位模型存在的问题。

  3. 找出错误原因并处理:根据误差分析的结果,找出错误的原因,进而对模型进行优化和改进,包括调整模型参数、修改特征工程、增加样本量等。

  4. 评估模型的改进效果:对改进后的模型进行测试和评估,比较其性能和精度与之前的模型,确定改进是否有效。

        误差分析可以帮助我们深入了解模型的内部机制和表现,从而更好地指导模型的优化和改进,提高其预测性能和可靠性。

2、举例说明

         举例说明,假设有500个交叉验证示例m_{cv}=500,并且算法错误分类了500个交叉验证示例中的100个。错误分析的过程就是手动查看这100个示例,并深入分析算法出错的地方。

        具体来说就是从交叉验证集中提取出一组算法错误分类的示例,并将其按照共同的主题、共同的属性或共同的特征分类。

        如果我们模型比较大,错误的例子有1000个的话,可能没有时间去一个一个的进行查看,那么可以随机抽取其中的100个左右进行分类查看。

        分类误差后,看看哪种类型的错误出现的最多,可以有针对性的去完善它。

三、数据增强

1、数据增强原则

        机器学习的数据增强是指在原始数据集中对数据进行一定形式的变换或扩充,从而增加训练数据的数量和多样性,提高模型的泛化能力和鲁棒性。下面是机器学习的数据增强原则:

  1. 不改变数据的标签和含义:数据增强不应该改变数据的标签和含义。例如,对于图像分类任务,不应该使用水平翻转操作,因为翻转后的图像标签会发生变化。

  2. 根据业务需求确定增强方式:不同的业务场景需要使用不同的数据增强方式。比如,对于人脸识别任务,可以使用人脸旋转、剪裁和变形等方式进行数据增强;对于自然语言处理任务,可以使用词汇替换、句子重排等操作进行数据增强。

  3. 增强后的数据应具有真实性:增强后的数据应该与原始数据具有相同或类似的真实性。如,不应该使用虚假的图像或文字进行增强。

  4. 合理控制增强程度:增强程度过大可能会导致数据过拟合,因此需要合理控制增强程度,使得增强后的数据符合真实数据的分布。

  5. 针对不同领域的数据采取不同的增强策略:不同领域的数据有其特有的特点,因此需要针对不同领域的数据采取不同的增强策略。例如,对于医疗影像数据,可以使用旋转、缩放和平移等操作进行增强。

        数据增强是机器学习中常用的一种数据预处理方法,能够有效增加训练数据的数量和多样性,提高模型的泛化能力和鲁棒性,但是需要根据具体业务需求制定相应的数据增强策略。

2、数据增强的方法

        尝试获取所有类型的数据可能缓慢又昂贵,相反应该专注于添加经分析表明可能会有帮助的类型的数据。可以用一个现有的训练示例来创建一个新的训练示例。

        数据增强是指通过一系列的操作,对原始数据进行变换和扩充,从而产生更多、更丰富的训练数据,以提高模型的性能和泛化能力。

常见的数据增强方式包括:

  1. 随机裁剪:在图像中随机裁剪出一些部分,这样可以增加模型对不同物体的识别能力。

  2. 镜像翻转:可以水平或垂直翻转图像,从而增加数据集的大小。但是仅适用于某些示例。

  3. 旋转和翻转:可以对图像进行旋转和翻转操作,从而增加数据集的多样性。

  4. 增加噪声:可以向图像中添加噪声,使其更接近真实场景,提高模型的鲁棒性。

  5. 变换亮度和对比度:可变换亮度和对比度,从而使模型更具有适应性和泛化性。

  6. 变换颜色:可以变换图像的颜色,如调整饱和度、色调和亮度等,增加数据集的多样性。

  7. 数据混合:将两个或多个图像混合起来,从而产生新的图像,增加数据集的多样性。

notes:

        也可以引入网格的随机扭曲,这些扭曲的示例过程将一个示例的一张图像变成了新的训练示例,可以使训练算法更稳健。

四、迁移学习

1、定义

        迁移学习(Transfer Learning)指的是将已经学习到的知识应用于解决新问题的过程。在机器学习中,通常情况下,我们需要在数据量大、计算资源充足的情况下,使用一定的算法模型进行训练,才能得到具有一定泛化能力的模型,而这个过程需要耗费大量的时间和资源。而迁移学习则是通过利用已经得到的模型和数据,进行知识迁移,来解决新问题,这样可以节省大量的时间和资源,提高模型的学习效率和性能。迁移学习可以通过多种方式进行实现,比如利用已有模型的参数进行微调,或者利用已有模型的特征提取能力进行新问题的特征表示。

具体来说,迁移学习可以通过以下方式实现:

  1. 基于已训练好的模型进行微调:将一个已经训练好的模型作为初始模型,在新的任务上进行微调,以适应新任务的要求。这可以加快模型的训练速度并提高性能。

  2. 基于已训练好的模型进行特征提取:利用一个已经训练好的模型的中间层输出作为新任务的输入特征,从而避免了从头开始训练的过程。

  3. 多任务学习:通过将多个相关任务的学习过程相互影响,来提高单一任务的学习效果。

        对于迁移学习,通常应该考虑的因素包括源任务和目标任务的相似程度,源任务的数据量和质量,以及选择合适的迁移方法等。

        迁移学习在实际应用中具有广泛的应用,例如将一个在大规模图像分类任务中训练好的模型应用到人脸识别任务中,或在语音识别任务中利用从其他语言中学习到的语音模型来提高性能等。

迁移学习可以实现的原因在于以下两点:

  1. 共享知识:不同的任务在数据上存在一定的相关性,这些相关性会导致相似的特征出现在不同的任务中。因此,通过在共享特征上进行知识迁移,可以加速新任务的学习过程,提高学习效率。

  2. 提取特征:在迁移学习中,已经训练好的模型可以提供有效的特征表示,这些特征可以被用于新任务中,而不需要从头再次训练整个模型。这样可以避免新问题数据量不足、模型过拟合的问题,提高模型的泛化能力。

综上所述,迁移学习可以通过共享知识和提取特征的方式,将已经学习到的知识应用于解决新问题,从而提高模型的学习效率和性能。

2、工作原理

         假设需要识别从0到9的手写数字,但是没有手写数字的那么多的标记数据。有以下解决方法:

        假设找到了一个非常大的数据集,其中包含一百万张猫、狗、汽车、人等图像,其中有一千个类别,然后,可以开始在这个包含一千个不同类别的一百万张图像的大型数据集上训练神经网络,并训练算法将图像x作为输入,并学习识别这一千个不同类别中的任何一个。

        在这个过程中,最终学习到的参数w^{[1]}b^{[1]}w^{[2]}b^{[2]}w^{[3]}b^{[3]}w^{[4]}b^{[4]}还有输出层w^{[5]}b^{[5]}。要应用迁移学习,则需要复制此神经网络改变输出层,在其中插入参数w^{[1]}b^{[1]}w^{[2]}b^{[2]}w^{[3]}b^{[3]}w^{[4]}b^{[4]}

        但对于最后一层,需要用10个输出单元的小输出层来替换旧的输出层,这10个输出单元将对应与希望神经网络识别的0到9的数字。注意此时,参数w^{[5]}b^{[5]}无法复制过来,因为该层的维度已经更改了,因此需要提出新的参数w^{[5]}b^{[5]},需要从头开始训练参数w^{[5]}b^{[5]}

在上述迁移学习例子中,关于如何训练示例神经网络的参数有两种选择:

        1、只训练输出层参数,可以使用的是前四层的参数,实际上是除最终输出层之外的所有层作为参数的起点,将其固定,然后运行优化算法,例如梯度下降或Adam优化算法,仅更新w^{[5]}b^{[5]},以降低从小训练集中识别数字0到9的代价函数。

        2、训练网络中所有参数,包括参数w^{[1]}b^{[1]}w^{[2]}b^{[2]}w^{[3]}b^{[3]}w^{[4]}b^{[4]}还有输出层w^{[5]}b^{[5]},但前四层参数将使用在之前大训练集训练的值进行初始化。

        如果使用非常小的训练集,那么选项1比较适合,如果是稍微大一点的训练集,那么选项2会好一点。

        这种算法称为迁移学习,因为开始是通过学习识别大数据集猫、狗、汽车等,希望算法已经为处理图像输入的早期层学习了一些合理的参数集,然后通过将这些参数转移到新的神经网络,新的神经网络从一个更好的地方开始学习参数,这样就可以推进学习进度一点点,最终成为一个很好的模型。这两个步骤首先在大型数据集上进行训练,然后再较小的数据集上进一步调整参数。第一步被称为监督预训练(supervised pretraining)。第二步被称为微调(fine tuning),可以在其中获取已初始化或从监督预训练中获得的参数,然后进一步运行梯度下降以微调权重,来适应可能拥有的特定应用。

        只需下载其他人已经训练好的神经网络,然后将输出层替换成自己的输出层并执行选项1或选项2即可,调整一个别人已经进行过监督预训练的神经网络,只需做一点微调就可以快速得到一个在个人应用中表现良好的神经网络。

notes:

        预训练是用预训练的数据集找出一个大致的工作模板,最后得出结论。微调是在已有工作模板的基础上直接按部就班,但是需要进行一定的改动、优化,使之符合本项目的工作流程。

五、机器学习项目完整周期

1、机器学习项目完整周期

机器学习项目的完整周期包括以下几个阶段:

  1. 问题定义:首先确定项目的目标,明确需要解决的问题。这个过程需要考虑数据可用性、目标可度量性、问题独特性等因素。

  2. 数据采集:采集数据,包括数据来源、数据格式、数据存储方式等。

  3. 数据清洗和预处理:这个阶段主要是对数据进行预处理和清洗,包括数据去重、缺失值填充、异常值处理等。

  4. 特征工程:利用领域知识和统计方法,将原始数据转化为可用于模型训练的特征。这个过程需要考虑数据的可行性、有效性等因素。

  5. 模型选择:选择适合项目的模型,包括机器学习模型、深度学习模型等方法。

  6. 模型训练和验证:利用训练数据集训练模型,并使用验证集进行模型调优和评估。这个过程需要考虑数据集划分、交叉验证等因素。

  7. 模型应用:将训练好的模型应用到实际场景中,进行预测和决策。

  8. 模型监控和优化:监控模型的表现,进行模型维护和优化,保证模型的持续有效性。

以上是机器学习项目的完整周期,其中每个阶段都需要精细的操作和实践经验。

2、举例说明

以语音识别为例说明一个机器学习项目的全周期:

        1)、确定项目范围,也就是决定项目是什么以及想实现什么。

        2)、收集数据,确定训练机器学习系统所需的数据,然后着手获取音频并获取数据集标签的转录本。

        3)、训练模型,训练语音识别系统然后进行错误分析,借助错误分析进行学习算法的改进优化操作。绕着循环训练模型,错误分析,加以改进。

        4)、在生产环境中部署,提供给用户使用。当部署一个系统时,必须确保继续监控系统的性能并维护系统,防止性能变差,不可以仅仅在服务器中托管该机器学习模型。

六、公平、偏见与伦理

        随着机器学习技术的广泛应用,公平、偏见和伦理问题日益引起人们的关注。这些问题可能会对机器学习的应用和结果产生重大的影响。

  1. 公平性:机器学习算法可能存在一些偏见和不公正的因素,如样本不平衡、特征不公平等。这些问题可能导致算法对某些人群或少数群体做出错误的判断,从而带来不公平的结果。为了解决这些问题,需要对算法进行平衡和公正性的测试,才能确保算法对所有用户都平等。

  2. 偏见问题:机器学习算法可能受到历史偏见的影响,如性别、种族、年龄和地理位置等。这些偏见可能影响算法的预测和决策,甚至会加剧社会不公正的现象。为了解决这些问题,需要对机器学习算法进行审查和调整,以确保算法对所有群体都公正。

  3. 伦理问题:机器学习算法的应用可能带来一些伦理问题,如个人隐私、自由意志和道德风险。例如,算法可能会收集和使用用户的个人信息,从而带来隐私问题。另外,算法可能会通过推荐、预测等形式影响用户的自由和选择,从而带来道德困境。为了解决这些问题,需要遵循伦理原则和规范,确保机器学习算法的应用符合社会价值和道德标准。

        总之,机器学习的公平、偏见和伦理问题需要得到足够的重视和关注。只有通过多方面的努力,才能实现机器学习技术的合理和可持续发展。

七、倾斜数据集

        倾斜数据集指的是在数据分布中存在明显偏斜的情况下所形成的数据集。这种偏斜可能是由于某些数据在数量上远远多于其他数据,或者是由于数据的分布极不均匀。例如,如果一个电商网站的购买记录数据集中有极少数的高额订单,那么这个数据集就是倾斜的。

倾斜数据集会对机器学习算法的性能产生影响。因为数据分布不均,导致算法更容易出现过拟合或欠拟合的问题,从而影响模型的预测准确度。因此,需要在处理倾斜数据集时采取特定的措施,比如对数据进行均衡处理、使用特定的损失函数等。

        假设正在训练二元分类器,根据实验室测试或患者的其他数据来检测患者的罕见疾病。假设在测试集上达到了1%的错误,那么诊断正确率为99%,似乎是个很好的结果。但事实上,如果这是一种罕见的疾病,即正向样本远小于反向样本,大概只有0.5%的人患有这种疾病,但是我们模型的错误率是1%,这样就可能会检测不出来。这就是一个倾斜数据集问题。

        在处理倾斜数据集的问题时,我们通常使用不同的误差度量,而不仅仅是分类误差来评价学习算法的性能。

1、倾斜数据集的误差指标

处理倾斜数据集时,通常使用以下误差指标:

  1. 准确率(Accuracy):准确率是最常用的误差指标之一,计算公式为模型预测正确的样本数除以总样本数。但是,对于倾斜数据集来说,准确率可能会被误导,因为即使模型将所有样本都预测为占主导地位的类别,也可以获得很高的准确率。

  2. 精确率(Precision):精确率是指在所有被模型预测为正例的样本中,确实是正例的样本数量所占比例。精确率的计算公式为真正例数(TP)除以真正例数(TP)和假正例数(FP)之和。

  3. 召回率(Recall):召回率是指在所有真正的正例中,被模型预测为正例的样本数量所占比例。召回率的计算公式为TP除以TP和假负例数(FN)之和。

  4. F1 Score:F1 Score是精确率和召回率的调和平均值,计算公式为2 * (Precision * Recall) / (Precision + Recall)。它能够同时考虑精确率和召回率的性能表现。在处理倾斜数据集时,F1 Score通常是比准确率更能反映算法性能的指标。

        除了以上指标,还有一些其他的误差指标,比如ROC曲线和AUC指标等,可以用于评估模型在不同阈值下的性能表现。

举例说明:

        如图,交叉验证集上有100个例子。 

精确率(Precision)

        正确预测为1的个数除以总共预测为1的个数

高精度说明,如果预测出这个人患有这种罕见病,那么这个人有很大的可能真的患有该罕见病。

召回率(Recall)

        正确预测为1的个数除以总共实际为1的个数

高召回说明,如果有一个患有这种罕见病的患者,算法可能会正确的识别出来他们患有这种疾病。

notes:

        这两个指标可以帮助检测学习算法是否一直打印y=0,如果一直预测为0,则两个指标的分子都将为0.

        在倾斜数据集中,如果算法实际上一直预测为零,则精度实际上变得不确定,因为实际上样本并不是都是0,在实践中,如果一个算法连一个正例都没有预测到,我们说其精度也为0.

2、精确率与召回率的权衡

        精确率和召回率是评估分类模型性能的两个指标。精确率衡量模型预测为正例的样本中有多少是真正的正例,而召回率衡量真正的正例中有多少被模型正确预测。

        在权衡精确率和召回率时,需要根据具体的应用场景来决定哪一个指标更重要。如果一个模型用于筛查疾病,那么召回率更为重要,因为不能漏诊真正患病的人;如果一个模型用于过滤垃圾邮件,那么精确率更为重要,因为不能误判正常邮件为垃圾邮件。

        在实际应用中,根据具体情况可采取一些方法来平衡精确率和召回率,如调整分类模型的阈值、改变特征集、改变算法等等。通常,可以在模型训练过程中尝试多种不同的参数组合,然后根据业务需求选择最优的模型。

        如果使用逻辑回归进行预测,那么逻辑回归模型将输出0到1之间的数字。通常会将逻辑回归的阈值设为0.5,但是如果我们需要将模型预测精度提高时,可以适当提高阈值,可以为0.7,0.9.。当阈值为0.9时,这时的精确率就会非常高,同时召回率就会非常低,因为我们检测出来的人变少了,但是精度变高了。如果检测出一个人患有该罕见病,那么这个人就极有可能患有该罕见病。

        同样,如果我们的需求时尽可能多的检测出患病者,我们可以适当的减低阈值,这样虽然精确率会下降,但是召回率会增加,检测出来的病人也会很多。

        精确率和召回率一般是要我们人为设置阈值的,如果需要算法可以自动权衡精确率和召回率,我们可以使用另一个指标 F1 score,它可以自动结合精确率召回率来我们选择具有价值的或两者之间的最佳权衡。 

F1 score是精确率(precision)和召回率(recall)的调和平均值,用于评估分类模型的综合性能。F1 score的取值范围是0到1,越接近1表示模型的性能越好。

F1 score的计算方法如下:

F1 = 2*\frac{precision*recall}{precision+recall}

其中,precision表示精确率,recall表示召回率。

        F1 score的优劣与精确率和召回率密切相关。当精确率和召回率差距较大时,F1 score会很低;当精确率和召回率相当时,F1 score会很高。F1 score适用于有着不同类别样本数量差异或者数据不平衡的分类任务,如欺诈检测、罕见疾病预测等。

        需要注意的是,F1 score只能用于二分类问题。对于多分类问题,可以计算每个类别的F1 score后再对其进行平均处理,如宏平均(macro-average)和微平均(micro-average)等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IAz-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值