① 算法工程师的项目落地能力指什么
1、深刻理解业务,能根据业务需求调整实现方案的能力
就拿茶具的例子说,客户更关注不良品不能漏,宁可杀错,不可放过,所以这时候我们就得把业务朝着不良品检出率方向去优化;
2、结合业务需求的熟练工程实现能力
我们拿到一个项目需求以后,大脑中得立马有一个框架,这个项目输入输出是什么?得用到哪几个模型?适合什么样的业务框架?开发需要多久?调优需要多久?能达到什么样的指标?然后按照自己的规划进行开发调优。
3、对数据敏感,有较强的数据处理与数据维护管理能力
算法工程师一定要对数据敏感,看一眼数据就能知道这些数据能支持什么样的任务?有没有坑?数据该怎么标注与维护高效省成本?
4、对新技术的求知欲与探索学习能力
目前人工智能技术刚兴起,技术和算法迭代很快,所以对算法工程师追新技术,新解决方案的能力也有要求,不能落后太久。比如现在有个推理性能的瓶颈,攻关了很久没有突破,但是可能就已经有开源的方案了,而这就需要我们经常查资料,看论文了。
5、各部门的沟通合作能力
这是个通用能力,算法工程师当然也需要,就像这个茶具项目中的一样,算法工程师接到不合理的需求一定要及时沟通,并用自己的专业知识,给出更合理的解决方案,各部门一起为项目落地努力。
② 是否可以自己动手实现OCV字符验证呢
可以通过OpenCV实现字符验证。OpenCV是一个开源计算机视觉库,其提供了丰富的图像处理和计算机视觉算法,包括字符识别。下面是一些步骤:
准备样本数据集:需要先收集一些字符图片作为样本,这些图片应该有多种不同的字体、大小、颜芹没袭色等,以便于训练出具有一定泛化能力的模型。
2. 图像预处理:对于每张图片,需要进行预处理来使其适合用于训练和测试。比如去除噪声、二值化、字符分割等。
3. 特征提取:从每张图片中提取有用的特征信息,例如轮廓、边缘等。
4. 训练模型:使用提取出的特征信息作为输入,将其与对应的真实标签(即正确的字符)嫌兄进行训练。
5. 测试模型:将训练好的模型用于未知的字符图片上,得到预测结果并与真实标签进行比较。
6. 调整模型:根据测试结果调整模型参数,提高模型准确率。察誉
以上是一个基本的流程,当然具体实现过程会涉及到更多的技术细节和算法。需要注意的是,在实现OCV字符验证时,还需要考虑对抗攻击、模型解释性等问题,以保证模型的可靠性和实用性。
总之,OpenCV是一种非常强大的工具,通过合理利用其提供的各种功能,可以实现许多有趣的计算机视觉应用。
③ 发现公司里的大数据开发挣得很多,想转行,
转行这个词汇,一直是职场上此起彼伏的一个热门话题,相信很多朋友都想过或已经经历过转行。工作可谓是我们生存乃至生活的主要收入来源,谁都希望拥有一份高薪又稳定的工作,以此来改善自己的生活和实现自己的大大小小的梦想!但又担心转行后的工作待遇达不到自己的预期,顾虑重重……
不少想进入大数据分析行业的零基础学员经常会有这样一些疑问:大数据分析零基础应该怎么学习?自己适合学习大数据分析吗?人生,就是在不断地做选择,然后在这个选择过程中成长,让自己从一棵小树苗变成参天大树。就是我们每个对大数据充满幻想终于下定决心行动的学员的选择,我们给了自己4个月的时间,想要在大数据分析这个领域汲取养分,让自己壮大成长。
【明确方向】
通过国家的战略规划,看到BAT的大牛们都在大数据行业布局,新闻媒体追捧这大数据分析行业的项目和热点,我想如果我还没有能力独立判断的时候,跟着国家政策和互联网大佬们的步调走,这应该是错不了的。
【付诸行动】
明确了方向之后,我就整装待发,刚开始是在网络上购买了很多的视频教程,也买了很多书籍,但是最大的问题就在于,我不知道怎么入手,没关系,有信心有耐心肯定能战胜困难,我坚持了一个月,学习的节奏越来越乱,陆陆续续出现了很多的问题,没人指导,请教了几个业内的朋友,但对方工作繁忙,问了几次之后就不好意思了,自学陷入了死循环。
意识到我学习效率的低下,以及无人指导的问题想想未来的康庄大道,咬咬牙告诉自己,一定好好好学,不然就浪费太多时间最后还会是一无所获。最后找到组织(AAA教育)一起学习进步!
大数据分析零基础学习路线,有信心能坚持学习的话,那就当下开始行动吧!
一、大数据技术基础
1、linux操作基础
linux系统简介与安装
linux常用命令–文件操作
linux常用命令–用户管理与权限
linux常用命令–系统管理
linux常用命令–免密登陆配置与网络管理
linux上常用软件安装
linux本地yum源配置及yum软件安装
linux防火墙配置
linux高级文本处理命令cut、sed、awk
linux定时任务crontab
2、shell编程
shell编程–基本语法
shell编程–流程控制
shell编程–函数
shell编程–综合案例–自动化部署脚本
3、内存数据库redis
redis和nosql简介
redis客户端连接
redis的string类型数据结构操作及应用-对象缓存
redis的list类型数据结构操作及应用案例-任务调度队列
redis的hash及set数据结构操作及应用案例-购物车
redis的sortedset数据结构操作及应用案例-排行榜
4、布式协调服务zookeeper
zookeeper简介及应用场景
zookeeper集群安装部署
zookeeper的数据节点与命令行操作
zookeeper的java客户端基本操作及事件监听
zookeeper核心机制及数据节点
zookeeper应用案例–分布式共享资源锁
zookeeper应用案例–服务器上下线动态感知
zookeeper的数据一致性原理及leader选举机制
5、java高级特性增强
Java多线程基本知识
Java同步关键词详解
java并发包线程池及在开源软件中的应用
Java并发包消息队里及在开源软件中的应用
Java JMS技术
Java动态代理反射
6、轻量级RPC框架开发
RPC原理学习
Nio原理学习
Netty常用API学习
轻量级RPC框架需求分析及原理分析
轻量级RPC框架开发
二、离线计算系统
1、hadoop快速入门
hadoop背景介绍
分布式系统概述
离线数据分析流程介绍
集群搭建
集群使用初步
2、HDFS增强
HDFS的概念和特性
HDFS的shell(命令行客户端)操作
HDFS的工作机制
NAMENODE的工作机制
java的api操作
案例1:开发shell采集脚本
3、MAPREDUCE详解
自定义hadoop的RPC框架
Maprece编程规范及示例编写
Maprece程序运行模式及debug方法
maprece程序运行模式的内在机理
maprece运算框架的主体工作流程
自定义对象的序列化方法
MapRece编程案例
4、MAPREDUCE增强
Maprece排序
自定义partitioner
Maprece的combiner
maprece工作机制详解
5、MAPREDUCE实战
maptask并行度机制-文件切片
maptask并行度设置
倒排索引
共同好友
6、federation介绍和hive使用
Hadoop的HA机制
HA集群的安装部署
集群运维测试之Datanode动态上下线
集群运维测试之Namenode状态切换管理
集群运维测试之数据块的balance
HA下HDFS-API变化
hive简介
hive架构
hive安装部署
hvie初使用
7、hive增强和flume介绍
HQL-DDL基本语法
HQL-DML基本语法
HIVE的join
HIVE 参数配置
HIVE 自定义函数和Transform
HIVE 执行HQL的实例分析
HIVE最佳实践注意点
HIVE优化策略
HIVE实战案例
Flume介绍
Flume的安装部署
案例:采集目录到HDFS
案例:采集文件到HDFS
三、流式计算
1、Storm从入门到精通
Storm是什么
Storm架构分析
Storm架构分析
Storm编程模型、Tuple源码、并发度分析
Storm WordCount案例及常用Api分析
Storm集群部署实战
Storm+Kafka+Redis业务指标计算
Storm源码下载编译
Strom集群启动及源码分析
Storm任务提交及源码分析
Storm数据发送流程分析
Storm通信机制分析
Storm消息容错机制及源码分析
Storm多stream项目分析
编写自己的流式任务执行框架
2、Storm上下游及架构集成
消息队列是什么
Kakfa核心组件
Kafka集群部署实战及常用命令
Kafka配置文件梳理
Kakfa JavaApi学习
Kafka文件存储机制分析
Redis基础及单机环境部署
Redis数据结构及典型案例
Flume快速入门
Flume+Kafka+Storm+Redis整合
四、内存计算体系Spark
1、scala编程
scala编程介绍
scala相关软件安装
scala基础语法
scala方法和函数
scala函数式编程特点
scala数组和集合
scala编程练习(单机版WordCount)
scala面向对象
scala模式匹配
actor编程介绍
option和偏函数
实战:actor的并发WordCount
柯里化
隐式转换
2、AKKA与RPC
Akka并发编程框架
实战:RPC编程实战
3、Spark快速入门
spark介绍
spark环境搭建
RDD简介
RDD的转换和动作
实战:RDD综合练习
RDD高级算子
自定义Partitioner
实战:网站访问次数
广播变量
实战:根据IP计算归属地
自定义排序
利用JDBC RDD实现数据导入导出
WorldCount执行流程详解
4、RDD详解
RDD依赖关系
RDD缓存机制
RDD的Checkpoint检查点机制
Spark任务执行过程分析
RDD的Stage划分
5、Spark-Sql应用
Spark-SQL
Spark结合Hive
DataFrame
实战:Spark-SQL和DataFrame案例
6、SparkStreaming应用实战
Spark-Streaming简介
Spark-Streaming编程
实战:StageFulWordCount
Flume结合Spark Streaming
Kafka结合Spark Streaming
窗口函数
ELK技术栈介绍
ElasticSearch安装和使用
Storm架构分析
Storm编程模型、Tuple源码、并发度分析
Storm WordCount案例及常用Api分析
7、Spark核心源码解析
Spark源码编译
Spark远程debug
Spark任务提交行流程源码分析
Spark通信流程源码分析
SparkContext创建过程源码分析
DriverActor和ClientActor通信过程源码分析
Worker启动Executor过程源码分析
Executor向DriverActor注册过程源码分析
Executor向Driver注册过程源码分析
DAGScheler和TaskScheler源码分析
Shuffle过程源码分析
Task执行过程源码分析
五、机器学习算法
1、python及numpy库
机器学习简介
机器学习与python
python语言–快速入门
python语言–数据类型详解
python语言–流程控制语句
python语言–函数使用
python语言–模块和包
phthon语言–面向对象
python机器学习算法库–numpy
机器学习必备数学知识–概率论
2、常用算法实现
knn分类算法–算法原理
knn分类算法–代码实现
knn分类算法–手写字识别案例
lineage回归分类算法–算法原理
lineage回归分类算法–算法实现及demo
朴素贝叶斯分类算法–算法原理
朴素贝叶斯分类算法–算法实现
朴素贝叶斯分类算法–垃圾邮件识别应用案例
kmeans聚类算法–算法原理
kmeans聚类算法–算法实现
kmeans聚类算法–地理位置聚类应用
决策树分类算法–算法原理
决策树分类算法–算法实现
时下的大数据分析时代与人工智能热潮,相信有许多对大数据分析师非常感兴趣、跃跃欲试想着转行的朋友,但面向整个社会,最不缺的其实就是人才,对于是否转行大数据分析行列,对于能否勇敢一次跳出自己的舒适圈,不少人还是踌躇满志啊!毕竟好多决定,一旦做出了就很难再回头了。不过如果你已经转行到大数据分析领域,就不要后悔,做到如何脱颖而出才是关键。因此本文给出一些建议,针对想要转行大数据分析行列且是零基础转行的小伙伴们,希望对你们有所裨益,也希望你们将来学有所成,不后悔,更不灰心!
相关推荐:
《转行大数据分析师后悔了》、《ui设计培训四个月骗局大爆料》、《零基础学大数据分析现实吗》、《大数据分析十八般工具》
④ 数据分析能力模型
“过去” 以往在增量时代,每天都有新的领域、新的市场被开发。尤其是在互联网、电商等领域的红利期,似乎只要做好单点的突破就能获得市场。这个蛮荒时代,业务运营主要依靠是经验和直觉驱动。比如跨境电商领域初期,凭借世界工厂平台的优势,国内厂家似乎只需基于经验选品即可大卖。
“现在” 但是随着规则的成熟,更多玩家的进入,市场从蓝海变为红海,进入到存量期,仅靠经验驱动的增长模式不再有效。还是拿跨境电商举例,由于卖家的剧增,海外市场的饱和,跨境电商就进入存量运营时代,已经不存在绝对的蓝海市场,每个细分领域都有许多竞争对手。此时, 要求商家从粗放运营转为精细化运营,也就是用数据分析报告决定市场是否值得投入,用数据选品,用数据做经营分析,用数据库存管理。
当然,不是说纯定量的数据分析决定了一切,经验就不重要了。而是说在决策的过程中,数据结论占据的比例与以往相比更大,同时业务经验也是必不可少的部分。
“未来” 互联网逐渐成为“传统行业”的未来,人工智能、元宇宙等 由数据驱动的行业越来越依赖数据分析。 还有众多制造业亟待数字化转型,以期在全球供应链中提高制造环节的附加值。 也就是说,在未来,数据驱动业务将更频繁。
数据分析的本质是“沙盘演练”:战场上,指挥员们在指挥部的地形模型前“推演”敌我双方的趋势确定作战方案; 商场上,管理层通过数据间的运算关系“推断”运营的发展进而做决策。
基于这样的定义可以知道数据分析的目的是为了做对当下运营发展有利的决策,那它是如何做到的呢?为了解答这个问题,可以从前面的定义中 引申出几个关键概念:数据,运算关系,推断,决策。
最通用的理解,数据是被存储起来的信息。从应用的角度,数据是把事物做量化处理的工具,万物皆可数据化:数值数字是数据,文本、图像、视频等同样都是数据。
按 字段类型 划分,可以把数据分为:
按 结构 划分,可以把数据分为:
根据 数据连续的属性 不同,还可以分为:
孤立的数据往往没有参考价值,比如量化一个人,身高是180cm,并不能意味什么。比如网易云音乐的用户,每个用户的年龄是数据,对使用产品的人群年龄进行分段比如18-24岁,该年龄段人数占比的指标对网易云音乐来说才有价值。 从数据到指标的计算过程,就是数据间的“运算关系”,也叫“指标”。
指标的作用在于“度量”业务的发展:
这些指标(点)通过一定的结构可以编织而成指标体系(线、面)衡量局部、甚至是全局的业务 。
“沙盘演练”中,指挥员通过军事沙盘上的地形,及敌我双方的工事、兵力部署、火器配置等情况,分析敌情,制定作战方案。 数据把现实中的运营抽象到数字世界中,通过指标答明体系,应用各种分析方法(业务分析、产品分析、用户分析、经营分析......),罩举并帮助经营做决策 。
赵括熟读兵书,却不能活用,沦为纸上谈兵的笑话。所以获得分析能力后,不能照本宣科,要结合实际业务场景做决策。
数据分析落地涉及流程创新、变革管理,用新的思维解决业务问题。 但这个过程并不是强迫变革,需要借助对业务的理解及软性的能力来使分析平滑落地。
站在“前人”的肩膀上,可以走得更远。饼干哥哥根据多年数据分析工作经验沉淀出了数据分析师能力模型,跟着它“按图索骥”,补充自身缺失的能力,最终形成独立、落地的数据分析能力。
完整的数据分析师能力体系应该包括 底层认知、业务场景及能力三板斧。
在建立数据分析思维之前,应该先在底层认知达成共识。
什么是认知? 是对事物底层逻辑的了解,是对是世界万物的判断,认知的本质就是做决定。 也就是说,为了帮助数据分析中每个决策的有效性(选择什么指标、分析方法?接下来做什么?等等),需要先建立底层物迹认知。
这一步,我们需要去明确数据分析的定义:数据分析是什么?目的/产出?分析流程?
同学们在求职过程中会发现,同样是数据分析师岗位,但是面试的内容千差万别,有考察机器学习、统计学等专业能力的,也有考察市场/行业分析的,还有考察产品分析的。
此时就有同学问,这些真的是数据分析该做的吗?
我们从字面上拆解,数据分析 = 数据 分析,进一步拆:
这就是认知上的偏差:当一些同学认为数据分析就是用Excel做表、python写脚本、机器学习建模时(其实这些只是组成数据分析能力的一部分),求职市场对数据分析师的要求更为完整。
回过头来看,数据分析到底是什么?笔者认为, 数据分析是一个过程,是利用数据能力做分析的过程:从发现问题、分析原因,到落地建议;这还是一个“解构”的过程:从整体拆到局部,从一般到特殊,从面到线到点,不断下钻剖析,找到具体可落地的点。
了解完什么是数据分析后,深入思考一个问题:这个过程的最终产出的交付物是什么?
要回答这个问题,我们需要 回到数据分析的本质:解决业务问题。 也就是回到业务层面的需求是什么,才能决定最后落地交付物:
最常见的数据分析场景,就是业务发现销售额下降、用户流失、产品跳失率高,也就是业务层面出现了一个问题待解决,此时需要数据分析师介入帮助从数据层面挖掘原因、给出解决建议。
分析过程可能是做一些 探索 性数据分析、统计分析、机器学习建模,甚至是做AB测试实验,最终交付分析报告,或者模型部署上线。
有时业务可能并不存在确切的“问题”,更多旨在通过加深对现有场景的理解,来提高现有业务模型、策略的效果;比如,现在业务使用的是客单价平均值将客户分为高、低两个人群进行营销,此时数据分析师通过对消费者的洞察分析,给予更精准的人群划分方案:利用客单价分位数,将客户分为三个人群,这样业务利用更新后的策略进行营销设计,提高转化效果。
分析过程可能是做相关分析、回归分析,甚至是无监督的聚类,来对现状进行解释。
按照需求的时效性,可以把业务需求分为临时需求和常规需求,而前面两者属于业务的临时需求,或者说是专项分析需求。 对于常规需求,主要旨在提高业务流程的效率 ,比如对于电商运营中的商品库存管理业务,运营需要及时查询库存情况,并结合销售趋势对低库存量的商品进行补单;此时,数据分析师可以通过交付“低库存预警报表”来帮助优化该流程效率。
支持诊断的内容主要集中在自动化的报表,甚至是商业智能(BI)体系的搭建。
如果说前面是基于已知模式的分析,那么业务中还存在一种需求,就是对未知的 探索 。最为典型的场景则是对市场、对消费者的洞察后,给出品牌及业务增长的策略。
分析过程更多是基于行业、基于市场,使用如PEST、SWOT、波特五力等商业分析模型。
至此,我们知道了数据分析是什么,以及最终的产出交付物,那这个过程如何实现的呢?从落地的角度来看,数据分析是一个从 发散到收敛 的过程: 业务理解-数据 探索 -分析模型-落地交付-产品生命周期
数据分析是从业务到数据再回到业务的过程,所以理解业务是数据分析的起点。
“无场景不分析”、“脱离业务场景的分析都是耍流氓”等资深数据分析师的建议无不说明业务场景的重要性。数据分析能力模型中的业务场景模型:用户-产品-场景,就是为了帮助读者理解业务场景而设计的,在这里不赘述。
不知道读者有没这样的体验?就是领导交代任务给你,或者是朋友有求于你时,执行力强的人很快就完成了任务请求,但是最后却被告知这结果并不是对方想要的?这种情况很常发生在初入数据分析岗位的新同学身上,原因归根结底就是没有做好问题定义!
在理解了需求所处的业务场景后,可以 借助逻辑树工具来对问题进行拆解,拆解的过程尽量要遵循MECE、“相互独立,完全穷尽”的金字塔原理 。
如果说前面定义问题是明确做什么,那在这一步就是要明确做到什么程度?
比如面对销售额下降的问题,做数据分析,最终是产出一份数据分析报告就好了,还是说需要介入到测试实验,给出增长策略?如果是后者,那对销售额的提升幅度要提升多少才有价值?是不痛不痒的1%还是要达到显着的10%?
如果不在价值层面做思考,并付诸价值落地的行动,最后很容易产生“价值在哪”的灵魂拷问,面临被优化的风险 。
在业务理解阶段,我们是站在业务层面与需求方沟通,但是数据分析的核心部分都是在数据层面进行的。所以在正式开始分析之前,我们需要 把业务需求转成数据需求,这个过程就是数据 探索 。
拿到业务需求时的定义问题阶段,需要数据的辅助:用数据透视业务,判断现状与描述是否一致。比如,业务说销售额下降了需要分析,但是这个下降是和谁比?环比下降但是同比提升,同比下降,但是和竞品相比是提升的。
这个步骤比较多的是使用 探索 性数据分析(Exploratory data analysis),或者说通过常见的统计指标来对数据现状进行剖析。
如果说第一步是在用数据验证需求的有效性,那这一步则是真正把业务问题转为数据需求。
此外,还需要判断数据质量及能做的特征工程,比如某些字段缺失率太高,这会影响特征的构建。
了解业务、明确数据需求后,就可以挑选合适的武器(分析方法、模型框架)上阵。
概括来说,有四种分析方法:
指标的好坏、特征是否显着等都可以通过比较分析的方法来实现,比如常见的归因业务场景,本质就是做比较,通过横向、纵向的比较找出原因。
分析方法:比如T检验、方差分析、同比环比、同期群分析等
分析变量之间的相关性是重要的分析场景。比如业务中想知道提高广告预算是否能、甚至是能提升多少的销售业绩?这样的相关性分析或许能找到最优投放ROI的配置方案。
分析方法:卡方、皮尔逊(Pearson)相关系数、斯皮尔曼(Spearman)相关系数、结构分析等
不论是对企业销售的预测、还是对用户行为的预测,都能帮助提升业务效率,比如常见的预测用户流失分析,及时得到高概率流失的人群名单,运营通过提前营销干预,提高用户留存率;常见的销售预测能帮助企业在供应链侧做准备。这类场景主要应用的是机器学习中的有监督分类模型。
分析方法:线性/逻辑回归、决策树、时间序列分析、贝叶斯等;
前面三种都是基于企业已知模式的分析逻辑,还有一种分析方法——无监督的机器学习模型,可以应对未知模式的分析。比如不知道应该把现有人群分成多少个组来进行营销最合适,就可以对人群基于核心特征做无监督的聚类分析,得出有效分组的界限。
分析方法:Kmeans聚类、DBScan聚类等;
交付落地的 最佳实践是让数据和分析从理论渗透到业务中,对流程进行变革提效 。
在交付给业务之前,需要先对给出的解决方案做有效性评估:
分析如果涉及模型的开发使用,需要通过AB测试,或者ROC等指标来证明模型在数据层面上的有效。在数据层面完成验证后,回到业务分析需求,评估交付的方案在业务层面上的有效落地。
数据分析是围绕业务价值而展开的,所以在最后的落地,也得就价值进行讨论, 回答这个方案解决业务问题的途径和程度 :
A. 途径 是对流程的优化(降本提效)还是对数据的优化(数据体系效率、数据质量)?
B. 这方式能多大 程度 上帮助解决?比如对业务的提升是10%还是30%?是对单次项目的应用,还是说可以部署到日常流程中,在更长时间、更广范围内影响业务?
C. 此外,要实现这样的效果,需要投入的资源是什么
分析项目的落地需要多方参与,即使是业务能力丰富的分析师,由于流程边界的存在也不可能每步都参与执行。因此,确保项目能否有效落地的一个重要因素则是能否和业务达成共识。
如何做到?讲数据故事:起因(需求定义)、过程(分析逻辑)、结局(重要结论)是否引人入胜(被认可)。
这个过程需要制作PPT向上汇报、与业务沟通,甚至是做跨部门的演讲。
不论是业务模型还是算法模型,最终都有一个“靴子落地”的过程--落地实施。模型测试有效、与业务达成共识后就到了模型的部署上线阶段:
接在分析生命周期最后的是分析产品的生命周期: 以产品的思维看待数据分析,交付至业务落地的模型应用就是产品。数据分析这个过程并不是静态、单次的,而是一个PDCA不断迭代升级的过程 。(这个分析产品的定义包括分析服务、数据产品。)
从产品思维的角度,分析结论落地到业务流程中,对流程进行再造,提高运营效率。
当数据分析流程成熟后,大量重复执行的流程可以抽取出来,形成自动化的产品,用于服务数据分析(主要对象为数据分析师,也包括运营),这就是数据产品。分析师的结论模型就可以部署到现有的数据产品中,优化分析效率。
之所以要从产品思维的角度来看数据分析过程,是因为要像迭代产品那样去迭代分析模型:不论是优化算法参数,还是调整分析框架,都能得到更优的结论。
在数据分析生命周期第一步的“理解业务”中,我们提到业务场景的重要性。
根据业务经验,笔者沉淀了一套便于理解的模型:业务场景 = 用户 产品 场景
也就是说,要理解业务,就要了解用户,熟悉产品,明确分析所处的上下文场景。它们决定了分析的目标、处理逻辑以及落地建议。
更详细的讨论见:回归到营销理论,谈谈到底什么是业务场景?
对数据分析有了底层认知、了解业务场景后,就需要有看得见摸得着的“招式”来行动:思维方法、工具技术和项目能力这三板斧能组成不同招式应对多变的问题。
经常看到有人说数据分析如做饭,如果是这样的话, 在数据分析这个厨房里,工具技术就是锅铲、铁锅、勺子等器皿,思维方法就是切配、烹饪、打荷等技艺手法,项目能力则是最后的装盘上菜 。
很多人学做饭,可能是因为在抖音或B站看到某个 美食 视频,然后就开始按照视频步骤备料烹饪。这个过程,也就是数据分析中学习思维方法的过程。数据分析也是先有思维方法,才能谈得上是分析。
刚开始学做饭时,通常先学基础的煎、炒、炸、烤、煮、蒸、焖、拌烹饪方式。这些基础的能力在数据分析中就是统计学、相关分析、归因分析等通用分析思维。
正如 美食 有八大菜系,分别满足不同地域人群的口味,数据分析在不同场景下,也有不同的“分析”招式来满足不同的业务需求:
习得了做饭的方法后,就可以选择几件趁手的器皿,来提高烹饪效率。
之所以不是先选择器皿再研究做饭流程,是因为工具始终是工具,完成同一个目标或许有多种工具可以实现,再不济我用原始的土灶也能烧饭。
不过对于部分复杂的烹饪需求,也是需要选择特定的器皿才能完成。
常见的工具技术及应用:
菜做好后一定要及时出锅、装盘、上菜,要不然再美味的菜肴也只是空中阁楼。
项目能力强调的是数据分析项目的落地。理论的分析方法如何在业务场景中落地赋能,体现数据价值?这是很多企业数据团队在讨论的课题。
说项目能力像是烹饪最后的上菜阶段,其实不太严谨,因为 落地能力是一种软性的能力,贯穿分析项目的整个过程 :
作者: 作者饼干哥哥
⑤ 算法工程师应该具备哪些工程能力
作者 | 木东居士
来源 | Data_Engineering
最近看了 Milter 的《算法工程师究竟需要哪些工程能力》这篇文章,有所感想,因此也写一篇关于算法工程师的技术能力的问题,和大家分享一下居士关于算法工程师的技术能力的观点。
对于一名优秀的算法工程师,他(她)要具备的不仅仅是出色的技术能力,也要有很深的业务理解能力和对外沟通能力,总之,要求可以很高!
但是,从职责能力的划分上来讲,算法工程师首先是一名工程师,因此本文主要从工程能力要求上进行一些探讨。
开始之前先放一份思维导图,这将是这篇文章要分享的核心内容:
工程能力概览
算法工程师,从名字上我们就能看出,一名算法工程师首先应该具备算法能力和工程能力,我们可以认为这是基础的技术能力。由于现在开源技术的普及,Sklearn、Tensorflow 和 Spark ML 基本已经成为大部分算法工程师标配的工具库了,因此,熟练的调包能力也是决定了一名算法工程师能否快速实现需求。
其次,在真实的生产环境中,算法的落地会遇到各种各样的业务场景和数据环境,这也要求算法工程师需要具备Pipeline 构建能力,将整个生产环境中的数据流和模型打通。同时,在生产环境中,会出现各种“疑难杂症”等待你去解释,比如说为什么实验效果特别差?为什么模型效果不稳定?这就要要求算法工程师需要具备一定的数据分析能力。
很多时候,你会发现,你用在数据分析和Pipeline构建上的精力可能占据了你8成以上的工作内容。
当你具备了上面的能力时,你已经可以称自己是一名算法工程师了。此时,你可以去对着数据分析小得瑟一下:“你看,我能构建整个模型的Pipeline,你却只能拿到别人提供的数据后调调包吧。“或者,你也可以去找开发得瑟:”你看,我懂了很多算法哦,你就只会写代码吧。“
得瑟完之后,我们还是回归正题,算法工程师只具备这样能力是否已经够了?答案当然是不够的。由于不同公司的团队成熟度不同,工具化和流程的成熟度都不同,这就会对算法工程师有不同的要求,比如说模型发布能力和报表开发能力,当然也会有一些其它能力,虽然可能不是特别重要,但是当这些工作没人帮你做的时候,算法工程师可能依然要承担起这些工作内容,比如说灰度测试的能力、负载均衡的能力等等。
将上面的内容整理后,就是这样一份思维导图了(一张图多看几篇更能加深印象,因此我再贴出来一遍)
工程能力详解
一、基础能力
算法能力
算法能力就不多说了,算法工程师的基本能力要求,不懂算法对于一名算法工程师来讲是不太合理的。这里居士把统计学的内容也放进来了。
编程能力
编程能力主要分为两部分:
Python、C++、Java这类编程语言,这三种也是算法工程师需要了解的主流编程语言,一般掌握其一就够,看不同公司。 Sql就是很通用的能力了,Sql也是一门编程语言,而是是数据处理最常用的语言! 很好用。 大数据场景下,要了解Hive Sql。调包能力
大家虽然会调侃调包侠,但是说实话,能调包调的很溜的人,也是不多的,比如说现在让你自己用tensorflow构建一个复杂网络,不能google,你能写出来吗?能记清楚用法吗?
Sklearn Tensorflow Spark ML二、核心能力
Pipeline 构建能力
Pipeline构建能力,这里想表达的更多的是整个数据流的构建能力,数据从日志->特征->模型训练->反馈,这一个链条能否完成的能力,这里面会有很多难题需要克服。比如说:
实时和离线模型一致性问题? 离线和实时特征一致性问题? 实时特征构建的问题? 数据延迟的问题?很多时候,模型发布之类的工作是可以由其他同学支持完成,但是数据流这种问题更多的是需要算法工程师来解决的。
数据分析能力
这里的数据分析能力不是指商业分析或者业务分析,更多的是指特征分析、算法效果分析和各种异常问题定位分析的能力。
很多时候,两个算法工程师能力水平的强弱从数据分析能力上也能窥得一二。
三、辅助技术能力
辅助的技术能力是指,你会不会的影响不会特别大,但是也都是有用的能力,特别是不同公司的发展情况不同,很可能会出现一个算法工程师既要做数据接入、又要做数据清洗、还要做算法平台
也要搞前端、还要负责模型上线、系统运维。
这里就不再细讲了。
思考一
聊一下对技术能力、工程能力和数据分析的思考。
居士个人的理解,技术能力更多的是偏向于一个一个的技术点,而工程能力更多就是在一个团队中将项目做好的能力。很多算法出身的工程能力不行,那么他做的单纯的一个模型是无法应用到实际生产中的,而工程就是指把理论落地实际生产的过程。那么工程包含了什么?它包括了系统架构设计和模块设计、数据流搭建和平台搭建、调包或算法开发、分布式、上线以及各种落地的代码开发。报表和监控,其实本质也是做数据流,边缘性的可能要做些后台和前端的开发。
然后数据分析能力是什么?数据分析(不是纯粹的数据分析)除了分析方法论和套路外,是一个很综合性、相对偏软一点的能力,比如说你通过分析发现了我们的系统有哪些可以优化的点,通过分析发现了问题的原因是什么,这些都是分析能力。
思考二
针对前面的内容,和 Cathy 讨论后,对整个思路做了新的梳理,大家直接看图就好,居士也认为这样描述可能更为合理。
思考三
这里再补充一个模型复现的能力,比如你看了一篇论文,发现这个模型可能很适合自己的业务场景,那么你是否能力将论文里面的模型快速用公司现有的平台和工具来复现?
居士认为,这一个是一个非常重要的能力,但是没有想好具体该怎样划分。
⑥ 我也已经25岁其实就有转行的打算了,想转数据分析大数据行业,我大学本科是和这个专业相关的,
来得及就赶紧哦
首先,大数据行业的入行门槛至少是大专及以上学历,按照大多数人受教育的年纪来说,大专毕业至少21+,本科生至少22+,研究生以上学历年龄会更大,不少人的职业生涯是从本科或研究生起步的,那样少说也得二十四五了
现今大数据人才的来源主要靠市场培训,市场上的大数据培训以技术入门为主,不少人是程序员转行做大数据的,大多数程序员是大专及本科毕业后入职,经过几年职场历练后,程序员在工作中不仅对业务知识有一定积累,且对IT行业也有自己的积累和理解,这样意味这部分人进入大数据市场有先发优势,同时意味着他们年纪也应该在25岁+
⑦ ai算法能力模型轻量化的目标
AI算法能力模型轻量化的目标:所谓轻量化人工智能,是指以一系列轻量化技术为驱动提高芯片、平台和算法的效率,在更紧密的物理空间上实现低功耗的人工智能训练和应用部署,不需要依赖与云端的交互就能实现智能化操作的人工智能。
AI算法能力模型轻量化的解析:
大模型的人工智能这场游戏正变得越来越“笨拙”,也越来越奢侈。于是,轻量化人工智能(Tiny AI)被寄予厚望,通过对人工智能模型及其计算载体的“瘦身”,提升效率,降低能耗。
专家认为,轻量化人工智能是以一系列轻量化技术为驱动,提高算法、平台和芯片的效率,在更紧密的物理空间上实现低功耗的人工智能训练和应用部署,不依赖与云端交互就能实现智能化操作,被视为人工智能的另一个重要应用方向。
⑧ MPC——理论知识(1)
模型闭穗预测控制重构了追踪轨迹作为优化问题的任务。优化问题的解决方案是最佳的轨迹。模型预测控制涉及模拟不同的执行器输入,预测最终的轨迹并以最小的成本选择该轨迹。当前状态和参考轨迹是已知的。在每个时间步骤中,制动器输入被优化以便最小化预测轨迹的成本。一旦找到最低成本的轨迹,执行第一组致动器命令,其余部分被丢弃,并且在计算新的最佳轨迹时在每个时间步重复。
(1)预测模型:预测模型是模型预测控制的基础。主要功能是根据对象的历史信息和未来输入,预测系统未来的输出。对于模型预测的形式没有严格的限定,状态方程、传递函数这类传统的模型都可以作为预测模型。对于线性稳定系统,阶跃响应、脉冲响应这类非参数模型,也可以直接作为预测模型使用。
(2)滚动优化:预测模型控制通过某一性能指标的最优来确定控制作用,但优化不是一次离线进行,而是反复在线进行的。这就是滚动优化的含义,也是模型预测控制区别于传统最优控制的根本点。
(3)反馈校正:在新的采样时刻,首先检测对象的实际输出,并利用这一实时信息对基于模型的预测结果进行修正,然后进行新的优化。
控制过程中始终存在一条期望轨迹。以时刻k作为当前时刻(坐标系纵轴所在的位置),控制器结合当前的测量值和预测模型,预测系统未来一段时域内 (也被称为预测时域)系统的输出,如曲线2所示。通过求解满足目标函数的以及各种约束的优化问题,得到控制时域 内一系列的控制序列,如图中矩形波4所示(从坐标系纵轴开始),并将该控制序列的第一个元素作为受控对象的实际控制量。当下一个时刻k+1时,重复上述过程,如此滚动地完成一个个带约束的优化问题,以实现对被控对象的持续控制。
根据所采用模型的不同,模型预测控制主要包括动态矩阵控制(DMC)、模型算法控制(MAC)、广义预测控制(GPC)等。同时,在现代控制理论中广泛使用的状态空间模型,同样可以应用于模型预测控制中。
(1)预测方程
首先考虑以下的离散线性化模型:
设定
可以得到一个新的状态空间表达式:
其中
所以
可得:
为了进一步简化计算,做出如下假设:
如果系统预测时域为 ,控制时域为 ,那么预测时域内的状态量和系统输出量可以用以下算式计算:
为了使整个关系更加明确,将系统未来时刻的输出以矩阵的形式表达:
式中:
通过上式可以清楚看到,在预测时域内的状态量和输出量都可以通过系统当前的状态量 和控制时域内的控制增量 计算得到。这也就是模型预测控制算法中“预测”功能的实现。
(2)优化求解
实际上,系统的控制增量是未知的搏仿,只有通过设定合适的优化目标,并对其进行求解,才能得到控制时域内的控制序列。
可以把控制增量作为目标函数的状态量,优化目标函数如下形式:
其中,第一项反映了系统对参考轨线的跟随能力,第二项反映了对控制量平稳变化的要求。Q和R为权重矩阵,整个表达式的功能是使系统能够尽快且平稳地跟踪上期基态纤望的轨迹。同时,在实际控制系统中,往往需要满足系统状态量以及控制量的一些约束,一般如下:
控制量约束:
控制量约束:
输出约束:
上面三个公式,形成了一个完整的优化目标表达式。通过求解这个带约束条件的优化目标,就能得到未来一段时间的控制序列。然而,由于系统的模型是实时改变的,并不能保证每个时刻该优化目标都能得到可行解。因此,有必要对优化目标进行相应的处理。比普遍并且证明有效的方式是在优化目标中加入松弛因子,如下所示:
式中, 为权重系数, 为松弛因子。
将系统输出的状态空间表达式代入优化目标式,并且将预测时域内的输出量偏差表示为:
经过相应的矩阵计算, 可以将优化目标调整为:
式中:
在式中, 为常量,因此模型预测控制在每一步的带约束优化求解问题都等价于求解如下的二次规划问题:
(3)反馈机制
在每个控制周期内完成对上式的求解后,得到了控制时域内的一系列控制输入增量:
根据模型预测控制的基本原理,将该控制序列中的第一个元素作为实际的控制输入增量作用于系统,即:
系统执行这一控制量直到下一时刻。在新的时刻,系统根据状态信息重新预测下一段时域的输出,通过优化过程得到一个新的控制增量序列。如此循环,直到系统完成控制过程。
⑨ 作为程序员提高编程能力的几个基础算法
一:快速排序算法
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。
快速排序使用分治法(Divideandconquer)策略来把一个串行(list)分为两个子串行(sub-lists)。
算法步骤:
1从数列中挑出一个元素,称为“基准”(pivot),
2重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。
二:堆排序算法
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
堆排序的平均时间复杂度为Ο(nlogn) 。
创建一个堆H[0..n-1]
把堆首(最大值)和堆尾互换
3.把堆的尺寸缩小1,并调用shift_down(0),目的是把新的数组顶端数据调整到相应位置
4.重复步骤2,直到堆的尺寸为1
三:归并排序
归并排序(Mergesort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(DivideandConquer)的一个非常典型的应用。
1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
2.设定两个指针,最初位置分别为两个已经排序序列的起始位置
3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
4.重复步骤3直到某一指针达到序列尾
5.将另一序列剩下的所有元素直接复制到合并序列尾
四:二分查找算法
二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。
五:BFPRT(线性查找算法)
BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂度,五位算法作者做了精妙的处理。
1.将n个元素每5个一组,分成n/5(上界)组。
2.取出每一组的中位数,任意排序方法,比如插入排序。
3.递归的调用selection算法查找上一步中所有中位数的中位数,设为x,偶数个中位数的情况下设定为选取中间小的一个。
4.用x来分割数组,设小于等于x的个数为k,大于x的个数即为n-k。
5.若i==k,返回x;若i<k,在小于x的元素中递归查找第i小的元素;若i>k,在大于x的元素中递归查找第i-k小的元素。
终止条件:n=1时,返回的即是i小元素。
六:DFS(深度优先搜索)
深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。
深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。
深度优先遍历图算法步骤:
1.访问顶点v;
2.依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
3.若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。
上述描述可能比较抽象,举个实例:
DFS在访问图中某一起始顶点v后,由v出发,访问它的任一邻接顶点w1;再从w1出发,访问与w1邻接但还没有访问过的顶点w2;然后再从w2出发,进行类似的访问,…如此进行下去,直至到达所有的邻接顶点都被访问过的顶点u为止。
接着,退回一步,退到前一次刚访问过的顶点,看是否还有其它没有被访问的邻接顶点。如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的访问;如果没有,就再退回一步进行搜索。重复上述过程,直到连通图中所有顶点都被访问过为止。
七:BFS(广度优先搜索)
广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。
BFS同样属于盲目搜索。一般用队列数据结构来辅助实现BFS算法。
1.首先将根节点放入队列中。
2.从队列中取出第一个节点,并检验它是否为目标。
如果找到目标,则结束搜寻并回传结果。
否则将它所有尚未检验过的直接子节点加入队列中。
3.若队列为空,表示整张图都检查过了——亦即图中没有欲搜寻的目标。结束搜寻并回传“找不到目标”。
4.重复步骤2。
八:Dijkstra算法
戴克斯特拉算法(Dijkstra’salgorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。
该算法的输入包含了一个有权重的有向图G,以及G中的一个来源顶点S。我们以V表示G中所有顶点的集合。每一个图中的边,都是两个顶点所形成的有序元素对。(u,v)表示从顶点u到v有路径相连。我们以E表示G中所有边的集合,而边的权重则由权重函数w:E→[0,∞]定义。因此,w(u,v)就是从顶点u到顶点v的非负权重(weight)。边的权重可以想象成两个顶点之间的距离。任两点间路径的权重,就是该路径上所有边的权重总和。已知有V中有顶点s及t,Dijkstra算法可以找到s到t的最低权重路径(例如,最短路径)。这个算法也可以在一个图中,找到从一个顶点s到任何其他顶点的最短路径。对于不含负权的有向图,Dijkstra算法是目前已知的最快的单源最短路径算法。
1.初始时令S=,T=,T中顶点对应的距离值
若存在<V0,Vi>,d(V0,Vi)为<V0,Vi>弧上的权值
若不存在<V0,Vi>,d(V0,Vi)为∞
2.从T中选取一个其距离值为最小的顶点W且不在S中,加入S
3.对其余T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值缩短,则修改此距离值
重复上述步骤2、3,直到S中包含所有顶点,即W=Vi为止
九:动态规划算法
动态规划(Dynamicprogramming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。
动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。
关于动态规划最经典的问题当属背包问题。
1.最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。
2.子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。
十:朴素贝叶斯分类算法
朴素贝叶斯分类算法是一种基于贝叶斯定理的简单概率分类算法。贝叶斯分类的基础是概率推理,就是在各种条件的存在不确定,仅知其出现概率的情况下,如何完成推理和决策任务。概率推理是与确定性推理相对应的。而朴素贝叶斯分类器是基于独立假设的,即假设样本每个特征与其他特征都不相关。
朴素贝叶斯分类器依靠精确的自然概率模型,在有监督学习的样本集中能获取得非常好的分类效果。在许多实际应用中,朴素贝叶斯模型参数估计使用最大似然估计方法,换言朴素贝叶斯模型能工作并没有用到贝叶斯概率或者任何贝叶斯模型。
尽管是带着这些朴素思想和过于简单化的假设,但朴素贝叶斯分类器在很多复杂的现实情形中仍能够取得相当好的效果。
通过掌握以上算法,能够帮你迅速提高编程能力,成为一名优秀的程序员。
⑩ 实施能力测度模型
对ERP实施能力进行测评的目的主要是用来评估ERP实施过程中应用企业、软件提供商和咨询服务公司三方实施主体对项目监督和控制的能力,重点考察流程控制手段、改进ERP实施质量的管理方法和升碧处理情况的能力。实施能力的测评可以从两个方面入手,其一为ERP实施能力成熟度的测评,其二为ERP实施能力的指标测算。ERP实施能力成熟度模型是由暨南大学王惠芬提出的[22],该模型将用于软件开发领域质量管理的能力成熟度模型SW-CMM引入ERP实施能力评估领域,力图用规范化的手段实现对ERP实施过程中各方综合能力的有效评估;ERP实施能力测度模型则是由天津大学皮贺齐二石等设计的[23],此模型通过对ERP实施过程中的内外部因素的评价和测算,以便为ERP实施主体和项目监理方提供一种决策量化工具。
6.3.3.1 实施能力成熟度模型
结合CMM(software Capability Maturity Model)思想和ERP实施特点,评估能力成熟度可以从关键活动领域及其活动能力两个方面进行测量:活动领域包括ERP选型、ERP实施周期、ERP软件公司和管理咨询公司的支持、ERP项目管理、ERP项目组织;活动能力可按百分制分四个等级来划分,没有做到计0~15分,部分做到计16~50分,大部分做到计51~85分,全部做到计86~100分。依据各个活动领域及其活动的重要程度也可以设置权重、计算得分,并针对五个领域关键活动的累计分数再对整个ERP项目的能力成熟度进行总分评定。这样,对ERP实施的能力成熟度划分为五个层次,即原始级、可重复级、已定义级、管理级和优化级。
(1)初始级。初始级定义了ERP系统的输入、输出和实施范围,但实施过程却是个黑箱,即知道要实施哪些模块,而怎么实施、模块里到底有什么却不知道。初始级的ERP实施项目处于未加详细定义的无序过程中,系统的实施进度、预算、ERP功能、ERP实施的质量不可预测,遇到问题时常常放弃原有的计划而陷于编程和二次开发陷阱里。这首先表现在ERP系统的引进仅仅被企业少数管理人员认同,没有发动管理人员对整个系统进行消化,企业也没有备足实施人员和后续资金;其次软件产品质量不过关、存在程序缺陷,软件公司难以驾驭软件实施的整个生命周期的活动,缺少对整个项目进行管理监控和质量考核的内部管理机制等;此外,企业在项目组织上也存在较多问题,如不具备稳定的实施环境和维护环境、成熟能力取决于某几个人的个人能力等。
(2)可重复级。可重复级是基于以往管理项目的经验来计划和管理新的ERP项目,即企业对实施企业管理软件有了一定的经验,同时软件公司也成功地实施过几个ERP项目,企业和软件公司对整个ERP实施过程达到了制度化、纪律化、可重复的程度。此阶段中的项目经理能够对成本、进度和功能负责,出现问题时可以采取纠偏措施,项目可以达到原来承诺的程度,但软件公司和咨询公司的支持、项目管理、项目组织还存在较多问题。首先,由于缺少咨询公司的支持,项目建吵握举立的实施策略以及为实施策略而制定的具体措施主要是针对软件本身,而很少涉及对企业新旧业务流程的对比分析,使得整个项目以计算机部门的人员为主,难以在制造、财务、销售等重点管理领域全面铺开;其次,尽管软件实施对实施生命周期里的主要活动有了质量保证,但整个项目的管理还没有形成企业与软件商之间的共同计划,软件公司的内部管理还没有稳定的全面质量管理环境;最后,此阶段的实施重视进度和承诺,但往往忽视了对项目的文档管理,导致后续实施难以追踪前期的详细资料,项目经验沉淀在实施人员的脑海。
(3)已定义级。已定义级是指ERP实施过程以及实施过程的管理得到了系统的阐述,并对项目的主要活动领域预先进行了定义,预先明确了项目计划与实施结果之间的依赖关系,即项目的计划、系统规模、二次开发程度、工作量、成本、进度、人员配置、其他资源都进行了严格的定义,整个项目实施的重点是对问题的预测上,其成本、进度和功能都是可以控制的。
(4)管理级。管理级是在已定义级基础上对项目目标和实施过程建立起了定量化的质量管理,对于所有项目的重要活动都进行工作量和质量的连续计量。为了达到ERP项目的高质量,首先规定了高层经理必须介入项目的具体层次和具体时间,对项目经理介入项目的时间做了硬性规定,以及项目团队成员间协作的量化;其次围绕“培训”工作,从头到尾都定义了各级项目人员的培训内容、培训进度、培训时间、培训质量等。
(5)优化级。优化级是ERP实施的最高级,企业通过引进管理咨询、业务流程重组和ERP系统对整个企业过程不断优化,对企业过程中的管理变革进行合理预期,对变革过程合理控制,并获得预期的变革效果。实施优化级的企业会预期ERP实施对财务、采购、生产、人力资源等关键管理领域的变革,能预先判断变革的阻力,主动寻找出企业现有管理的长处和短处,以达到用西方管理模式改造企业自身管理缺陷的目的;这个级别的公司可以自发地不断改进企业信息系统的应用,对可能的过程变更和持续改进进行优化。
6.3.3.2 实施能力测度模型
ERP实施能力测度模型的思路是,首先从企业、供应商、咨询顾问等不同角度分析其影响因素,确定各种因素的衡量指标;然后利用案例分析、专业估计等方法给定各指标的权重,并按照一定的算法计算不同级别的测度值;最后,比较实施过程中的测试值与预期目标之间的判别,以便对实施能力进行诊断和评测。
(1)评价指标。实施能力评价指标体系设计应包含影响ERP实施结果的所有主要因素,既有企业内部的能力评价指标,也有软件供应商、咨询公司等外部主体能力的衡量指标,并按照与实施效果的关联性进行适当分类与布置。其中内部因素可包括信息化基础、资金支持能力、企业自身技术力量、企业当前管理水平、企业领导重视程度、项目筹备情况等指标;外部因素必须包括软件供应商能力、咨询顾问公司能力,及实施三方的组织能力等指标,如图6.9所示。
图6.9 实施能力测度指标体系
(2)测度算法。这样,可形成的测度指数分为四级,即总测度指数;内部(企业能力)、外部指数;信息化基础、资金支持能力、企业自身技术力、企业当前管理水平、企业领导重视程度、项目筹备情况、供应商能力、咨询顾问公司能力、实施三方组织能力指数;基础指标指数。各单项指数根据实际情况在内部制定不同等级或级别,以累进形式赋值,并保证最高值为分配的单项峰值。在具体评估过程中,按照项目实施小组的真实能力确定所在的等级,对应的分值即为该项指标的指数值,通过逐级汇总形成各级指数。基础指标值和各级计算式中权重可以采用模糊评判法、专家打分法或层次分析法等方法确定。值得说明的是,指标基准值的确定需要通过对大量实施企业案例(成功和失败案例)的分析和研究确定。
为增加评价的可操作性,在指标体系和测算的基础上,可以采用DSS理论并结合人工智能、灰色评价理论以及人工神经网络理论,将专家的经验知识、评价指标的数据信息、多种综合评价方法、相关的先进技术、计算机软硬件等有机结合起来,构成集成式智能化ERP系统建设评价决策支持系统。