当前位置:首页 > 数码 > 如何选择和使用-业务模型与算法模型 (如何选择和使用注意事项)

如何选择和使用-业务模型与算法模型 (如何选择和使用注意事项)

admin8个月前 (04-17)数码40
数据模型:业务模型与算法模型的全面解析 导言 数据的世界离不开模型,但"模型"一词的使用往往令人困惑。从营销中的 4P 模型到机器学习中的 K-means 聚类,它们都被称为模型。那么,这些模型究竟有何区别?本文将深入探讨业务模型和算法模型之间的差异,帮助您澄清这些概念。 模型:对现实的抽象 模型本质上是对现实世界的抽象,旨在通过少数关键信息来描述复杂的问题。关键信息的提取方式有两种: - 业务逻辑提取:关注业务视角,以业务逻辑为基础。 - 数学/统计学提取:利用数学、统计学、运筹学或机器学习方法论。 业务模型 vs. 算法模型 业务模型 从业务角度出发,关注业务规则和概念。 以逻辑树、因果关系等方式表示。 通过业务变量来解释问题,易于理解,便于业务干预。 算法模型 基于数学或统计学原理,描述数据之间的数量关系。 以公式、算法的形式表示。 通过数据处理和分析来解决问题,无需人为干预。 业务模型的优势 业务角度解释:能够从业务角度解释问题,提供业务洞察。 业务影响可视化:易于观察业务行动对绩效的影响。 责任分配清晰:帮助明确不同业务部门的职责和绩效目标。 算法模型的优势 运算速度和效率:可以快速处理大量数据,节省时间和精力。 发现隐藏模式:识别业务上难以发现的潜在模式和关联。 个性化推荐:利用协同过滤等算法,提供个性化的建议和推荐。 业务模型与算法模型的协作 为了实现顺畅协作,建议在项目启动前厘清以下问题: 问题定义:明确需要解决的核心问题。 数据可用性:评估可供分析的数据质量和数量。 模型选择:根据问题的性质和数据可用性,选择最合适的模型类型。 模型验证:使用行业基准或历史数据验证模型的准确性和可靠性。 模型部署:建立流程将模型部署到生产环境中,实现自动化分析和决策。 具体的例子 业务模型:4P 模型 4P 模型(产品、价格、促销、渠道)是一种经典的营销模型,从业务角度解释如何通过优化这四个因素来提高销售额。 算法模型:回归分析 回归分析是一种算法模型,用于量化变量之间的关系。例如,可以利用回归模型来预测产品价格与销量之间的关系。 结论 业务模型和算法模型是数据分析的两个重要组成部分,各有其优势和适用场景。业务模型侧重于业务逻辑的解释和可视化,而算法模型则专注于数据处理和自动化。通过理解这些区别,您可以做出明智的决策,选择最合适的模型,并制定有效的策略来解决数据驱动的业务问题。

第二章 模型评估与选择

上一章,简略地介绍了机器学习,以及 数据集、数据集、测试集、假设空间、版本空间等等的相关概念 。这一章就开始讲模型评估与选择了,因为书上是以“学习器”来称呼模型的,所以下面我也用学习器来进行说明总结。

什么是经验误差? 在分类样本时会出现分类错误,我们把分类错误的样本数占样本总数的比例称为 “错误率” , 精度 即正确率,自然是1-错误率了。学习器的 实际预测输出 与样本 实际输出 之间的 差异 就称为 “误差” ,于 训练集 就是 “经验误差” ,于 新样本 就是 “泛化误差” 。

什么是过拟合? 我们希望学习器能在新样本的预测中有更好的效果,即泛化性能最大化。但 在学习过程中 ,往往会把训练集中的样本学得过多,使得泛化降低,就是说 学到了 训练样本个体的特点而不是总体样本的特点,或者说学了这个训练集的特殊点, 相对于所有潜在的样本来说的特点 。这就是 “过拟合” ,那么与过拟合相对的就是 “欠拟合” ,反而思之,便是学得不到位,样本的一般性质都掌握不了!

因为过拟合无法避免,所以我们想要去减少它的风险。 其实就是 对模型的泛化误差进行评估,然后选择泛化误差最小那个。 对多种学习算法、参数配置进行选择即模型选择: 一个学习算法→不同参数配置→不同模型

在实验测试中,只有数据集可用,为了对学习器的泛化误差进行评估,只能 从数据集(验证集)中分离出训练集与测试集 ,测试集用于测试学习器对新样本的判别能力, 将测试集上的“测试误差”作为泛化误差的近似 。故 测试集要尽可能与训练集互斥 。

直接将数据集划分两个互斥的集合,一个作训练集,一个作测试集。训练集、测试集的划分要尽可能保持数据分布一致性。即 保持训练集和测试集中样本类别比例相差不大,否则会产生偏差 。一般确定训练集与测试集的样本比例之后,对于数据集的样本划分的方法也有很多, 不同划分方法造成模型评估结果也不同,所以就要进行多次留出法,随机划分重复评估再取平均值作为评估结果 。对于留出法,其划分样本于训练集与测试集的比例要适当,若是训练集含有大多数样本,那么其模型结果便与数据集训练出来的模型接近,但是由于测试集样本过少,其评估结果就不那么准确,反之也是一样的道理。 故常常采取2/3~4/5的样本作为训练集,其余作为测试集。

将数据集划分为k个大小相似的互斥子集,即互不包含。 每个子集尽可能保持数据分布的一致性,即通过 分层采样 得到。 这k个子集又分出k-1个作为训练集,剩下一个作为测试集,可以分k次,进行k次训练和测试 ,最终也是求其 结果的均值 。同留出法, 交叉验证法要随机使用不同的划分重复多次 ,最终结果是多次k折交叉验证结果的均值。比如“10次10折交叉验证”就会有100次训练,有100个训练结果(模型)。 交叉验证法有一个特例,其名为 留一法 ,就是数据集 有多少个样本,就划分成多少个子集 ,即每个子集一个样本,于是随机划分只会产生一种结果, 所以这种方法被实际评估的模型与期望评估的用数据集训练出来的模型很相似。 其缺点是当数据集很大的时候,用它就需要庞大的计算量(还未考虑调参)。

上面两种方法是需要将数据集划分的,这样自然会让 用训练集训练出的模型 与 用数据集训练出来的模型 有一定的 估计偏差 。如此,自助法以自助采样法为基础,简单地讲就是重复随机抽样, 从数据集D中进行重复随机抽样m次,便会得到一个含有m个样本的数据集D 1 ,这就是自助采样的结果。 对于 样本在m次不被采集到 的概率:

这说明了,D中大概有36.8%的样本没有出现在D 1 中。于是我们可以 把D 1 作为训练集 ,把那约 36.8%的样本作为测试集 。其优点是对于 数据集较小、难以有效划分训练 时很有用,其缺点就是改变了初始数据集的划分,这可能会引入估计偏差。

什么是调参? 上面粗略地提到过参数的调整,我们 在进行模型的评估和选择时,不仅要对学习算法进行选择,还要对算法参数进行设定 ,这便是调参。 梳理一下:

参阅自: 机器学习为什么需要训练,训练出来的模型具体又是什么? 回到调参,对于每种参数都训练出模型是不现实的,我们应 对每个参数选定一个范围和步长 ,选出的参数即为 候选参数值(一般10个以内) ,最终从这些候选参数值中产生 选定值 。这是一种折中的结果,是为了使学习过程成为可能。 然鹅,尽管我们得到了这个模型,但这不是最终提交给用户的模型,我们 需要对数据集重新训练 ,使用全部样本以训练出的模型,才是最终模型。

习得模型在实际遇到的数据称为测试数据;模型评估与选择中用于评估测试的数据称为验证集。 例如:在研究对比不同算法的泛化性能时,用测试集上的判别效果来评估模型在实际使用中的泛化性能,而把训练数据分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

是衡量模型泛化能力的评价标准。 其反映了 任务需求 。对于给定的样例集D={(x 1 ,y 1 ),(x 2 ,y 2 ),...,(x m ,y m )},其中的y是x的真实标记,现在要评估学习器f的性能,于是把f的结果与y进行比较。 回归任务——性能度量——“均方误差” :

一般的,对于数据分布和概率密度函数p(·),均方误差可以表示为:

下面主要介绍 分类任务中常用的性能度量 。

上面这两种就是分类任务中常用的性能度量啦!对于样例集D,分类错误率定义如下:

【注:Ⅱ(·)是指示函数。若·( 即对括号内进行逻辑判断 )为 真 则取值为 1 , 假 则取 0 】 精度定义:

一般的:

对于真实类别与学习器预测类别的异同,我们可以分为真正例、假反例、假正例、真反例,分别称为TP、FN、FP、TN(T=True,F=False,P=Positive,N=Negative)。这里的 真假是针对学习器预测结果 来说的。 于是查准率P与查全率R定义如下:

这 两个性能度量是矛盾的,呈负相关 。 我们常常根据学习器的预测结果对样例进行排序, 把“最可能”是正例的放在前面 。按这个顺序,逐个把样本作为正例进行预测,每次都可以计算出当前的查准率与查全率,然后以查准率为纵轴,查全率为横轴,作P-R图如西瓜书p 31 。 若一个学习器的P-R图完全包含了另一个,则说明前者性能更优于后者。 但往往会出现不完全包含, 出现交叉的情况 ,那么我们 一般用F1 来对比衡量。 在说F1度量之前,先说一下平衡点。 平衡点(BEF) 是综合考虑查准率与查全率的性能度量。是 “查准率 = 查全率” 时的取值。是一种简单的度量。 F1度量:

一般形式:

其中 >0 度量了查全率对查准率的 相对重要性 。 >1时,查全率有更大的影响,<1时,查准率有更大的影响。

上面提及到的性能度量的 平均值 (在各 混淆矩阵(其实就是上面真假正反例的矩阵)上分别计算出查准率与查全率,再计算平均值)称为 “宏查准率”(macro—P)、“宏查全率”(macro—R)以及宏F1(macro—F1) ,前两个均值就是算术平均的计算方式,相加除以n,最后一个则是根据前两个计算得来,参考上面F1的定义。 上面是一种做法,也可以把混淆矩阵的真假正反例进行平均,则有、、、,于是可求出 “微查准率”(micro—P)、“微查全率”、“微F1”。 然后你懂的,参考上面写的相关公式,代入即可。

ROC全称是“受试者工作特征曲线”,根据预测结果对样例进行排序,然后按顺序逐个把样本作为正例进行预测,以每次计算出的“真正例率”(TPR)作为纵轴,“假正例率”(FPR)作为横轴。两者定义如下:

ROC曲线下的面积即为AUC ,是用来比较当两个学习器的ROC曲线相交不完全包含,要进行性能比较时,则使用AUC。 AUC的估算 :

其与排序误差有紧密联系,于是给定个反例,个正例,令和分别表示反例、正例的集合。则 排序损失 定义为:

对应的是 ROC曲线之上的面积 ,由此有:.

为何引入代价? 因为.......你这样做是要付出代价的!即为所造成结果的超额处理。引入代价是为了 衡量不同类型错误所造成不同的损失 ,可为错误赋予 “非均等代价” . 代价矩阵 :

其中表示将第i类样本预测为第j类样本的代价。 例如上矩阵中,损失程度相差越大,与值的差别越大,比较一般是以 代价比值 而非绝对值。(即倍数关系)

从前面提到的性能度量, 均是在假设均等代价前提下 进行计算的,如今引入了非均等代价,便要对其考虑在内。 于是将上面代价矩阵中的第0类作正例,第1类作反例,而与分别表示正例子集和反例子集,则以错误率为例子,“代价敏感”错误率为:

算法

除此之外,若令中的不限取0和1,则可定义出多分类任务的代价敏感性能度量。 那么在非均等代价下,ROC曲线无法直接反映学习器的期望总代价,于是我们引入“代价曲线”,其横轴是取值为[0,1]的正例概率代价:

其中p是样例为正例的概率,纵轴是取值为[0,1]的 归一化 代价:

其中FNR=1-TRP。ROC曲线上的每一点对应代价平面上的一条线段,若ROC曲线上一点为(FPR,TPR)则对应一条从(0,FPR)到(1,FNR)的线段,于是 所有线段的下界围成的面积即为在所有条件下学习器的期望总体代价。

有了实验评估方法和性能度量之后,便是对学习器的泛化性能进行比较。此时为了对学习器进行适当的比较,统计假设检验为我们进行学习器性能比较提供了重要依据。该节默认以错误率为性能度量。

1. 二项检验

2. t检验

5.如何选择合适的PLS算法参数来优化模型性能

5.如何选择合适的PLS算法参数来优化模型性能?如何选择合适的PLS算法参数来优化模型性能?偏最小二乘回归(PLS)是一种常用的多元线性回归方法,可以用于变量选择和建立预测模型。 其中,PLS算法参数的选择对于模型的性能优化非常重要。 下面将介绍如何选择合适的PLS算法参数来优化模型性能。 首先,需要了解PLS算法的具体步骤。 PLS算法通过对自变量和因变量之间的协方差进行分解,找到主成分,从而建立预测模型。 PLS算法的主要参数包括主成分的个数、放缩矢量的选择方法以及交叉验证的抽样方式。 对于主成分的个数,一般的做法是从少到多依次建立模型,并利用拟合误差和交叉验证误差来选择最优的主成分个数。 当误差开始稳定或变化不大时,就可以选择对应的主成分个数。 需要注意的是,选择过多的主成分会导致模型过度拟合,选择过少的主成分则会降低模型的预测能力。 对于放缩矢量的选择方法,一般有中心化、标准化和自动放缩三种方法。 其中,标准化方法可以消除变量间不同的变异性,但不适用于变量间有明显的相关性的情况。 自动放缩方法则可以同时适用于变量间有相关性和无相关性的情况。 最后,对于交叉验证的抽样方式,可以采用k-折交叉验证、留一法交叉验证等方法。 其中,k-折交叉验证是比较常用的方法,通过将样本数据分成k个部分,每次将其中一个部分作为验证集,其余部分作为训练集,反复迭代建立模型并计算误差,从而得到最终的模型。 总之,选择合适的PLS算法参数能够提高模型的预测性能,具体方法包括选择合适的主成分个数、放缩矢量的选择方法以及交叉验证的抽样方式。 需要根据具体问题的特点进行具体的选择与调整,以达到最优的效果。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: 算法

“如何选择和使用-业务模型与算法模型 (如何选择和使用注意事项)” 的相关文章

编程利器-面试法宝-刷题360-悟透算法真理 (面条式编程)

编程利器-面试法宝-刷题360-悟透算法真理 (面条式编程)

最近不时在刷算法题,刷华为OD算法题,有诸多好处: 宿愿用我自己疯狂刷题的劲头,感化大家,让大家爱上刷题,顺利经过华为OD机试,把握更多低劣的算法。 上方这道题,是很经典的深度优先搜查...

Dijkstra算法的深入探索-把握效率与最优性 (dijkstra 怎么读)

Dijkstra算法的深入探索-把握效率与最优性 (dijkstra 怎么读)

引言 在计算机科学和图论中,算法在有效解决复杂问题方面起着至关重要的作用。其中一个突出的算法是Dijkstra算法,它由荷兰计算机科学家Edsger W. Dijkstra于1956年开发。...

面向跨领域数据的迁移学习算法与模型研究 (什么是跨领域)

面向跨领域数据的迁移学习算法与模型研究 (什么是跨领域)

引言 随着数据的快速增长和跨领域应用的需求,如何利用已有的知识和数据来解决新领域的问题成为了一个重要的研究方向。迁移学习作为一种有效的机器学习方法,可以通过利用源领域的知识和数据来改善目标领...

使用生成对抗网络实现图像风格转换的突破性新算法 (使用生成对抗性网络的舞蹈动作生成)

使用生成对抗网络实现图像风格转换的突破性新算法 (使用生成对抗性网络的舞蹈动作生成)

一、图像风格转换简介 图像风格转换是指将一张图像的风格转换为另一张图像的风格,而保持图像内容不变。传统的图像风格转换方法通常基于图像的像素级别操作,如调整亮度、对比度和色彩等。这些方法往往无...

程序开发中罕用的十种算法-你用过几种 (程序开发中罕见的语言)

程序开发中罕用的十种算法-你用过几种 (程序开发中罕见的语言)

当编写程序时,了解和经常使用不同的算法对处置疑问至关关键。以下是C#中罕用的10种算法,每个算法都随同着示例代码和详细说明。 1.冒泡排序(BubbleSort): 冒泡排序...

强化学习算法在资源调度与优化领域的革命性应用 (深度学习算法)

强化学习算法在资源调度与优化领域的革命性应用 (深度学习算法)

强化学习简介 强化学习是一种机器学习方法,通过智能体与环境的交互来学习最优策略。在资源调度与优化中,我们可以将资源调度问题看作是一个强化学习问题,其中智能体是资源调度器,环境是计...

掌握算法并提升编程技能-程序员算法精通指南 (掌握算法的基本概念)

掌握算法并提升编程技能-程序员算法精通指南 (掌握算法的基本概念)

作为一名程序员,掌握算法对于解决复杂问题至关重要。在面试过程中,算法问题经常被问到,本文将介绍一些重要的算法,以及如何在面试中系统地准备算法。 深度优先搜索 深度优先搜索(DFS)是一...