埃森哲大数据方法论和模型部署标准化流程解读(完整版)

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

作者toby,来源公众号:python风控模型,埃森哲大数据方法论和模型部署标准化流程解读

大家好,我是重庆未来之智的toby老师,今天为大家分享埃森哲大数据方法论和模型部署标准化流程,并在关键步骤为大家解读分析。这标准化流程价值较大,可做行业参考,特别用于银行金融系统建模。

埃森哲(Accenture)是一家全球领先的专业服务公司,专注于战略、咨询、数字技术及运营服务,覆盖40多个行业领域。凭借强大的创新能力和行业洞察,埃森哲帮助客户实现数字化转型、提升运营效率并驱动可持续增长。公司拥有超过70万名员工,服务全球120多个国家的顶尖企业。

图片

数据分析即从数据、信息到知识的过程,数据分析需要数学理论、行业经验以及计算机工具三者结合。重庆未来之智的toby老师曾经遇到过某家建模工程师死磕大学里书本,忽略业务上各种变化,最终建立模型实用性差。真实金融风控领域大数据底层数仓是存在较多错误数据的,再加上个人征信和行业是实时变化的,加大了模型难度。

图片

随着计算机技术发展和数据分析理论的更新,当前的数据分析逐步成为机器语言、统计知识两个学科的交集(备选)

图片

随着计算机科学的进步,数据挖掘、商务智能、大数据等概念的出现,数据分析的手段和方法更加丰富。

图片

重庆未来之智信息技术咨询服务有限公司可以对个人和企业信用数据实现web可视化和智能数据分析,下面视频是对上市企业绿色信用评级系统介绍。

数据分析标准流程

CRISP-DM为90年代由SIG组织(当时)提出,已被业界广泛认可的数据分析流程。

图片

数据分析框架和流程图如下

下图详细描述了数据分析的六个主要阶段:业务理解、数据理解、数据准备、建立模型、模型评估和应用。在业务理解阶段,需要理解业务背景和评估分析需求;数据理解阶段涉及数据收集和清洗;数据准备阶段包括数据探索和转换;建立模型阶段根据业务需求选择合适的方法和工具;模型评估阶段对模型的精度、准确性等进行评估;最后在应用阶段,将模型结果应用于实际业务中,并根据反馈进行模型改进

图片

下图展示了一个数据分析框架的流程图,包括业务理解、数据理解、数据准备、建立模型和模型评估五个阶段。在业务理解阶段,明确需求后收集和清洗数据;数据准备阶段进行数据探索和转换;建立模型阶段使用分类、聚类、关联和时序模型等方法;最后在模型评估阶段,通过各种指标评估模型性能,并将结果应用于分析。

图片

数据清洗&数据探索

数据收集的方法多种多样。在对收集的数据进行分析前,要明确数据类型、规模,对数据有初步理解,同时要对数据中的“噪声”进行处理,以支持后续数据建模。toby老师补充目前一些新模型对噪声容忍度较高,不用处理也可以。

图片

数据清洗:1.异常值判别

数据清洗的第一步是识别会影响分析结果的“异常”数据,然后判断是否剔除。目前常用的识别异常数据的方法有物理判别法和统计判别法

图片

常见统计判别法

下图介绍了几种常用的异常值检测方法,包括拉依达准则(3σ准则)、肖维勒准则(等概率准则)、格拉布斯准则和狄克逊准则。每种方法都有其判别公式、剔除范围、操作步骤和评价。例如,拉依达准则通过计算数据与均值的差的绝对值是否大于3倍标准差来识别异常值;肖维勒准则则通过比较数据与均值的差的绝对值与标准差的倍数来识别异常值。每种方法都有其适用条件和优缺点,如拉依达准则适用于样本量大于185的情况,而肖维勒准则在样本量较小时效果较好。

图片

数据清洗:2.缺失值处理

在数据缺失严重时,会对分析结果造成较大影响,因此对剔除的异常值以及缺失值,要采用合理的方法进行填补,常见的方法有平均值填充、K最近距离法、回归法、极大似线估计法等。

随着数据量的增大,异常值和缺失值对整体分析结果的影响会逐渐变小,因此在“大数据”模式下,数据清洗可忽略异常值和缺失值的影响,而侧重对数据结构合理性的分析

图片

数据探索

通过数据探索,初步发现数据特征、规律,为后续数据建模提供输入依据,常见的数据探索方法有数据特征描述、相关性分析、主成分分析等。

图片

数据特征描述

下图介绍了描述数据分布特征的三个主要方面:中心位置、分散程度和图形特征。中心位置可以通过众数、中位数/四分位数和均值来衡量;分散程度则通过方差和标准差、极差、四分位差、标准分数(z-score)和离散系数来评估;图形特征包括偏度(衡量数据分布的倾斜程度,分为左偏分布和右偏分布)和峰度(衡量数据分布的扁平程度,分为尖峰分布和扁平分布)。图中还展示了不同分布形态的图形表示。

图片

数据概率分布

概率分布可以表述随机变量取值的概率规律,是掌握数据变化趋势和范围的一个重要手段。

下图介绍了概率分布的分类和特点,包括离散分布和连续分布两大类。离散分布中包括均匀分布、二项分布、几何分布、泊松近似和正态分布,每种分布都有其特定的条件和应用场景。连续分布则包括均匀分布、指数分布和正态分布,其中指数分布用于描述独立随机事件的时间间隔,正态分布则因其钟形曲线而广为人知。每种分布都有其数学定义和应用背景,如二项分布适用于只有两种可能结果的独立试验,正态分布则适用于许多自然和社会现象。

图片

数据分布初步推断

参数检验:数据的分布已知的情况下,对数据分布的参数是否落在相应范围内进行检验假设检验是数理统计学中根据一定假设条件由样本推断总体的一种方法,可以分为参数检验和非参数检验。

参数检验:数据的分布已知的情况下,对数据分布的参数是否落在相应范围内进行检验。

非参数检验:一般是在不知道数据分布的前提下,检验数据的分布情况。

总结

1、参数检验是针对参数做的假设,非参数检验是针对总体分布情况做的假设。

2、二者的根本区别在于参数检验要利用到总体的信息,以总体分布和样本信息对总体参数作出推断;非参数检验不需要利用总体的信息

图片

结构优化—相关性分析

用于分析的多个变量间可能会存在较多的信息重复,若直接用来分析,会导致模型复杂,同时可能会引起模型较大误差,因此要初步探索数据间的相关性,剔除重复因素。

图片

结构优化——相关性分析

检验动机:

样本数据只是总体的一个实现,因此,根据现有数据计算出来的相关系数只是变量相关系数的一个观测值,又称为样本相关系数。欲根据这个样本相关系数来估计总体相关系数,必须进行显著性检验。其原假设:在总体中,两个变量的相关系数(总体相关系数)为零

检验意义:

计算在原假设成立的情况下(也就是在两个变量相关系数为零的情况下),由于抽样的原因(收集样本数据的原因)得到当前的样本相关系数(可能这个系数并不为零,甚至还比较大)的概率。(p值越小说明越是小概率事件,不可能发生,拒绝原假设)

检验方法:

T检验(常用) :对于近似高斯分布的数据(如两个变量服从双变量正态分布), 相关系数的 样本分布 近似地服从自由度为N − 2的 t分布;如果样本容量不是特别小(通常大于30),即使观测数据不服从正态分布,依然可使用t检验

结构优化——主成分分析

Karl Pearson(1901)探究如何通过少数几个主成分(principal component)来解释多个变量间的内部结构时提出主成分分析法,旨在从原始变量中导出少数几个主分量,使其尽可能多地保留原始变量的信息,且彼此间互不相关

内涵:将彼此相关的一组指标变量转化为彼此独立的一组新的指标变量,并用其中较少的几个新指标变量就能综合反映原多个指标变量所包含主要信息的多元统计方法结构优化——主成分分析

应用:数据的压缩和解释,即常被用来寻找和简化判断事物或现象的综合指标,并对综合指标所包含的信息进行适当的解释

原理:设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。

图片

数据转换

数据转换或统一成适合于挖掘的形式,通常的做法有数据泛化、标准化、属性构造等,本文详细介绍数据标准化的方法,即统一数据的量纲及数量级,将数据处理为统一的基准的方法。

图片

• 各方法都有缺点,要根据客观事物的特征及所选用的分析方法来确定,如聚类分析、关联分析等常用直线法,且聚类分析必须满足无量纲标准;而综合评价则折线和曲线方法用得较多。

• 能简就简,能用直线尽量不用曲线。

定义:

按照某种指定的属性特征将数据归类。需要确定类别的概念描述,并找出类判别准则。分类的目的是获得一个分类函数或分类模型(也常常称作分类器),该模型能把数据集合中的数据项映射到某一个给定类别。

分类是利用训练数据集通过一定的算法而求得分类规则的。是模式识别的基础。

分类可用于提取描述重要数据类的模型或预测未来的数据趋势。

图片

下图展示了一个分类模型的构建和使用流程。首先,在模型构建阶段,对训练数据集中的每个样本进行类别标记,并使用这些数据来训练分类模型,如决策树或数学公式。接着,在模型使用阶段,该模型被用来识别未知对象的类别,并评估模型的正确性,通过比较测试样本的实际分类结果与模型预测结果来实现。图中还包含了一个具体的分类规则示例,用于判断员工是否应该加薪,以及一个决策树示例,展示了如何根据员工的岗位和司龄来决定是否加薪。

图片

分类的主要算法:KNN算法、决策树(CART、C4.5等)、SVM算法、贝叶斯算法、神经网络,集成树算法,逻辑回归,评分卡等。

图片

C4.5算法,这是一种用于分类的决策树算法,属于有导师的归纳学习算法。C4.5算法通过构建类似二叉树或多叉树的结构来进行分类,其中每个非叶结点对应一个属性测试,每个分支对应一个测试结果,叶结点代表类别。图片还通过一个决策树示例,展示了如何根据年龄、长相、收入和职业等属性来决定是否见面。C4.5算法的特点包括模型直观清晰、解决连续数据值的学习问题,以及提供将学习结果转换为决策树规则集的功能。

图片

贝叶斯算法在分类问题中的应用

贝叶斯定理用于计算未知类别样本属于各个类别的概率,并选择概率最大的类别作为样本的类别。该算法假设各属性的取值相互独立,并在属性之间满足独立性假设时,分类的准确度较高。贝叶斯算法没有分类规则输出,适用于多属性和元组的分类问题,但计算复杂度可能较高,尤其是在属性值较多时。

图片

BP神经网络

BP(反向传播)神经网络,这是一种多层前馈网络,通过学习输入和输出模式之间的关系来调整网络权重和阈值,以最小化误差平方和。BP网络包括输入层、隐藏层和输出层,其学习过程包括正向传播和误差反向传播两个阶段。正向传播阶段输入样本通过各层网络计算输出,若输出与期望不符则进入反向传播阶段,调整各层权重。BP网络的不足包括收敛速度慢、可能陷入局部最小值、对网络结构选择依赖经验以及学习过程中的不稳定性。图中还展示了一个BP神经网络的结构示例,说明了不同层之间的连接和数据流动。

图片

回归

线性回归由英国统计学家F.GALTON和K.Pearson提出,用于寻找变量之间的线性关系。图片解释了线性回归的定义,即在多个变量中寻找相关关系的模型,并通过属性选择去除不相关变量,保留线性相关的变量。图片还展示了线性回归模型的建立过程,包括数据、模型和预测之间的关系,并通过图表示例说明了残差分析和变量之间的确定性与非确定性关系。此外,图片还列出了一些实际应用线性回归分析的例子,如人的身高和体重、家庭收入和消费等。

图片

回归-线性回归

回归分析分为一元线性回归、多元线性回归和LOGISTIC线性回归,分别用于分析一个或多个自变量与因变量之间的关系。进行回归分析前,需要满足正态性、零均值性、等方差性和独立性等假设。检验方法包括样本容量要求、模型显著性(F检验)、系数显著性(t检验)、残差检验和拟合优度(决定系数R²),以确保模型的有效性和可靠性。

图片

分类器模型评估(验证)

。首先,通过不同的测试集选取方法(如保持法、随机二次抽样、交叉验证、自助法等)来评估模型。接着,使用多种效果指标来衡量模型性能,包括基于统计的指标(如误差、离差、Kappa统计量等)和基于比率的指标(如准确率、敏感性、特异性等)。最后,通过混淆矩阵、ROC曲线、KS曲线、Lift图、响应率曲线和捕获率曲线/增益图等可视化工具来呈现评估指标,以便于模型之间的比较和单模型预测效果的分析。整个流程的目的是为了模型之间的比选以及单模型预测效果的评估。

图片

测试集选取方法

下图为四种不同的数据集划分方法:保持法、随机二次抽样、交叉验证和自助法。每种方法都有其描述和图示,展示了如何将原始数据集划分为训练集和测试集。保持法是将数据随机分为训练集和测试集,通常比例为三分之二对三分之一;随机二次抽样是多次重复使用保持法以获得平均效果指标;交叉验证是最常用的k折交叉法,将数据分成k份,轮流作为测试集;自助法则是有放回地抽取样本形成训练集,未抽取到的作为测试集。这些方法用于建立模型和评估模型的性能。

图片

分类模型评估-效果指标—基于比率

下图通过一个二分类问题的例子,解释了混淆矩阵及其相关的几个重要效果指标,包括准确率、敏感性、特异性和精确度。混淆矩阵展示了模型预测结果与实际结果的对比,其中包含真正类(TP)、假正类(FP)、真负类(TN)和假负类(FN)四种情况。准确率是正确预测的比例,敏感性(召回率)是正确识别正类的比例,特异性是正确识别负类的比例,精确度是预测为正类中实际为正类的比例。图片还讨论了在不平衡问题(如违约率很低的情况)中,准确率可能不足以评价模型性能,而敏感性和精确度则更为重要。此外,可以通过综合敏感性和精确度来选择最佳模型。

图片

分类模型评估

下图介绍了三种评估分类模型性能的曲线:ROC曲线、增益图和KS曲线。ROC曲线展示了不同阈值下模型的真正率和假正率,曲线下面积(AUC)越大,模型性能越好。增益图显示了模型相对于随机模型的预测能力,理想情况下增益图应接近左上角。KS曲线则展示了模型区分正负类的能力,最大KS值越大,模型区分能力越强。图片中还包含了对这些曲线的详细解释和示例图,帮助理解如何通过这些曲线评估和比较不同模型的性能。

图片

分类模型评估

下图介绍了三种分类模型评估指标:Lift图、响应率曲线和捕获率曲线。Lift图展示了模型预测的正类概率与随机概率的比值,用于评估模型对不同概率区间的区分能力。响应率曲线比较了模型预测的正类概率与实际正类比例,衡量模型在不同概率阈值下的表现。捕获率曲线则展示了模型在不同概率区间内捕获正类的能力。这些指标直观易懂,有助于根据业务需求选择合适的模型。图片还解释了随机概率和横坐标的概念,并强调了这些指标在实际业务中的广泛应用。

图片

聚类分析

聚类分析对具有共同趋势或结构的数据进行分组,将数据项分组成多个簇(类),簇之间的数据差别应尽可能大,簇内的数据差别应尽可能小,即“最小化簇间的相似性, 最大化簇内的相似性”。

五种不同的聚类算法类型:基于划分的聚类、基于层次的聚类、基于密度的聚类、基于网格的聚类和基于模型的聚类。每种类型都有其特点和典型算法,例如基于划分的聚类包括k-均值法和k-中心点算法,基于层次的聚类包括凝聚法和分裂法,基于密度的聚类如DBSCAN,基于网格的聚类如STING,基于模型的聚类如COBWEB。这些算法用于对数据集进行分组,以便在数据挖掘和机器学习中发现数据的内在结构。

图片

K-Means算法

K-Means算法,也被称为K-平均或K-均值,是一种得到最广泛使用的聚类算法。主要思想是:首先将各个聚类子集内的所有数据样本的均值作为该聚类的代表点,然后把每个数据点划分到最近的类别中,使得评价聚类性能的准则函数达到最优,从而使同一个类中的对象相似度较高,而不同类之间的对象的相似度较小。

图片

聚类模型评估

下图介绍了几种评估聚类效果的指标,包括凝聚度、分离度、轮廓系数、相似度矩阵和共性分类相关系数。凝聚度衡量族内对象的凝聚情况,分离度衡量族与族之间的差异,轮廓系数综合了凝聚度和分离度,相似度矩阵通过与理想相似矩阵比较来评估聚类效果,共性分类相关系数衡量共性分类矩阵与原相异度矩阵之间的相关度。这些指标用于评估聚类效果、确定合适的分类数量和选择合适的聚类模型。

图片

关联规则

自然界中某种事物发生时其他事物也会发生,则这种联系称之为关联。反映事件之间依赖或关联的知识称为关联型知识(又称依赖关系)。要求找出描述这种关联的规则,并用以预测或识别。关联分析的目的是找出数据集合中隐藏的关联网,是离散变量因果分析的基础。

图片

下图介绍了关联规则分析中的基本概念,包括支持度、置信度和兴趣因子,并提供了一个关于喝茶和喝咖啡行为的示例。支持度是指同时包含A、B事务占总事务的百分比,置信度是预测性指标,表示A事务发生时B事务发生的可能性。兴趣因子用于衡量两个变量之间的线性关系,其值大于1表示正相关,小于1表示负相关。示例中,喝茶和喝咖啡的支持度分别为15%和75%,置信度为75%,兴趣因子为0.94,表明两者之间存在较强的正相关性。

图片

主要的关联算法:Apriori关联算法、FP-growth关联算法等;

Apriori算法

Apriori算法是最基本的一种关联规则算法,它采用布尔关联规则的挖掘频繁项集的算法,利用逐层搜索的方法挖掘频繁项集

图片

FP-Growth算法

FP-Growth算法不产生候选集而直接生成频繁集的频繁模式增长算法,该算法采用分而治之的策略:在第一次扫描数据库之后,把数据库中的频繁项目集压缩到一棵频繁模式树中,形成投影数据库,同时保留其中的关联信息,随后继续将FP-tree分成一些条件树,对这些条件树分别进行挖掘。

图片

关联规则模型评估

下图展示了关联规则模型评估的框架,目的是识别有意义(有价值)的关联模式。评估分为客观度量和主观度量两类。客观度量包括对称度量指标,如支持度、相关性、兴趣因子、余弦等,以及非对称客观度量,如置信度、J度量、Gini指标、可信度因子等。主观度量则涉及可视化、基于主观模板的度量和基于主观兴趣的度量等。

图片

时间序列分析

时间序列:是按时间顺序的一组数字

序列构成:

图片

这张图片展示了时间序列分析中的组合模型,包括加法模型和乘法模型。加法模型假设时间序列由趋势项(TC)、季节项(S)、循环项(C)和随机扰动项(I)相加而成,公式为 Y=T+S+C+I。乘法模型则假设时间序列由这四项相乘而成,公式为 Y=T×S×C×I。图中分别展示了原始序列、季节项、趋势循环项和随机扰动项的图形。

图片

建模步骤:

下图主要介绍了时间序列分析的步骤和方法,包括观测、统计、抽样等方法获取数据,进行相关分析,求自相关函数,以及根据动态数据作图,发现趋势和周期。还介绍了如何选择合适的随机模型进行曲线拟合,如ARMA模型、滑动平均模型等。图中还提供了一个具体的例子,展示了采用季节分析分建模对成本费用收入比率指标进行预测的结果,包括实际值、预测值、预测的上下限值以及相关的统计误差指标。

图片

时间序列算法介绍

时间序列预测方法分为平滑法预测和ARIMA模型预测,平滑法是通过时间序列的发展趋势来进行预测,而ARIMA模型是通过时间序列的自相关性来预测。两类方法的适用范围和特点为:

图片

时间序列算法介绍-ARIMA

ARIMA又称自回归求积移动平均模型,是存在序列相关的非平稳时间序列建模方法。

建模前提:

1、序列平稳性

平稳序列是指均值和方差在时间过程中保持常数。非平稳时间序列要么均值随时间而变化,要么方差随时间而变化,或者二者同时在发生变化。

• 对于一个平稳的时间序列可以通过过去时间点上的信息,建立模型拟合过去信息,进而预测未来的信息。而非平稳时间序列在各个时间点上的随机规律是不同的,难以通过序列已知的信息去掌握时间序列整体上的随机性。因此,对于一个非平稳序列去建模,预测是困难的。

• 时间序列建模依赖于序列自身所表现的自相关,有时候,自相关是由于时间序列非平稳所引起的。

2、序列相关

如果不同的样本点之间不是完全相互独立的,而是存在某种相关性,则认为出现了序列相关性。序列相关分为自相关和偏自相关,序列相关的表现为协方差不为0。

图片

图片

应用案例_Netflix股票价格预测

以下是关于时间序列分析在股票市场预测中的应用案例和Python代码示例:

应用案例:Netflix股票价格预测

使用ARIMA模型对Netflix股票价格进行预测。ARIMA模型是一种广泛用于时间序列预测的统计模型,它结合了自回归(AR)、差分(I)和移动平均(MA)三个关键方面。

Python代码示例
import pandas as pdfrom statsmodels.tsa.arima.model import ARIMAfrom sklearn.metrics import mean_squared_error, mean_absolute_errorimport math
# 加载Netflix股票数据net_df = pd.read_csv("Netflix_stock_history.csv", index_col="Date", parse_dates=True)
# 划分训练集和测试集train_data, test_data = net_df[0:int(len(net_df)*0.9)], net_df[int(len(net_df)*0.9):]
# 训练ARIMA模型train_arima = train_data['Open']test_arima = test_data['Open']history = [x for x in train_arima]predictions = list()model = ARIMA(history, order=(1,1,0))model_fit = model.fit()yhat = model_fit.forecast()[0]predictions.append(yhat)history.append(y[0])
# 滚动预测for i in range(1, len(y)):    model = ARIMA(history, order=(1,1,0))    model_fit = model.fit()    yhat = model_fit.forecast()[0]    predictions.append(yhat)    obs = y[i]    history.append(obs)
# 模型评估mse = mean_squared_error(y, predictions)print('MSE: '+str(mse))mae = mean_absolute_error(y, predictions)print('MAE: '+str(mae))rmse = math.sqrt(mean_squared_error(y, predictions))print('RMSE: '+str(rmse))
# 可视化结果import matplotlib.pyplot as pltplt.figure(figsize=(16,8))plt.plot(net_df.index[-600:], net_df['Open'].tail(600), color='green', label = 'Train Stock Price')plt.plot(test_data.index, y, color = 'red', label = 'Real Stock Price')plt.plot(test_data.index, predictions, color = 'blue', label = 'Predicted Stock Price')plt.title('Netflix Stock Price Prediction')plt.xlabel('Time')plt.ylabel('Netflix Stock Price')plt.legend()plt.grid(True)plt.show()

应用案例:Bank of America Corp (BAC)股票价格预测

使用AR模型对Bank of America Corp (BAC)股票价格进行预测。AR模型是一种基于时间序列历史数据的自回归模型,适用于预测未来的股票价格。

Python代码示例
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport yfinance as yffrom statsmodels.tsa.arima.model import ARIMA
# 获取Bank of America Corp (BAC)股票数据data = yf.download('BAC', start='2010-01-01', end='2020-12-31')
# 选择收盘价数据data['Close'] = data['Close'].astype(float)
# 训练AR(1)模型model_fit = ARIMA(data['Close'], order=(1, 1, 0)).fit()
# 预测未来价格forecast = model_fit.forecast(steps=5)
# 可视化结果plt.figure(figsize=(10, 5))plt.plot(data['Close'], label='Actual')plt.plot(forecast, label='Forecast', color='red')plt.title('BAC Stock Price Forecast')plt.xlabel('Date')plt.ylabel('Price')plt.legend()plt.show()

结构优化-遗传算法

遗传算法是计算机科学人工智能领域中用于解决最优化的一种搜索启发式算法,是进化算法的一种。这种启发式通常用来生成有用的解决方案来优化和搜索问题。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。遗传算法广泛应用在生物信息学、系统发生学、计算科学、工程学、经济学、化学、制造、数学、物理、药物测量学和其他领域之中。

遗传算法的特点可以整理如下:

遗传算法从问题解的串集开始搜索,而不是从单个解开始。这是遗传算法与传统优化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的,容易误入局部最优解。遗传算法从串集开始搜索,覆盖面大,利于全局择优。

遗传算法同时处理群体中的多个个体,即对搜索空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。

遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导其搜索方向。

遗传算法具有自组织、自适应和自学习性。遗传算法利用进化过程获得的信息自行组织搜索时,适应度大的个体具有较高的生存概率,并获得更适应环境的基因结构。

图片

结构优化—灰色理论

灰色系统是指“部分信息已知,部分信息未知”的“小样本”,“贫信息”的不确定性系统。它通过对“部分”已知信息的生成、开发去了解、认识现实世界,实现对系统运行行为和演化规律的正确把握和描述。

严格来说,灰色系统是绝对的,而白色与黑色系统是相对的。社会、经济、农业等系统的预测都属于特征性灰色系统的预测。

灰色系统认为:尽管客观系统表象复杂,数据离散,但它们总是有整体功能的,总是有序的。因此,它必然潜藏着某种内在规律。关键在于要用适当方式去挖掘它,然后利用它。

应用:

(1)数列预测:即用观察到的反映预测对象特征的时间序列来构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。

(2)灾变与异常值预测:即通过灰色模型预测异常值出现的时刻,预测异常值什么时候出现在特定时区内。

(3)季节灾变与异常值预测:通过灰色模型预测灾变值发生在一年内某个特定的时区或季节的灾变预测。

(4)拓扑预测:将原始数据作曲线,在曲线上按定值寻找该定值发生的所有时点,并以该定点为框架构成时点序列,然后建立模型预测该定值所发生的时点

(5)系统预测:通过对系统行为特征指标建立一组相关联的灰色模型,预测系统中众多变量间的相互协调关系的变化。

遗传算法在金融风控领域应用案例

遗传算法在金融风控中的实际应用指南中提到,遗传算法是一种模拟自然选择和遗传机制的优化算法,它通过模拟生物进化的过程来搜索最优解。在金融风控中,遗传算法可以用于优化投资组合、评估信用风险、建立风险模型等方面。

例如,一个基于AI的智能投顾平台利用多因子模型和遗传算法为投资者提供个性化的投资建议。该平台的服务流程包括用户画像构建、市场分析、策略生成、交易执行以及绩效跟踪。在策略生成阶段,根据用户画像和市场分析结果,利用多因子模型和遗传算法生成个性化的投资建议和资产配置方案。

下面是一个使用Python实现遗传算法的简化示例,用于演示如何根据用户风险偏好和市场分析生成投资建议:

import numpy as npimport pandas as pdfrom deap import base, creator, tools, algorithms
# 定义适应度函数,评估投资组合的收益与风险def evaluate_portfolio(individual, stock_returns, risk_free_rate):    weights = np.array(individual)    returns = np.sum(stock_returns.mean() * weights) * 252    std_dev = np.sqrt(np.dot(weights.T, np.dot(stock_returns.cov() * 252, weights)))    sharpe_ratio = (returns - risk_free_rate) / std_dev    return sharpe_ratio,
# 定义遗传算法的框架creator.create("FitnessMax", base.Fitness, weights=(1.0,))creator.create("Individual", list, fitness=creator.FitnessMax)toolbox = base.Toolbox()toolbox.register("attr_float", np.random.uniform, 0, 1)toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_float, n=len(stock_returns.columns))toolbox.register("population", tools.initRepeat, list, toolbox.individual)toolbox.register("evaluate", evaluate_portfolio, stock_returns=stock_returns, risk_free_rate=0.02)toolbox.register("mate", tools.cxTwoPoint)toolbox.register("mutate", tools.mutGaussian, mu=0, sigma=0.2, indpb=0.1)toolbox.register("select", tools.selTournament, tournsize=3)
# 运行遗传算法寻找最佳投资组合def run_genetic_algorithm(stock_returns):    pop = toolbox.population(n=50)    hof = tools.HallOfFame(1)    stats = tools.Statistics(lambda ind: ind.fitness.values)    stats.register("avg", np.mean)    stats.register("std", np.std)    stats.register("min", np.min)    stats.register("max", np.max)    pop, logbook = algorithms.eaSimple(pop, toolbox, cxpb=0.5, mutpb=0.2, ngen=100,                                       stats=stats, halloffame=hof, verbose=True)    return hof[0]best_weights = run_genetic_algorithm(stock_returns)print(f"Best portfolio weights: {best_weights}")

以上代码示例中,我们使用遗传算法来寻找能够最大化夏普比率的投资组合权重。然而,这只是一个非常简化的示例,在实际应用中,你可能需要更复杂的数据预处理、更高级的多因子模型、用户画像的构建和整合、实时的市场监控和策略更新机制、与交易系统的集成以及合规性和风险管理措施。

传统商业市场上主要有六种数据分析工具:Eviews、SPSS、SAS、Stata、Matlab和R。它们在主导优势、应用领域、处理功能、界面设计、数据安全、处理效率和结合形式上各有特点。例如,Eviews擅长时间序列分析,SPSS适合多元横截面数据,SAS用于数据管理及挖掘,Stata处理面板数据,Matlab用于数值分析和复杂模型,R则擅长算法及绘图。各工具在数据安全和处理效率上也有所不同,结合形式上,SPSS和Eviews主要与Excel结合,而Matlab和R则支持多种格式。

图片

埃森哲的报告时间比较早,除了上述六种数据分析工具,目前最流行的是python编程语言应用。Python 是一种广泛使用的高级编程语言,因其简洁、易读的语法和强大的库支持,非常适合用于数据分析。

1.数据挖掘工具-SAS

SAS  系统全称为Statistics Analysis  System,最早由北卡罗来纳大学的两位生物统计学研究生编制,并于1976年成立了SAS软件研究所,正式推出了SAS软件。SAS是用于决策支持的大型集成信息系统,SAS   是由大型机系统发展而来,其核心操作方式就是程序驱动,经过多年的发展,现在已成为一套完整的计算机语言,其用户界面也充分体现了这一特点:它采用MDI   (多文档界面),用户在PGM视窗中输入程序,分析结果以文本的形式在OUTPUT视窗中输出。使用程序方式,用户可以完成所有需要做的工作,包括统计分析、预测、建模和模拟抽样等。但是,这使得初学者在使用SAS时必须要学习SAS语言,入门比较困难。目前SAS已在全球100多个国家和地区拥有29000多个客户群,直接用户超过300万人。在我国,国家信息中心,国家统计局,卫生部,中国科学院等都是SAS系统的大用户。SAS以被广泛应用于政府行政管理,科研,教育,生产和金融等不同领域,并且发挥着愈来愈重要的作用。

图片

SAS BI的收费模式大致分为两种:许可证模式和订阅模式。许可证模式是指企业购买SAS BI软件的许可证,一次性付费。这种模式适用于那些需要长期使用SAS BI的企业。许可证价格根据企业规模、功能需求、使用场景等因素而异,一般需要向SAS销售代表咨询。订阅模式是指企业按照一定的周期(通常为年)订阅SAS BI服务,服务内容包括软件使用和技术支持。订阅模式的价格通常包括基础订阅费和每个用户的订阅费。基础订阅费是针对企业整体的,而每个用户的订阅费则根据用户数量、功能需求、使用场景等因素而异。订阅模式相对于许可证模式更加灵活,适合需求波动较大的企业。总体来说,SAS BI的价格较高,适用于大型企业和数据密集型行业。目前采购SAS较多的是大型银行机构。随着R和python开源编程工具兴起,订阅SAS的公司越来越少。

2.数据挖掘工具- SPSS Clementine(现已更名为:PASW Modeler )

Clementine是ISL(Integral Solutions Limited)公司开发的数据挖掘工具平台。1999年SPSS公司收购了ISL公司,对Clementine产品

进行重新整合和开发,现在Clementine已经成为SPSS公司的又一亮点。

Clementine的图形化操作界面,使得分析人员能够可视化数据挖掘过程的每一步。通过与数据流的交互,分析人员和业务人员可以合作,将业务知识融入到数据挖掘过程中。这样数据挖掘人员就可以把注意力集中于知识发现,而不是陷入技术任务,例如写代码,所以他们可以尝试更多的分析思路,更深入地探索数据,揭示更多的隐含关系。

使用全面整合到Clementine的Text  Mining,您可以从任何类型的文本—  例如内部报告、呼叫中心记录、客户的邮件、媒体或者杂志文章、博客等中抽取内容和评论。使用WebMining for  Clementine®,您可以发现访问者网上行为模式。直接获取Dimension产品的调查数据,您可以把人口统计信息、态度和行为信息用于模型—更深入地理解您的客户。Clementine还提供大量的应用模板:

• CRM CAT--针对客户的获取和增长,提高反馈率并减少客户流失;

• Web CAT--点击顺序分析和访问行为分析;

• cTelco CAT--客户保持和增加交叉销售;

• Crime CAT--犯罪分析及其特征描述,确定事故高发区,联合研究相关犯罪行为;

• Fraud CAT--发现金融交易和索赔中的欺诈和异常行为;

• Microarray CAT--研究和疾病相关的基因序列并找到治愈手段

3.数据挖掘工具- R

R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R本来是由来自新西兰奥克兰大学的RossIhaka和Robert  Gentleman。R主要是以命令行操作,同时有人开发了几种图形用户界面。开发(也因此称为R),现在由“R开发核心团队”负责开发。

•R内置多种统计学及数字分析功能。R的功能也可以通过安装包(Packages,用户撰写的功能)增强。因为S的血缘,R比其他统计学或数学专用的编程语言有更强的面向对象(面向对象程序设计)功能。

• R的另一强项是绘图功能,制图具有印刷的素质,也可加入数学符号。

•虽然R主要用于统计分析或者开发统计相关的软件,但也有人用作矩阵计算。其分析速度可媲美专用于矩阵计算的自由软件GNU Octave和商业软件MATLAB。

图片

4.数据挖掘工具- Stata

Stata是Statacorp于1985年开发出来的统计程序,在全球范围内被广泛应用于企业和学术机构中。许多使用者工作在研究领域,特别是在经济学、社会学、政治学及流行病学领域。

作为一个小型的统计软件,其统计分析能力远远超过了SPSS,在许多方面也超过了SAS!由于Stata在分析时是将数据全部读入内存,在计算全部完成后   才和磁盘交换数据,因此计算速度极快(一般来说,SAS的运算速度要比SPSS至少快一个数量级,而Stata的某些模块和执行同样功能的SAS模块比,   其速度又比SAS快将近一个数量级!)Stata也是采用命令行方式来操作,但使用上远比SAS简单。其生存数据分析、纵向数据(重复测量数据)分析等模  块的功能甚至超过了SAS。用Stata绘制的统计图形相当精美,很有特色。

在长远趋势上,Stata有超越SAS的可能(据消息灵通人士透露:在SAS的老家--北卡,真正搞生物统计的人青睐的反而是Stata!)Stata最大的缺点应该是数据接口太简单,实际上只能读入文本格式的数据文件;其数据管理界面也过于单调。

图片

5.数据挖掘工具- MATLAB

MATLAB(矩阵实验室)是MATrixLABoratory的缩写,是一款由美国The   MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

软件特点:

1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

2) 具有完备的图形处理功能,实现计算结果和编程的可视化;

3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具

图片

6.EViews

是美国GMS公司1981年发行第1版的Micro  TSP的Windows版本,通常称为计量经济学软件包。EViews是Econometrics  Views的缩写,它的本意是对社会经济关系与经济活动的数量规律,采用计量经济学方法与技术进行“观察”。计量经济学研究的核心是设计模型、收集资料、  估计模型、检验模型、运用模型进行预测、求解模型和运用模型。正是由于EViews等计量经济学软件包  的出现,使计量经济学取得了长足的进步,发展成为实用与严谨的经济学科。使用  EViews软件包可以对时间序列和非时间序列的数据进行分析,建立序列(变量)间的统计关系式,并用该关系式进行预测、模拟等等。

7.Minitab

同样是国际上流行的一个统计软件包,其特点是简单易懂,在国外大学统计学系开设的统计软件课程中,Minitab与SAS、BMDP并列,根本没有  SPSS的份,甚至有的学术研究机构专门教授Minitab之概念及其使用。MiniTab for  Windows统计软件比SAS、SPSS等小得多,但其功能并不弱,特别是它的试验设计及质量控制等功能。MiniTab提供了对存储在二维工作表中的数据进行分析的多种功能,包括:基本统计分析、回归分析、方差分析、多元分析、非参数分析、时间序列分析、试验设计、质量  控制、模拟、绘制高质量三维图形等,从功能来看,Minitab除各种统计模型外,还具有许多统计软件不具备的功能--矩阵运算。

8.WEKA

WEKA的全名是怀卡托智能分析环境(Waikato  Environment for Knowledge  Analysis),同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。

9.Python :

由于上述多种数据分析软件要收费,而且年费很高,越来越多企业选择R或python用于商业数据分析。

主导优势

  • 灵活性:Python 是一种通用编程语言,可以用于各种数据分析任务。

  • 库支持:拥有强大的数据分析库,如 Pandas、NumPy、SciPy 等。

应用领域

  • 数据科学:数据清洗、探索性数据分析、数据可视化。

  • 机器学习:使用 scikit-learn、TensorFlow、PyTorch 等库进行模型构建和训练。

  • 自动化:自动化数据处理和报告生成。

  • 网络爬虫:使用 Scrapy、BeautifulSoup 等库从网页抓取数据。

处理功能

  • 统计分析:进行描述性统计、推断性统计等。

  • 数据挖掘:使用机器学习算法进行模式识别和预测。

  • 数据可视化:使用 Matplotlib、Seaborn、Plotly 等库创建图表和交互式可视化。

界面设计

  • 灵活性:可以通过 Jupyter Notebook 等工具创建交互式文档,也可以开发桌面应用或Web应用。

  • 代码可读性:Python 代码通常易于阅读和理解。

数据安全

  • 软件稳定:Python 社区活跃,软件更新频繁,安全性较高。

  • 数据保护:可以通过加密库如 cryptography 保护数据。

处理效率

  • 高效:对于中等规模的数据集,Python 的处理效率很高。

  • 扩展性:对于大规模数据,可以通过使用 Dask、Vaex 等库进行分布式计算来提高效率。

结合形式

  • 多种格式:Python 可以读取和写入多种数据格式,包括 CSV、Excel、JSON、SQL 数据库等。

  • 集成:可以与其他编程语言和系统(如 R、C/C++)集成。

Python 的这些特点使其成为数据分析领域中一个非常受欢迎的工具,尤其适合需要快速原型开发和灵活数据处理的场景。

数据挖掘的工具及软件流程程度如下

图片

从数据到信息的进化

下图概述了数据库技术的发展历程,从60年代的计算机、磁带、磁盘和数据收集,到80年代的关系型数据库和结构化查询语言(SQL),再到90年代的数据仓库、OLAP和多维数据库。2000年后,随着互联网的发展,数据量激增,出现了海量数据库和高级算法,2008年引入了Hadoop等大数据技术,以提供预测性信息和数据挖掘。整个过程展示了数据库技术从提供历史性、静态数据信息,到动态数据信息,再到预测性信息的演变。

图片

版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值