精华内容
下载资源
问答
  • 如何入门参与数学建模 万次阅读 多人点赞
    2018-12-25 11:13:13


    数学建模感想

    纪念逝去的大学数学建模:两次校赛,两次国赛,两次美赛,一次电工杯。从大一下学期组队到现在,大三下学期,时间飞逝,我的大学建模生涯也告一段落。感谢建模路上帮助过我的学长和学姐们,滴水之恩当涌泉相报,写下这篇感想,希望可以给学弟学妹们一丝启发,也就完成我的想法了。拙劣的文笔,也不知道写些啥,按顺序随便写写吧。

    我是怎么选择建模的:

    大一上,第一次听到数学建模其实是大一上学期,not大一下学期。某次浏览网页偶然发现的,源于从小对数学,哲学以及历史的崇敬吧(虽然大学没敢选择其中任何一个专业,尤其是数学和哲学,怕太难了,学不好),我就坚定了学习数学建模的想法。通过翻阅学校发的学生手册还是神马的资料,发现我们学校有数学建模竞赛的。鉴于大一上啥数学知识都没有,也就没开始准备,把侧重点放在找队友上。
    一次打乒乓球,认识了两位信电帅哥,以后也会一起打球。其中一位(M)很有学霸潜质,后来期末考试后,我打听了他的高数成绩,果然的杠杠滴,就试探性的问了下,要不要一起参加建模,嗯,成功!

    第二位队友是在大一上学期认识的(向她请教了很多关于转专业的事情),但是是第二学期找她组队的。老样子,打听成绩,一打听吓一跳,是英语超好,微积分接近满分的女生F(鄙人第二学期转入了她的学院)。果断发送邀请,是否愿意一起组队,嗯,成功。

    关于找队友:在信息不对称的情况下,优先考虑三人的专业搭配,比如或信电的小伙伴负责编程和理工科题建模,经济金融统计负责论文和统计建模,数学计算专业的全方位建模以及帮忙论文,个人感觉这样子比较好。由于建模粗略地可以分为建模,编程,论文,三块,整体上是一人负责一块的,但是绝对不能走极端,每个人就单单的负责一块,这样子的组合缺乏沟通和互动。应该要在培训中磨合,结合每个人的个人特点。主要负责哪几块,辅助哪几块。

    接下来就到了第一次校赛了:第一次还是挺激动的,因为之前问了几个学长学姐说,建模都是要通宵的,于是我们也做好了通宵的准备。第一次拿到的题目是关于一个单位不同工作部门不同饮食习惯的人,健康水平的关系。
    后来回顾过来,这其实是一个比较简单的统计分析题。但是想当年可没有这等觉悟,做题全靠office,对着题目想半天也不知道该怎么做。做的过程很痛苦,但是也很兴奋,校赛三等奖的结果证明了光有一股热情是不行的,需要恶补大量知识。

    推荐新手入门书目:

    数学模型(姜启源、谢金星)

    数学建模方法与分析.(新西兰)Mark.M.Meerschaert.

    第一本是姜老先生写的,很适合新手,在内容编排上也是国产风格,按模型知识点分类,一块一块讲,面面俱到。第二本是新西兰的,我是大二的时候看这本书的,只看了前面一部分。发现这本书挺适合新手,它是典型的外国教材风格,从一个模型例子开始,娓娓道来,跟你讲述数学建模的方方面面,其中反复强调的一个数学建模五步法,后来细细体会起来的确很有道理,看完大部分这本书的内容,就可以体会并应用这个方法了。(第一次校赛,就是因为五步法的第一步,都没有做到)。对了,还有老丁推荐的一本,美利坚合众国数学建模竞赛委员会主席Giordano写的A first course in mathematic modeling,有姜启源等翻译的中文版,but我没能在图书馆借到,所以没看过,大家有机会可以看看。

    怎么建模

    第一次国赛前的放假开始学校培训,我提前借了一大堆书,把卡都借满了。第一次国赛前的那次培训,对我而言,这段时期是收获最大的时期,比其他任何时间段都来得大。

    这段时间内,我们三个人都很辛苦。白天培训要学习很多知识,完了只能休息半天,然后开始比赛,周而复始。 之前我的打算是,白天上课学习,晚上回去复习当天的内容,再看些其他东西。But 我太高估自己了,晚上基本是玩玩三国杀之类的小游戏放松,然后第二天再去上课。嗯,心态放好,身体最重要。^_^

    通过这几次培训,基本上队伍形成了F专业写论文,我和M负责建模和编程。其中我偏重建模和全队调度。

    大家在培训的时候,要慢慢养成五步建模法:

    五步法说明:

     

    第一步:提出问题.

    大家可能会想,题目不是已经给出问题了吗? 是的,但是这里的提出问题是指:用数学语言去表达。首先,题目一定要通读若干遍,“看不懂,读题目;看不懂,读题目”,如此反复循环的同时查阅相关资料。这通常需要大量的工作,而且要根据题目的特点做一些假设。

    看的差不多了,就开始用数学形式提出问题,当然,在这之前,先引用或者定义一些专业术语。 接下来进行符号说明,统一符号(这点很重要,三个人之间便于沟通,论文便于展现),并列出整个问题涉及的变量,包括恰当的单位,列出我们已知或者作出的假设(用数学语言描述,比如等式,不等式)。 做完这些准备工作后,就开始正式提出问题啦。用明确的数学语言写出这个问题的表达式,加上之前的准备工作,就构成了完整的问题。

    这部分的内容反映到论文结构上,相当于前言,问题提出,模型建立部分。注意,刚开始建立的模型很挫没关系,我们随时可以返回来进行修改的。

    第二步:选择建模方法.

    在有了用数学语言表述的问题后,我们需要选择一个或者多个数学方法来获得解。 许多问题,尤其是运筹优化,微分方程的题目,一般都可以表述成一个已有有效的标准求解形式。这里可以通过查阅相关领域的文献,获得具体的方法。为什么不是查阅教材呢?基本上教材讲的都是基础的,针对特定问题的,教材上一般找不到现成的方法,但是教材依然是很重要的基础工具,有时候想不出思路,教材(比如姜启源那本)翻来翻去,会产生灵感,可以用什么模型。

    第三步:推导模型的公式.

    我们要把第二步的方法实现出来,也就是论文的模型建立部分。我们要对建立的问题进行变形,推导,转化为可以运行标准方法解答的形式。这部分通常是借鉴参考文献的过程,做一些修改,以适应本题的情况。

    第四步:求解模型.

    这里是编程的队友登场的时刻了。

    统计模型:SPSS,Eviews,Stata ,都是菜单式操作,easy的。

    数据分析:R,数据库SQL Server,IBM
    DB2

    微分方程:Maple,Mathematic,MATLAB

    运筹规划:Matlab,Lingo

    智能算法:Matlab,R

    时间序列:统计模型中的那些软件,或者R,Matlab

    图像处理:Matlab,C++

    总结: Matlab是必须的,再来个SPSS,一般情况下够用了。

    第五步:回答问题.

    也就是论文的讨论部分。这部分是对你整篇论文成果的总结,一定要写的有深度。除此之外,通常还要写上一些灵敏度分析,如果是统计模型的话,要有模型检验。论文通常会需要画一些图表,可以使用Matlab、R等软件来画跟数据有关的图,使用Visio或者PPT画流程图之类的图。

     

    关于比赛的一些个人体会

    1、国赛和美赛是有区别的

    国赛讲究实力,美赛讲究创新。 美赛不一定要多高级的方法,但是一定要有创意。而国赛,组委会往往是有一个模糊的“标准答案”在的,按部就班做下来就好了。

    注意不要一次性就建立复杂模型了,老外看重的是你的思维,你的逻辑,不像国赛,看重的是你的建模编程实力,要使用各种高大上的方法。

    拿到一个问题,可以先建立一个初等模型,讨论下结果;再逐渐放宽条件,把模型做的复杂一点。
    即 Basic model -> Normal model -> Extended model的思路。这个思维在美赛中很好,这么做下来基本都能得金奖的,鄙人这次也是按照这样的流程,拿了个金奖。

    2、文献为王

    文献为王。建模的题目,基本上是某个教授的研究课题,凭我们本科生的水平,基本上做不到对题目的深刻理解。所以要多看文献。

    看文献也有技巧:刚拿到题目,先查一下相关背景资料,了解题目是哪方面的。接下来看文献,找一下硕士论文,博士论文以及综述性质的文章,硕博论文一般都会详细介绍下整个课题的国内外研究情况,综述就更不用说了,它就是对大量原始研究论文的数据、资料和主要观点进行归纳整理、分析提炼而写成的论文。看完这些,就可以比较有深度地把握题目,也知道如果我们要进行创新的话,往哪方面走。

    接下来,可以根据小组三人讨论的结果,有针对性的看一下有深度的文献,文献看得多了,就可以考虑开始创新了,像爱因斯坦那样开辟相对论等新领域的创新,是很有难度的,但是我们可以退而取其次,不是有句话叫做“他山之石,可以攻玉”吗?
    我们要做的就是组合创新! 领域内组合创新,把一个学者的方法嫁接到另一个学者的模型上。 以及交叉领域创新,把把自然科学的知识用到社会科学上,或者用社会科学解释自然科学的结果等等。(这里就可以体现,跨专业建模队伍的先天优势了:不同专业对同一个问题的思维是不同的,可以擦出创意的火花)

    PS:图书馆有买很多数据库,可以免费看论文。免费的话google学术是无敌的,国内文献貌似没有良好的分享平台,实在找不到论文也可以百度文库死马当活马医。

    平时可以多注册一些网站,数学中国,校苑数模,matlab技术论坛,pudn程序员,研学论坛,stackoverflow等。上传些资料,攒积分要从娃娃抓起,不要等到比赛了看到好资料还“诶呀,积分不够”。

    想法很重要。建模思维是一种很难学习到的东西,站在巨人的肩膀上,多看文献,负责建模的同学辛苦了。

    3、掌握一点数据处理的技巧

    建模的题目,A.B两道题。基本上是一题连续,一题离散;一题自然科学(理工科),另一题社会科学(经济管理)。这样的分布的,大家平常做题的时候就可以有所侧重,曾经有一支美帝的队伍,专攻离散题,貌似拿了连续两届的outstanding.

    掌握一点数据处理的技巧是很有必要的。比如数据缺失值的处理,插值与拟合等。尤其是数据缺失值的处理,基本上A,B题都有可能涉及,建议熟练掌握。

    4、关于编程水平

    More generally,软件操作水平几乎决定了一个队伍的结果上限。MATLAB是必备的,必须要熟练掌握各种模型的实现。此外,SPSS(或者R)也是要掌握的。Mathematic和MATLAB的替代性很强,不掌握也没关系(仅在建模方面,mathematic 当然也是很强大的)。What’s more建模比赛举办这么多年,用到lingo的情况几乎很少了,也可以不学lingo. And 现在的题目动不动就要粒子群等智能算法,强烈建议大家至少熟练掌握一种智能算法.

    MATLAB推荐书目

    基础:

    MATLAB揭秘 郑碧波 译 (本书讲的极其通俗易懂,适合无编程经验的)

    精通matlab2011a 张志涌

    提升:

    数学建模与应用:司守奎 (囊括了各类建模的知识,还附有代码,很难得,工具书性质的)

    Matlab智能算法30个案例分析 史峰,王辉等

    《MATLAB统计分析与应用:40个案例分析》

    数字图像处理(MATLAB版) 冈萨雷斯 (13国赛碎纸片复原居然涉及了图像处理,所以列在这里了.可看可不看,太专业化了)

    书很多的.总之,要达到熟练运用matlab进行运筹优化,数据处理,微分方程的地步. 数理统计可以交给SPSS,R ,其中SPSS无脑操作上手快.

    5、格式规范:

    看国赛一等奖,美赛国内人得特等奖的论文,格式规范方面绝对很到位,大家可以参考。国外人的特等奖论文,大都不重视格式,人家的优势在于模型实力与创意、母语写作。所以在美赛格式规范方面,参考国内特奖的论文。

    PS:有时间的队伍可以学习以下Latex,用Latex写出来的论文,比word不知道好了多少倍。Latex书目推荐:

    LaTeX插图指南

    一份不太简短的Latex介绍

    LaTeX-表格的制作 汤银才

    参考文献常见问题集

    latex学习日记 Alpha Huang

    论坛:Ctex BBS

    结束语:

    什么是数学的思维方式?观察客观世界的现象,抓住其主要特征,抽象出概念或者建立模型;进行探索,通过直觉判断或者归纳推理,类比推理以及联想等作出猜测;然后进行深入分析和逻辑推理以及计算,揭示事物的内在规律,从而使纷繁复杂的现象变得井然有序。这就是数学的思维方式。

    -----------丘维声《抽象代数基础》前言

     

    PS:转载到学校等教育机构,给学弟学妹们学习是可以的,注明作者跟来处。如果是出于任何商业目的,比如用作微信公众号文章、媒体稿件、软文文案、营销型微博账号,不允许,或者应该主动提出愿意为之付出的稿费。

     

    前言  
        建模给我带来的是什么?
    组建你的团队
        1、专业合适即可
        2、协作是关键
        3、建模、实现、写作
    准备你的工具
        软件的准备
            1、论文的写作
            2、公式编辑器
            3、插图制作
            4、论文版本控制器
            5、团队资料笔记共享
            6、善用搜索引擎
        一些实用的网站
    做好知识储备
        建模前推荐看那些书
        基本模型和算法
        基本的数据处理方法
        有必要了解的些学科知识
    

    前言

    写下这些文字,希望我在数学建模上的经验能帮助各位。2017年11月4日更新。

     

    建模给我带来的是什么?

    1、简历上的更新。

    参加2016年国赛获得省一等奖,获得省一是比较容易的,可能相对国奖含金量不高。参加2016年参加美赛获得M奖,美赛的奖项有:Outstanding Winner(1%)、Finalist(1%)、Meritorous Winner(9%)、Honoralbe Mention(31)、Successful Participant(57%)。一般上只要提交了文章至少能获得成功参赛奖,国内美名其曰三等奖。在我看来参赛稍微用心获得H和M奖也是相对比较容易的,含金量最高的还是O奖。

    2、个人技能的实际提升。

    能够熟练的使用 Matlab、Python、Mathematica 编程解决实际问题,能够使用 Word、LaTex 写规范的论文,懂得团队之间的高效协作,可以使用 PPT、PS 等绘制所需的图片素材、信息检索能力大大提升等等。

    3、认知态度的改变。

    答主在参赛的时候就读的专业是计算数学,属于专业数学学科。大一大二在数院学习的感觉是不轻松,时常质疑学这些有什么用?例如高等代数,常微分方法,离散数学,偏微分方程等等,后来误打误撞参加了国赛和美赛才发现解决实际问题的基础就是这些平时看作生涩难懂的内容。建模竞赛其实也是一次学科的交叉竞赛,各个学科各有自己的优势,把自己的专业知识学好在建模时也就有了解决问题的基本能力。

    组建你的团队

    建模的第一步就是组建自己的团队。很多人在组队问题上有着一些观念上的偏执:

    • 专业要不同:理工管搭配
    • 男女比例协调
    • 明确分工:建模、编程、写作

    就以上三点说说我自己的看法。

     

    ①. 专业合适即可

    专业并非会对建模起到至关重要的作用,真正起作用的是作为建模人的你。自己对本专业知识的掌握程度,对高等数学、线性代数、微积分的学习是否用心了。其实在初等的建模中也并不会过多地涉及到这些内容,当然好的模型对这些知识的要求是必须的。踏踏实实、靠谱细心才会出成果。

     

    ②. 协作是关键

    俗话说男女搭配干活不累,但是累不累不还得看你是否有个能干的队友吗?通力合作,有默契的队伍才会有动力在比赛中坚持下去。小组内互相认识、互相了解才会在最累的时候互相支持。一个队伍需要的是你认可的凝聚力,而不是有一个人专门端茶倒水。

     

    ③.建模、实现、写作

    团队分工至关重要。我的理解团队分工应该是模型搭建、模型实现、论文写作这三个部分。建模是提供团队对问题的解决思路、方法;参与实现模型或者求解模型必须要求能熟练的通过各类软件对模型进行模拟、求解、检验;写作要求能对团队的前进方向有清晰的把握,通过准确的文字、图标对模型进行展示。

    但是实际中的分工并不是界限分明,数学建模是一个团队合作的过程,分工固然重要但是明确的分工界限容易限制建模的进度,禁锢思路。我认为在建模中的分工一定要有交叉,建模的同学也需要把自己理解的通过文字、公式准确的表达给写作的同学,负责模型的同学实现部分也要对模型的实现的最终结果有较好的可视化功底。

    每个人都应该具备基本的建模、模型实现、写作能力但是每个人的侧重点不同才是绝佳的组合。

    准备你的工具
    这部分主要谈谈使用哪些软件,包括编程工具、写作工具、绘图工具等,以及如何进行合作。

    软件的准备

    工欲善其事,必先利其器。软件列表参考如下:

    • - 编程工具(Matlab / Python / Mathematica )
    • - 统计建模(R / SPSS / Minitab)
    • - 论文写作(Word / LaTex)
    • - 公式编辑器(MathType)
    • - 插图制作(PowerPoint / PS)
    • - 流程图绘制(Visio)
    • - 版本控制器(SVN / Git)
    • - 团队资料笔记共享(有道云笔记)

    给出的参考软件只是个人建议,如果你有你擅长的工具也请务必使用自己擅长的,在学习成本和收益之间衡量下,自己是不是有足够的精力接触、学习新的软件,是否能用好它。

     

    1、论文的写作

    Word可能我们再熟悉不过了,但可能这种熟悉只限于时常听闻、把Word当做记事本等,但是你真的能熟练使用它的基本功能吗?例如,插入图片的版式之间的区别、页眉页脚的设置、段落行间距段前断后的距离,分栏等等。在图、公式、表格较多的论文上,排版稍不留意就会造成的混乱。图片的嵌入方式、表格的样式、公式图表的引用等等都是比较容易忽视的问题。如果能够熟练掌握Word它就是你手上的排版利器。

    现在有另一种选择,开始使用LaTex。把LaTex形容成一门“编程语言”我想是合适的,一行特定的字符对应着一个特定的样式,将样式进行组合就有了一个精美的模板。你要做的只是学习一些基本的语法,对模板进行填充就行了。Latex的一个缺点是不能实时预览,必须进行编译才能看到你的内容。
    另外,国赛的模板[1]你可以从http://www.latexstudio.net/archives/4253下载,美赛的模板[2]http://www.ctan.org/pkg/mcmthesis下载.。

     

    2、插图制作

    选择 PowerPoint 制作插图的原因,一方面是PPT的强大自定义形状功能,或者说式是 Office 系列自带的,PPT只是比较便于管理。,另一方面是自己对 PPT 的使用也较为熟练。PPT 的技能提升可以去阅读下秋叶老师的三分钟教程,在百度阅读_正版电子书在线阅读中搜索关键字“秋叶PPT-三分钟教程”即可。

     

     

    3、论文版本控制器

     

    SVN是一个代码版本控制器,简单描述SVN到底能做什么:它可以将你每一次的修改内容,对差异进行统计,同时你也可以随时恢复到过去相应版本。如果遇到多人操作了同一文件,SVN会自动整合在一起,如果改到了某个部分,会提醒解决冲突的地方。

    我们要做的是协作把论文写好,很多人包括我在内起初都是在制定好的模板上,每个人各自填充自己负责的部分最后再汇总,期间更有的是论文命名版本从版本1到N。或者还有同学只用一份论文文件,同时修改论文最多只能是一个人。这样的低效率你能忍吗?

    我的建议是,在讨论论文如何编写的时候分清有几个部分、每个部分该写哪些内容、谁负责哪些部分,然后将每个部分独立成一个空白文档,这些文件组成了一个主分支提交到服务器上,小组成员再利用SVN对其“检出”到本地,每个人在修改完各自的部分后再“提交”到服务器,其他成员“更新”本地文件即可。具体要怎么操作SVN请到搜索引擎上搜索相关内容。

    可能我以上所讲的东西你根本不能理解,没关系慢慢你就知道了:)

     

    4、团队资料笔记共享

    比较了几款笔记软件,如印象笔记、为知笔记、有道云笔。都使用了一段时间,印象笔记个人比较喜欢用它来归档纸质的文档,以及一些日常的笔记,至于团队合作上我还是比较喜欢使用有道云笔记。

    这不是广告

    有道云笔记的云协作可以给建模过程中的交流、文件共享带来极大的便利。但你可能也会说我可以用QQ群为什么要用这个软件。很重要的一点是有道云笔记有可视化的版本控制功能,之前用过QQ群的都知道,假如我上传了一个文件,下次再上传修改过的该文件你相信每个人都能保证用的是这个新文件吗?

    另外有道云笔记还支持在线预览pdf、word、txt文件,创建共享笔记(支持markdown)。有个值得分享的经验,组长在进度规划时可以以共享笔记的方式建立TODO列表,每半天在笔记中发布每个人应该完成的任务或应该解决的部分以及最迟时间,当任务完成时修改此笔记,利用删除线划去该字段。时间的控制在建模比赛过程也是很重要的!

    5、善用搜索引擎【等待完善】

    搜索文献时建议直接使用 Google 搜索。下面给出几个当时比较常用的几个网站:

    实用站点
    【数模知识库】http://www.shumo.com/wiki/doku.php?id=start
    【国赛官网】http://www.mcm.edu.cn/
    【美赛官网】http://www.comap.com/
    【美赛中文】http://www.mcmbooks.net/

    论坛
    【数学中国】http://www.madio.net/forum.php
    【校苑数模】http://www.mathor.com/mcm.php
    【数学建模与统计建模论坛】http://www.mathsccnu.com/forum.php
    【MATLAB技术论坛】http://www.matlabsky.com/

    源码
    【源码搜搜】http://www.codesoso.net/
    【Pudn】http://www.pudn.com/
    【Wolfram】http://demonstrations.wolfram.com/index.html
    【WolframAlpha】http://www.wolframalpha.com/

    文献
    【谷歌学术】https://scholar.google.com/
    【百度学术】http://xueshu.baidu.com/
    【中国知网】http://www.cnki.net/
    【万方数据】http://www.wanfangdata.com.cn/
    【维普网】http://www.cqvip.com/
    【Web of Science】https://www.webofknowledge.com/
    【PubMed】https://www.ncbi.nlm.nih.gov/pubmed/
    【ScienceDirect】http://www.sciencedirect.com/

    工具

    【英文修改】1Checker - Proofreading, Grammar Check, Smart Text Enrichment | for FREE

    【国家数据】http://data.stats.gov.cn/

    【书籍下载】Science Library - 一个开放、自由的书籍分享站

    【外文书籍】PDF Drive - Search and download PDF files for free.

    做好知识储备

    建模前推荐看那些书

    如果一定要给关于建模的参考书做个分类的话我会分成两类:基础类、工具类

    基础类书籍罗列了绝大部分基础数学模型,并有实际的问题分析建模求解;工具类主要是从数学软件(MATLAB等)的实践开始,给出问题的分析以及如何用软件求解模型,或者对模型该如何进行模拟。

    下面就不做细致分类了直接贴出我曾经真真实实用过的书

    《数学模型》- 姜启源
    数学建模入门教材,学校建模培训时就主要以这本书为参考书。大致模型有哪些应该熟悉一下。

    《数学建模竞赛入门与提高》- 周凯 , 宋军全, 邬学军
    有模型有代码可操作行强

    《MATLAB在数学建模中的应用》- 卓金武
    MATLAB能力提高必看

    《数学建模竞赛:获奖论文精选与点评》- 韩中庚
    一定要多看多学习优秀的论文

    《MATLAB智能算法30个案例分析》- 王小川, 史峰, 郁磊 
    算法一定要学透千万不能一知半解就拿来用

    《MATLAB神经网络43个案例分析》- 王小川, 史峰, 郁磊 
    人工智能算法的一类,一定要参透思想再用这个很关键

    《数学建模与数学实验》- 汪晓银 (编者), 周保平 (编者)
    MATLAB入门学习推荐

    另外更新我现在参考的几本最优化、机器学习、数据挖掘、计算方法的书:

    《机器学习》 - 周志华

    《统计学习方法》 - 李航

    《最优化理论与方法》 - 袁亚湘

    《最优化原理》 - 胡适耕

    《凸优化(中译)》 - Stephen Boyd

    《凸优化算法(英文)》 - Dimitri P.Bertsekas

    《Introduction to Numerical Analysis(英文)》- J.Stoer,R.Bulirsch

    《数据挖掘导论(中译)》 - Michael SteinBach

     

    另外不再提供任何电子版的资源,数学建模不是一场资源搜罗竞赛,更坏者变相买卖资源,知乎上已经这样助长歪风邪气了,尊重版权,珍惜时间,现在就拿起一本书开始学习吧!

     

    基本模型和算法

     

     

     赛前梳理的基本模型可以参考一下。

     

    一、优化类
    
    线性规划(运输问题、指派问题、对偶理论、灵敏度分析)
    整数规划(分支定界、枚举试探、蒙特卡洛)
    非线性规划(约束极值、无约束极值)
    目标规划(单目标、多目标)
    动态规划(动态、静态、线性动规、区域动规、树形动规、背包动规)
    动态优化(变分法)
    现代优化算法(贪婪算法、禁忌搜索、模拟退火、遗传算法、人工神经网络、蚁群算法、粒子群算法、人群搜索算法、人工免疫算法、集成算法、TSP问题、QAP问题、JSP问题)
    模糊逼近算法
    
    二、图论
    
    最小生成树(prim算法、Kruskal算法)
    最短路径(Dijkstra算法、Floyd-Warshall算法、Bellman-Ford算法、SPFA算法)
    匹配问题(匈牙利算法)
    Euler图和Hamilton图
    网络流(最大流问题、最小费用最大流问题)
    
    三&四、预测类&统计
    
    GM(1,1)灰度预测
    时间序列模型(确定性时间序列、平稳时间序列、移动平均、指数平滑、Winter方法、ARIMA模型)
    回归(一元线性回归、多元线性回归MLR、非线性回归、多元逐步回归MSR、主元回归法PCR、部分最小二乘回归法PLSR)(重点)
    Bayes统计预测
    分类模型(逻辑回归、决策树、神经网络)
    判别分析模型(距离判别、Fisher判别、Bayes判别)
    参数估计(点估计、极大似然估计、Bayes估计)
    假设检验(U-检验、T-检验、卡方检验、F-检验、最优性检验、分布拟合检验)
    方差分析(单因素、多因素、相关性检验)
    经验分布函数
    正交试验
    模糊数学(模糊分类、模糊决策)
    随机森林
    
    五、数据处理
    
    图像处理
    插值与拟合(Lagrange插值、Newton插值、Hermite插值、三次样条插值、线性最小二乘)
    搜索算法(回溯、分治、排序、网格、穷举)
    数值分析方法(方程组求解、矩阵运算、数值积分、逐次逼近法、牛顿迭代法)
    模糊逼近
    动态加权
    ES
    DWRR
    序列分析
    主成分分析
    因子分析
    聚类分析
    灰色关联分析法
    数据包络分析法(DEA)
    
    六、评价类
    
    层次分析法(AHP)
    模糊综合评价
    基于层次分析的模糊综合评价
    动态加权综合评价
    TEIZ理论
    
    七、图形类(重点)
    算法流程图
    条形图
    直方图
    散点图
    饼图
    折线图
    茎叶图
    箱线图
    P_P图
    Q_Q图
    Venn图
    矢量图
    误差分析图
    概率分布图
    5w1h分析法
    漏斗模型
    金字塔模型
    鱼骨分析法
    等高线曲面图
    思维导图
    
    八、模拟与仿真
    
    蒙特卡洛
    元胞自动机
    
    九、方程(进阶)
    
    微分方程(Malthus人口模型、Logistic模型、战争模型)
    稳定状态模型(Volterra 模型)
    常微分方程的解法(离散化、Euler方法、Runge—Kutta方法、线性多步法)
    差分方程(蛛网模型、遗传模型)
    偏微分方程数值解(定解问题、差分解法、有限元分析)
    
    十、数据建模&机器学习方法(当前热点)
    (注:此部分与数据处理算法有大量重叠)
    
    云模型
    Logistic回归
    主成分分析
    支持向量机(SVM)
    K-均值(K-Means)
    近邻法
    朴素Bayes判别法
    
    决策树方法
    人工神经网络(BP、RBF、Hopfield、SOM)
    正则化方法
    kernel算法
    
    十一、其他
    
    排队论
    博弈论
    贮存伦
    概率模型
    马氏链模型
    决策论
    (单目标决策:不确定型决策、风险决策、效用函数、决策树、灵敏度分析)
    (多目标决策:分层序列法、多目标线性规划、层次分析法)
    系统工程建模(ISM解释模型、网络计划模型、系统评价、决策分析)
    交叉验证方法(Holdout 验证、K-fold cross-validation、留一验证)
    
    附:简单建模方法
    
    比例关系
    函数关系
    几何模拟
    类比分析
    物理规律建模
    
    注:各类别之间方法可能有交叉
    

     

    放上一沓无敌好无敌全无敌清楚的资料(国赛和美赛通用),纯经管小组,无双修,零经验,美赛一等奖。

    有网盘里的,数学中国的,我们爱数模的,还有买的网课,不过别忘了去图书馆借几本书(高票推荐的书)系统的看看建模,以我整理的顺序开始分享吧。

    谨以此文纪念我的大学建模经历,并且在毕业前夕把我学到的、感悟到的都分享给大家,希望能给大家带去一点点帮助。

     

    建模经历: 大学参加了两次国赛,两次美赛。两次国赛赛区一等奖,美赛一等奖。所以,对于打算入门和刚开始接触数学建模的同学来说我还是希望分享一些自己的体悟,希望对你们有用~。~

     

    一. 关于建模竞赛、报名和参赛:

    这里简要介绍几个比较主流的建模竞赛

    (1)全国大学生数学建模竞赛:国赛一般指的是“高教社”杯数学建模竞赛

    报名:报名时间可能每个大学不太一样,有的大学要先进行校赛预选,大约是在5-6月开始报名,报名请关注学校相关教务处网站、数学学院网站。报名费300元(有的学校会返还报名费来鼓励大家积极参与,获奖的话说不定学校还会给丰厚的奖金呢~~)。以团队报名,每个队伍不超过3人(所以也可以2人或者1人),每队须有一个指导教师。(关于组队的注意事项后面会详细讲到)

    培训:有的学校会在暑假小学期组织建模培训,如果有的话,建议可以去听听~没有培训的话,就自己好好看看呗~

    比赛时间:比赛一般在每年9月中上旬举行,比赛时间是从某个周五的上午8:00开始,为期三天三夜,截止到次周一上午8:00。(关于时间的分配我在后面也会详细讲讲)

    比赛期间:参赛队伍可以在比赛期间利用图书、互联网资料帮助建模,有问题也可以请教老师,原则上不相互交流(原则上......)。本科组比赛有A,B两道题,需要选择其中一道题进行解答。PS:最后AB两题各个奖项数量相同,所以如果选A,B题的分别有7000,3000只队伍,国赛一等奖A,B题分别有20个名额,那么A题的获奖比例和B题是不同的,但是具体选做的人少的还是选容易的要自己斟酌~(关于换题在后面会讲讲)

    比赛提交:提交纸质版给数学学院,并且把论文、数据、程序打包压缩拷贝给相关老师。

    比赛答辩:初审进入国赛获奖名单的队伍需要答辩,每个省的初审进度可能不太一样,有的在9月底就会进行答辩,有的可能10月。答辩开始有一个3-5分钟的概要介绍,每个队伍选一个口齿伶俐的小伙伴上去讲就好。答辩的主要目的是验真,所以只要是自己做的应该没多大问题。答辩可能会问到关于模型、软件或者程序的问题。当然答辩也是可能挂掉的,挂掉了就降档。

    这里附上一个mcm国赛链接:全国大学生数学建模竞赛www.mcm.edu.cn/(然而这个网址可能并没有很多信息...)

     

    (2)美国大学生数学建模竞赛:

    报名:美赛报名比国赛复杂一些...这里我先把美赛官网的网址附上,然后我们再慢慢来说

    附上美国数模竞赛链接:COMAP: Mathematics Instructional Resources for Innovative Educators

    一般在下半年可以开始报名(具体时间忘记了,大约11月左右报名),Contests→Register for Contest(这里需要用指导老师的邮箱来注册,所以需要提前联系老师,确定老师愿意指导,用老师的邮箱号注册,每位老师最多指导2只队伍)。美赛报名费100美元,需要用VISA卡或者MASTER卡支付,如果有队员有当然最好,如果没有就找万能的淘宝吧~

    比赛时间:春节前后(这点很悲剧,也阻碍了很多人参赛,但是相信对于那些勇于放弃春节孜孜不倦投身于建模竞赛的同学们还是值得的),比赛时间四天四夜,早上9:00开始。

    论文提交:在网上提交,并且寄送纸质版到美国。

    没有大便(答辩)!

    奖状发放:大概4月左右网上自己下载获奖证书(大陆同学),对,就一个PDF而已...

    (3)全国统计建模竞赛:两年一次(单数年),比赛形式是在6月30日前提交论文

    (4)电工杯:不熟,sorry

    除此之外,还有什么深证杯、认证杯之类的......

     

    二.建模竞赛的好处:

    理工科的同学就把获奖当成打装备吧,你们懂得,等到快要保研、出国的时候简历上有那么几行还看得过眼的比赛获奖很有用,很有用,很有用(重要的事说三遍)。美赛对出国还是比较有用啦,毕竟还是国际比赛嘛,以前得特等奖的师兄那组去了剑桥大学和斯坦福...虽然特例不代表什么,但是有比没有好撒~

     

    三. 组队

    建模主要分为建模、编程、论文三个部分,但是要完全分开的你会发现人力资源闲置,所以推荐每位队员主攻其中两项左右。所以建议千万千万不要三个数学学院的同学凑一队!!!(如果三个啥子都会的数学大神凑一起也...没有...关系)。组队的时候大家容易发现每个队都想要至少一个数学学院的,然而通常并没有那么多数院的同学,而且数院的同学爱扎堆...有数学学院的同学是好的,但是其实数学学院的同学比其他学院并没有那么多优势...so,其实我自己觉得电气、软件、计算机的同学更好,建的了模,编的了程序,还写的了论文,卖的了萌...

     

    四. 时间分配

    常常有师弟师妹我建模要不要熬夜。当然,有不熬夜的也有取得了好成绩的,但是,大部分人需要熬夜。我想建议大家的是要适度地熬夜...比如前两天每天睡7-8个小时,第三天就熬一熬吧。关于时间分配,建模一般从周五早上8点开始,建议大家在中午之前确定好做A题还是B题,分别去看看哪个题更有思路一些,不要拍脑袋决定~选题很重要!选题很重要!选题很重要!一方面是获奖比例,我前面说过了;另一方面,没选好就要涉及到换题,我后面会再说说。吃完午饭最好就把题目确定下来,接下来下午和晚上把第一个问做出来,然后对第二个问开始着手解决。第二天,周六需要把第二问解决,第三问争取基本解决。第三天,完善,如果有第四问要解决第四问。至少在下午4点左右开始集中写论文,当然,其实从第一天解决第一问开始就要开始着手写论文,粘贴数据什么的,谁闲着谁就去写写论文。当然,时间分配要依据不同队伍的进度来,我只是给出一个参考而已~

     

    五. 换题

    很多同学会遇到“换题危机”,因为周五上午没有选好题,做到一半发现做不动了,就想换题。所以,可以换题,但是建议至少在周六上午之前,不然真的很难完成...

     

    六. 论文模板

    大家最好入手一本优秀论文集

    比如:《数学建模优秀论文精选与点评(2005-2010)》【摘要 书评 试读】

    《数学建模系列丛书:全国大学生数学建模竞赛赛题与优秀论文评析(2005年

    看看别人的论文层次,我还是给出一个粗略的论文模板:

    题目→摘要→模型假设→符号说明→模型的建立→模型的求解→模型评价→仿真测试→模型的推广→参考文献→附录

    你可以按照问题一、问题二、问题三分别来写

    PS:摘要最重要!摘要最重要!摘要最重要!(阅卷老师和答辩老师的大部分时间在看摘要,所以至少花2个小时左右写那短短的不起眼的摘要)模型评价很重要,你的Model好不好请用数据来说明,回带效果和预测效果都很重要。

     

    七. 常用软件和参考书目

    常用软件:Matlab, SPSS, Lingo, (SAS, R)

    除了上面两本优秀论文外,我还推荐以下书籍:(精选了几本,其实还有很多不过估计应该看不完)

    Matlab:用的最多,不解释

    SPSS:统计里面用

    Lingo:解规划问题,比较简单,就不推荐专门的书了

    SAS, R: 统计编程

    推荐书目:

    《MATLAB 在数学建模中的应用(第2版)》【摘要 书评 试读】

    《SPSS统计分析从基础到实践(第2版)(附光盘1张)》(罗应婷)【摘要 书评 试读】

    《数学建模算法与应用(附光盘1张)/普通高等院校“十二五”规划教材》(司守奎,孙玺菁)【摘要 书评 试读】

    我就不推荐姜启源那种书了...

     

    ---------------------------------------------分割线------------------------------------------------------------

    接下来,我想重点写写数模中常用的算法,但是今天应该是写不完了,所以下次再继续写吧~

    八. 算法

    下面我开始PO算法,我在这里只介绍一些比较经典的建模算法和程序,也会在后面介绍一些智能算法,边写边总结边回顾也是极好的~

     

    个人觉得其实没有必要很系统的学很多数学知识,这是时间和精力不允许的。很多优秀的论文,其高明之处并不是用了多少数学知识,而是思维比较全面、贴合实际、能解决问题或是有所创新。
    数学知识

    归结起来大体上有以下几类:
    1)概率与数理统计,什么拟合了回归分析了
    2)运筹学,什么线性规划了
    3)微分方程;
    其实正式比赛的题目有A题B题,貌似大致规律是一道以离散问题优化,另一道以连续问题微分方程为主。所以有时候自己准备的时候可以有侧重。
    还有与计算机知识交叉的知识:计算机模拟或者说数值分析。
    假如完全没有学过,或者只学过一点概率与数理统计,微分方程的知识其实也没关系,可以自学啊,能用最简单浅易的数学方法解决了别人用高深理论才能解决的才是最历害的嘛哈哈
    计算机知识
    其实数学建模还是在于模型,并不是ACM,要多牛X的编程能力。但是一些最基本的还是要回的,matlab,Mathematica等等。程序永远只是辅助你解题的。当然有计算机编程大牛是最好的。其实计算机数据处理,画图啊制表啊还是蛮重要的。
    除了以上两种知识,个人觉得还有论文的写作能力和资料搜索能力。
    写作能力
    数学建模最后交的是论文,文章的书写有比较严格的格式。要清楚地表达自己的想法并不容易,有时一个问题没说清楚就又说另一个问题了。自己以前建模的老师也有参加阅卷的,他们发现格式不行啊,看起来表达不流畅就直接PASS掉了。还有啊那些阅卷老师也都是阅卷前临时培训,他们对题目的理解也很有可能不深的,所以你的论文能否表达清楚就很重要了!
    PS:建模阅卷一篇文章一般有两个老师评分,假如同样一篇论文十分制评分,有的老师评9分,有的老师评2分。然后只好pia啦pia啦各种讨论……而且听去阅卷的老师说,这种情况常发生。
    资料搜索能力
    个人觉得,3个人3天或者4天要解决一个全新的数学建模问题,有时候真的只好现学现用,所以找资料非常重要,能参考前人的思路就参考呗。
    关于学习资料
    去数学建模论坛上找吧,个人觉得最重要的还是看优秀论文或者自己动手试着做做。

                                                

    扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!

    例如:想获得Python入门至精通学习资料,请回复关键词Python即可。

     

    更多相关内容
  • 数学建模模型案例解析-仓库地址选择的图论模型
  • 数学建模模型案例解析-仓库地址选择的图论模型
  • 三维地质模型精度是影响分析结果可靠性的...从钻孔数据的获取、预处理、到选择合适的数据模型以及插值方法,分别指出了在建模过程中影响三维地质模型精度的主要因素;并提出了减小误差、提高地质模型精度的流程以及方法。
  • 作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群。持续系统化给大家分享一下关于数据...2. 数仓建模本质到底是什么?为什么维度建能模脱颖而出? 1.从小公司到大公司看数仓建模发展 ...

           作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群。持续系统化给大家分享一下关于数据仓库建设的经验总结。本系列既有数据仓库的形而上学理论体系,也有结合公司业务的实践,既有大厂如阿里巴巴,京东,头条的分享交流,也有小公司数仓迭代案例的建设分析。感兴趣的小伙伴可以私信交流。

    0.数仓建模系列历史篇章回顾

     1. 先见森林:数据仓库的前世今生与体系框架 

     2. 数仓建模本质到底是什么?为什么维度建能模脱颖而出?

    1.从小公司到大公司看数仓建模发展

            数仓建模到底是什么,你可能看了很多理论知识,面试也知道怎么回答,但是心中还是有很多疑惑。数仓建模/维度建模其实是一整套抽象出来的方法规范体系,发展至今内部细节及其丰富。所以要想透彻了解他,运用它,你可以通过透视他的发展之路,看它是如何抽象总结出来的。这样才能明白当企业什么场景,什么规模,才能应用什么模式,数仓建设到什么程度,而不是照搬大厂或主流的数仓建设体系。

     1.1 小公司的数仓建模之路

           有小伙伴说,数仓建模其实没那么复杂,在我工作中不就是通过hive/spark等工具开发一张张表吗?说直白点就是把公司各个业务系统数据通过调度系统每天定时抽过来,存储到Hive数据仓库里,然后基于这些数据,定时hive/spark等任务跑了很多业务需要的数据,比如报表,比如业务汇总统计数据。最终把这些数据推送到BI报表平台或者业务库。然后日常工作也就是接点新表到数仓,给业务开发一些新表等等这些。

          数仓建模其实没什么高大上的!!!!

         

          我相信很多中小公司的小伙伴也有这些疑惑,现实中很多大数据开发也是这样干的。觉得数仓建模被神话放大了。其实我刚工作时也有这种感觉。但是后来随着去大厂做数据开发,见识了几百PB数据规模,每天几十万个任务的数据仓库。才发现如果还按照之前那套搞法根本行不通。为啥呢?

          规模大的公司,PB级别的数据规模,每天上万个任务,业务快速发展,应用场景繁杂且多变,数据时间要求严格,每天新增数据TB级别,几万张甚至几十万张表,跨部门跨子公司开发人员多,大家如何保障统计的数据一致,如何复用数据降低计算成本等等这些问题,如何解决这些问题?这时候你会发现,数据仓库不仅仅是一张张表了,而是一个有着完整体系架构和规范的系统,而是一个系统化的方法体系,一个随着业务的发展,需求增加的不断丰富完善的方法体系。

    1.2 大厂的数仓建设之路

            没有哪家公司上来就是王炸四带二开局的,所有公司数仓的建设也都是跟随业务的发展逐步完善的。有需求有应用场景才会有对应的解决方案,而逐步解决这些问题,解决这些需求过程中总结的成熟规范,方法,架构合起来就是一套数仓建设方案国内如阿里巴巴就抽象出了一套自己的方法体系---OneData。当然它也是以Kimball的维度建模为核心理念基础的模型方法论,同时对其进行了一定的升级和扩展,才构建了阿里集团的数据架构体系——OneData

          因为大厂的头部效应,像阿里巴巴的onedata体系就是国内很多公司数据仓库建设的的参考标杆。如下阿里巴巴OneData体系以及建模过程:

    尖叫提示:

          如上OneData体系以及数仓建模过程,可谓及其完善但实施起来也很繁琐。对于Alibaba这样海量数据规模,复杂业务场景,庞大开发人员的企业来说,通过这些约束规范的流程,“浪费”人力成本来保障数据质量,最终数学期望值最高。

           但是所以对于很多小伙伴来说,没有经历过大厂的开发,去学习大厂完善的数仓建设体系会有所有种“脱离实际的感觉”,有形而上学的嫌疑。毕竟国内95%以上的公司也达不到阿里巴巴这样的数据规模和要求,当然也完全没必要搞这套,不划算。

           所以我后面讲数仓建设,维度建模都是抓住本质核心去讲,更多细节没法办法一一展开,因为对于很多公司没用应用场景。所以大家学数仓建设,维度建模只需要抓住Killball大神的核心理念基础即可,其他的旁枝末节知道即可。

     2.维度建模核心剖析与实践

    2.1.维度模式设计主要四个步骤

    1. 选择业务过程
    2. 声明粒度
    3. 确认维度(也有叫标识维度)
    4. 确认事实(也有叫标识事实)

           前面说到数仓建模的本质,以及维度建模的四个步骤,对于维度建模来说其他所有的细节都是围绕这四个过程展开的。看上去这四个过程很抽象,其实几乎每个大数据开发小伙伴都经历过,只是大家不识庐山真面目,只缘生在此山中。

          其实几乎每个大数据开发都搞过数仓建模,维度建模!

          举个例子,即使你在一家小公司里,每天的工作就是用hive/spark开发一张张表,业务方需要啥数据给他计算啥数据。但其实数仓建模就藏在你开发的过程中,比如业务让你给他统计个数据,建个报表。下面我们来还原一下你建表开发前做了哪些事。

    1. 第一步:业务得告诉你开发口径吧,选择统计你们公司的什么数据?哪个业务的数据?甚至精确到哪个业务哪个过程的数据?是公司某个商品的每天交易数据?还是新增会员的信息?统计什么?好吧,我们假设业务最终告诉你统计公司A产品某个过程的浏览人数 。这其实就是维度建模的选择业务过程
    2. 第二步:前面业务告诉你统计什么业务数据。那么你还得知道他要统计的数据是按天统计明细,还是按周统计汇总,这样你建表时表里一行存放什么数据,加工什么粒度的数据得知道哇,比如业务要的是每天的交易明细,那你表里存放的数据每行粒度就是天。这个确认数据粒度的过程其实就是声明粒度。
    3. 第三步:前面业务告诉你统计公司哪个业务线哪个业务过程的数据。也告诉你是按天统计数据,每天给他出数据。但你还得知道按什么维度统计,浏览人数是PV分析,还是按UV分析,还是业务既要UV,也要PV,也要按手机号统计浏览人数。这个其实就是你最终数据的分析维度,从哪些角度分析,是从一个维度分析还是同时多个维度一起分析。这个就是数仓建模的确认维度。
    4. 第四步:上面这些都确认清楚了,分析哪个业务/过程的数据,分析的粒度是按天还是周,分析的维度有哪些。那么最后你就要考虑的是如何建表了,也就是事实表的建设。根据前面三个要求建设对应的表,通过hive/spark等生产对应的数据到表里。最后业务就可以通过使用你提供的事实表和维表进行关联,查看数据了。(当然也有很多人直接将维度退化到事实表中,省去了关联维表的机会。这个后面在说)。这个过程其实就是数仓建模的确认事实

    尖叫总结:看,是不是我们在无形中完成了数仓粗放型的维度建模,只是大家没有察觉而已这里我们简单地跟大家介绍了维度建模demo版,其实也是维度建模的核心基础了。

    3.维度建模:过程拆解与案例演示

         假设我们有一个电信数据源,获取的是手机连接基站等信息的数据,数据是每隔1小时上传一次。现在业务方需要通过手机连接基站的信息情况,分析一下用户手机类型,用户主要分布在哪个城市,用户运营商分类情况,挖掘一下用户工作地,居住地等情况,甚至用户性别等信息做用户画像。

      TABLE `base_station_info`(
      `serdatetime` string COMMENT '服务器时间标准时间戳(13位数字)', 
      `ipaddr` string COMMENT '客户端源IP', 
      `type` string COMMENT '数据类型', 
      `plat` string COMMENT '系统平台', 
      `device` string COMMENT '设备标示', 
      `carrier` string COMMENT '运营商编码', 
      `simopname` string COMMENT '运营商名字:联通,电信,移动,铁通,..', 
      `lac` string COMMENT '基站lac', 
      `datetime` string COMMENT '客户端时间(经过服务端时间矫正标准时间戳(13位数字', 
      `mac` string COMMENT '设备Mac地址', 
      `model` string COMMENT '设备型号', 
      `duid` string COMMENT 'DUID(新版设备标示)', 
      `imei` string COMMENT '设备IMEI手机串号', 
      `serialno` string COMMENT '手机序列号', 
      `networktype` string COMMENT '网络类型', 
      `processtime` string COMMENT '服务器时间', 
      `product` string COMMENT '产品线', 
      `psc` int COMMENT 'UMTS的主要扰码', 
      `lat` int COMMENT '基站纬度', 
      `lon` int COMMENT '基站经度', 
      `nearby` array<map<string,int>> COMMENT '邻区基站信息列表', 
      `language` string COMMENT '手机语言', 
      `cl` map<string,string> COMMENT '安卓缓存的GPS信息,安卓获取缓存经纬度', 
      `strategy_id` string COMMENT '定向调频的策略Id', 
      `moid` string COMMENT '匿名设备标识符,取值deviceinfo表oaid字段的值', 
      `appkey` string COMMENT '应用的key', 
      `apppkg` string COMMENT '应用的包名', 
      `appver` string COMMENT '应用的版本号', 
      `sysver` string COMMENT '系统版本号', 
      `factory` string COMMENT '设备的厂商', 
      `commonsdkver` string COMMENT '公共库的版本号', 
      `token` string COMMENT '唯一ID', 
      `data_network_type` string COMMENT '蜂窝网络类型', 
      `dc` int COMMENT '1为离线包,2为Maven线上包,3为定制包,4为MDC版本,6为GP版本', 
      `useridentity` string COMMENT '请求头')
    

     3.1.选择业务过程

            如上,开始建模前我们需要考虑自己有哪些数据源,数据的情况,以及业务方的需求,然后决定对哪种业务过程开展数据建模。这里业务方想通过手机基站连接信息分析用户情况,做用户画像。因此这里我们建模的业务过程是手机基站连接信息。

    3.2声明粒度

          上面我们知道我们的数据源的粒度是小时级别,数据是每小时更新上传一次。基本数据越详细,粒度越小获取的事实就越多,可以分析的东西也就越多。原子粒度的数据具有更强大的多维性。比如按小时粒度的数据我就可以按小时,天,周,月汇总统计。但是按天的粒度的数据,可以上卷按天,周月统计,但是没法下钻按小时类别聚合了,所以一般为了防止业务变更需求,尽可能的话可以选择原子粒度的数据。这里我们就选择原子粒度的数据。

    3.3确认维度

         数据粒度选择完以后,维度可以的选择空间也就固定了下来,维度的选择就很简单了。为什么呢?因为数据的详细粒度确认了事实表可以分析的主要维度。比如上面我们确认数据粒度以后,可以分析的维度也就是表里字段的度量值。比如运营商分类,手机类型分类,网络类型,当然具体看业务需要哪些分析维度,因为不需要分析的维度我们完全不用存放这些数据,浪费计算和存储空间等等。

    3.4 确认事实

          所谓的确认事实,其实就是我们根据业务分析的需求,分析的数据粒度,数据分析的维度决定了最终我们要把哪些数据放到事实表,也就是我们模型(建表)里存放哪些了事实(字段)要确认好,因为你不可能所有字段都保留着,浪费资源。然后基于事实表模型进行建设开发。

            基于前面3个过程和业务确认后 ,最终我们事实表存储的字段如下,然后我们开始开发事实表中的数据。注意如下,要求我们的事实表中的数据都可以按照如下6大维度进行汇总统计(可加事实),否则事实表设计的就有问题,后续详细展开。

           总结一下,所谓确认事实,首先确认需要将哪些事实放到事实表中。其次就是确认最终数据模型。注意,我这里为了简单举例,事实表的字段没有进行过复杂加工,只是做了一些简单的数据清洗,比如数据格式的清洗,数据的归类转换,时间格式的统一等等。后面在介绍挖掘聚合类数据建模。

    尖叫总结:

          维度建模4个步骤,简单演示了一下。重点是让大家体会维度建模是如何抽象出来的,以及四个步骤为啥是环环相扣,递进式的关系。后面我们继续展开维度建模。

    展开全文
  • 仓库地址选择的图论模型 草地水量问题的数学模型 草坪浇灌系统最优设置 产品的零件安装程序设计 超级市场的最佳经营方案 车灯线光源的优化设计 车灯线光源的优化设计模型 城市快速交通线票价的优化模型 出版...
  • 数据仓库常见建模方法与大数据领域建模实例综述

    千次阅读 多人点赞 2021-05-01 14:01:51
    为什么需要数据建模? 为什么要进行数据仓库建模? 随着DT时代互联网、智能设备等信息技术的发展,数据开始井喷式的增长,如何讲这些数据进行有序、有结构地分类组织存储是我们面临的一个挑战。 如果把数据看作图书...

    大家好,我是云祁,好久不见~

    今天来和大家聊聊数仓常见的一些建模方法和具体的实例演示,一起来看看吧。

    一、为什么需要数据建模?

    在开始今天的话题之前,我们不妨思考下,到底为什么需要进行数据建模?

    随着从IT时代到DT时代的跨越,数据开始出现爆发式的增长,这当中产生的价值也是不言而喻。如何将这些数据进行有序、有结构地分类组织存储,是我们所有数据从业者都要面临的一个挑战。

    如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置,而不是乱糟糟的堆砌在一起。

    大数据的数仓建模正是通过建模的方法,更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点,一般我们会从以下面四点考虑:

    • 性能:能够快速查询所需的数据,减少数据I/O的吞吐。
    • 成本:减少不必要的数据冗余,实现计算结果的复用,降低大数据系统中的存储成本和计算成本。
    • 效率:改善用使用数据的体验,提高使用效率。
    • 质量:改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的、一致的数据访问平台。

    因此,毋庸置疑,大数据系统、数据平台都需要数据模型方法来帮助更好的组织和存储数据,数据建模的工作,也正是围绕上述四个指标取得最佳的平衡而努力。

    二、从 OLTP 和 OLAP 系统的区别看模型方法论的选择

    OLTP系统通常面向的主要数据操作是随机读写,主要采用3NF的实体关系模型存储数据,从而在事务处理中解决数据的冗余和一致性问题。

    OLAP系统面向的主要数据操作是批量读写,事务处理中的一致性不是OLAP所关注的,其主要关注数据的整合,以及在一次性的复杂大数据查询和处理的性能,因此它需要采用不同的建模方法,例如维度建模。

    如果大家想进一步了解 OLAP系统,可以学习这篇文章: 关于OLAP数仓,这大概是史上最全面的总结!

    三、典型的数据仓库建模方法论

    数据仓库本质是从数据库衍生出来的,所以数据仓库的建模也是不断衍生发展的。

    从最早的借鉴关系型数据库理论的范式建模,到逐渐提出维度建模等等,越往后建模的要求越高,越需满足3NF、4NF等。但是对于数据仓库来说,目前主流还是维度建模,会夹杂着范式建模。

    数据仓库建模方法论可分为:E-R模型、维度模型、Data Vault模型、Anchor模型。

    3.1 E-R模型

    将事物抽象为“实体”、“属性”、“关系”来表示数据关联和事物描述,这种对数据的抽象建模通常被称为E-R实体关系模型。

    数据仓库之父 Bill Inmon 提出的建模方法,从全企业的高度设计一个3NF模型,用实体关系(Entity Relationship)模型来描述企业业务,满足3NF。

    数据仓库的3NF与OLTP系统中的3NF的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体的业务流程。

    采用 E-R模型建设数据仓库模型的出发点是整合数据,对各个系统的数据以整个企业角度按主题进行相似的组合和合并,并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。

    作为一种标准的数据建模方案,它的实施周期非常长,一致性和扩展性比较好,能经得起时间的考验。但是随着企业数据的高速增长、复杂化,数仓如果全部使用E-R模型进行建模就显得越来越不适合现代化复杂、多变的业务组织,因此一般只有在数仓底层ODS、DWD会采用E-R关系模型进行设计。

    E-R建模步骤分为三个阶段:

    • 高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述企业的业务总体概况。
    • 中层模型:在高层模型的基础上,细化主题的数据项。
    • 物理模型(底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。


    E-R模型在实践中最典型的代表是 Teradata 公司基于金融业务发布的 FS-LDM (Financial Services Logical Data Model ),它通过对金融业务的高度抽象和总结,将金融业务划分为10大主题,企业基于此模型适当调整和扩展就能快速实施落地。

    3.2 维度模型

    维度模型是数据仓库领域 Ralph Kimball 大师倡导的,是数据仓库工程领域最流行的数仓建模经典。

    维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。

    其中典型的代表就是使用星型模型,以及在一些特殊场景下使用的雪花模型。

    其设计主要分为以下几个步骤:

    1. 选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前账户的余额;还有就是一系列相关业务事件组成的业务流程,具体需要我们分析的是某些事件发生的情况,还是当前状态,或是事件流转效率。
    2. 选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。
    3. 识别维表。选择好粒度之后,就需要基于这个粒度来设计维表,包括维度属性,用于分析时进行分组和筛选。
    4. 选择事实。确定分析需要衡量的指标。

    在 Ralph Kimball 提出对数据仓库维度建模,我们将数据仓库中的表划分为事实表、维度表两种类型。

    针对维度建模中事实表和维度表的设计,之前有详细介绍过,感兴趣的同学可以看:维度建模技术实践——深入事实表维度建模的灵魂所在——维度表设计

    在这里,我就以常见的电商场景为例:在一次购买的事件中,涉及主体包括客户、商品、商家,产生的可度量值会包括商品数量、金额、件数等。

    事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表等。

    1. 事务事实表:用于承载事务数据,任何类型的事件都可以被理解为一种事务,比如商家在交易过程中的常见订单、买家付款,物流过程中的揽货、发货、签收,退款中的申请退款。
    2. 周期快照事实表:快照事实表以预定的间隔采样状态度量,比如自然年至今或者历史至今的下单金额、支付金额、支付买家数、支付商品件数等等状态度量。
    3. 累计快照事实表:数据不断更新,选取多业务过程日期。用来记录具有时间跨度的业务处理过程的整个过程的信息,每个生命周期一行,通常这类事实表比较少见。

    我们继续就上述的电商场景,聊聊在维表设计时需要关注的一些东西:

    1. 缓慢变化维度:例如会员表的手机号、地址、生日等属性。
    2. 退化维度 :订货单表的订单编号、物流表的物流编号等。
    3. 雪花维度:满足第三范式的维度关系结构。
    4. 非规范化扁平维度:商品维表众中产品、品牌、类目、品类等。
    5. 多层次维度:地区维度的省、市、区县,商品的类目层级。
    6. 角色维度:日期维度在物流中扮演发货日期、送货日期、收获日期等不同角色。

    接下来就是针对维度建模按照数据的组织类型,可以划分为星型模型、雪花模型、星座模型。

    1. 星型模型:星型模型主要是维表和事实表,以事实表为中心,所有维度直接关联在事实表上,呈星型分布。


    2. 雪花模型,在星型模型的基础上,维度表上又关联了其他维度表。这种模型维护成本高,性能方面会差一些。


    3. 星座模型,是对星型模型的扩展延伸,多张事实表共享维度表。实际上数仓模型建设后期,大部分维度建模都是星座模型。

    简单总结下就是:

    1. 星型模型和雪花模型主要区别就是对维度表的拆分。
    2. 对于雪花模型,维度表的涉及更加规范,一般符合3NF,有效降低数据冗余,维度表之间不会相互关联。
    3. 星型模型,一般采用降维的操作,反规范化,不符合3NF,通过利用冗余来避免模型过于复杂,提高易用性和分析效率,效率相对较高。

    3.3 DataVault 模型

    Data Vault 是 Dan Linstedt 发起创建的一种模型,它是 E-R 模型的衍生,其设计的出发点也是为了实现数据的整合,但不能直接用于数据分析决策。

    它强调建立一个可审计的基础数据层,也就是强调数据的历史性、可追溯性和原子性,而不要求对数据进行过度的一致性处理和整合。

    同时它基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型,以应对源系统变更的扩展性。 Data Vault 型由以下几部分组成:

    1. Hub - 中心表:是企业的核心业务实体,由实体 Key、数仓序列代理键、装载时间、数据来源组成,不包含非键值以外的业务数据属性本身。
    2. Link - 链接表:代表 Hub 之间的关系。这里与 ER 模型最大的区别是将关系作为一个独立的单元抽象,可以提升模型的扩展性。它可以直接描述 1:1、1:2和n:n的关系,而不需要做任何变更。它由 Hub的代理键、装载时间、数据来源组成。
    3. Satellite - 卫星表:数仓中数据的主要载体,包括对链接表、中心表的数据描述、数值度量等信息。

    Data Vault 模型比 E-R 模型更容易设计和产出,它的 ETL 加工可实现配置化。我们可以将 Hub 想象成人的骨架,那么 Link 就是连接骨架的韧带,而 SateIIite 就是骨架上面的血肉。

    3.4 Anchor 模型

    Anchor 对 Data Vault 模型做了进一步的规范化处理,它的核心思想是所有的扩展只是添加而不是修改,因此将模型规范到6NF,基本变成了 k-v 结构化模型。

    1. Anchors :类似于 Data Vault 的 Hub ,代表业务实体,且只有主键。
    2. Attributes :功能类似于 Data Vault 的 Satellite,但是它更加规范化,将其全部 k-v 结构化, 一个表只有一个 Anchors 的属性描述。
    3. Ties :就是 Anchors 之间的关系,单独用表来描述,类似于 Data Vault 的 Link ,可以提升整体模型关系的扩展能力。
    4. Knots :代表那些可能会在 Anchors 中公用的属性的提炼,比如性别、状态等这种枚举类型且被公用的属性。

    由于过度规范化,使用中牵涉到太多的Join操作,这里我们就仅作了解。

    四、总结

    以上为四种基本的建模方法,目前主流建模方法为: E-R模型、维度模型。

    E-R模型通常用于OLTP数据库建模,应用到构建数仓时就更偏向于数据整合,站在企业整体考虑,将各个系统的数据按相似性一致性、合并处理,为数据分析、决策服务,但并不便于直接用来支持分析。

    维度建模是面向分析场景而生,针对分析场景构建数仓模型;重点关注快速、灵活的解决分析需求,同时能够提供大规模数据的快速响应性能。针对性强,主要应用于数据仓库构建和OLAP引擎低层数据模型。

    数据仓库模型的设计是灵活的,不会局限于某一种模型,需要以实际的需求场景为导向,需要兼顾灵活性、可扩展性以及技术可靠性及实现成本。

    我是「云祁」,一枚热爱技术、会写诗的大数据开发猿,欢迎大家关注呀!

    Respect ~

    展开全文
  • 维度建模方法论

    千次阅读 2022-02-11 15:20:21
    维度建模方法 一、前言 本人学习《数仓工具箱》的学习总结,纯学习分享,供大家参考。 二、经典数仓架构理论 围绕着维度建模,那就不得不了解,早期的数据仓库构架方法。这里介绍一下两个经典的数仓架构理论。 2.1...

    维度建模方法

    一、前言

    本人学习《数仓工具箱》的学习总结,纯学习分享,供大家参考。


    二、经典数仓架构理论

    围绕着维度建模,那就不得不了解,早期的数据仓库构架方法。这里介绍一下两个经典的数仓架构理论。

    2.1、Kimball模式

    在这里插入图片描述

    Kimball 模式从流程上看是是自顶向下的,即从数据集市到数据仓库再到数据源(先有数据集市再有数据仓库)的一种敏捷开发方法。对于Kimball模式,数据源每每是给定的若干个数据库表,数据较为稳定但是数据之间的关联关系比较复杂,须要从这些OLTP中产生的事务型数据结构抽取出分析型数据结构,再放入数据集市中方便下一步的BI与决策支持。所以KimBall是根据需求来确定需要开发ETL哪些数据。

    2.2、Inmon模式

    在这里插入图片描述

    Inmon 模式从流程上看是自底向上的,即从数据源到数据仓库再到数据集市的(先有数据仓库再有数据市场)一种瀑布流开发方法。对于Inmon模式,数据源每每是异构的。这里主要的数据处理工作集中在对异构数据的清洗,包括数据类型检验,数据值范围检验以及其余一些复杂规则。在这种场景下,数据没法从stage层直接输出到dm层,必须先经过ETL将数据的格式清洗后放入dw层,再从dw层选择须要的数据组合输出到dm层。在Inmon模式中,并不强调事实表和维度表的概念,由于数据源变化的可能性较大,须要更增强调数据的清洗工作,从中抽取实体-关系。immon是将整个数据仓库规划好,统一按照范式建模进行开发。

    参考:深入对比数据仓库模式:Kimball vs Inmon

    三、维度建模步骤

    3.1、设计企业服务总线

    需要调查业务过程以及业务过程所涉及的公共维度。比如零售商从订单到库存到零售这些业务过程中所涉及到的公共维度用一个矩阵进行统计,梳理这些的过程中,也对总体业务流程有概要的了解。

    在这里插入图片描述

    3.2、选择业务过程

    业务过程通常用行为动词表示,如:获取订单、开具发票、接收付款,注册账号、处理索赔等。维度建模是紧贴业务的,所以必须以业务为根基进行建模,那么选择业务过程,顾名思义就是在整个业务流程中选取我们需要建模的业务,根据运营提供的需求及日后的易扩展性等进行选择业务。比如商城,整个商城流程分为商家端,用户端,平台端,运营需求是总订单量,订单人数,及用户的购买情况等,我们选择业务过程就选择用户端的数据,商家及平台端暂不考虑。业务选择非常重要,因为后面所有的步骤都是基于此业务数据展开的。

    3.3、声明粒度

    先举个例子:对于用户来说,一个用户有一个身份证号,一个户籍地址,多个手机号,多张银行卡,那么与用户粒度相同的粒度属性有身份证粒度,户籍地址粒度,比用户粒度更细的粒度有手机号粒度,银行卡粒度,存在一对一的关系就是相同粒度。为什么要提相同粒度呢,因为维度建模中要求我们,在同一事实表中,必须具有相同的粒度,同一事实表中不要混用多种不同的粒度,不同的粒度数据建立不同的事实表。并且从给定的业务过程获取数据时,强烈建议从关注原子粒度开始设计,也就是从最细粒度开始,因为原子粒度能够承受无法预期的用户查询。但是上卷汇总粒度对查询性能的提升很重要的,所以对于有明确需求的数据,我们建立针对需求的上卷汇总粒度,对需求不明朗的数据我们建立原子粒度。

    3.4、确认维度

    维度表是作为业务分析的入口和描述性标识,所以也被称为数据仓库的“灵魂”。在一堆的数据中怎么确认哪些是维度属性呢,如果该列是对具体值的描述,是一个文本或常量,某一约束和行标识的参与者,此时该属性往往是维度属性,牢牢掌握事实表的粒度,就能将所有可能存在的维度区分开,并且要确保维度表中不能出现重复数据,应使维度主键唯一

    3.5、确认事实

    可以通过回答“业务过程的度量是什么?”这一问题来确定事实。事实表是用来度量的,基本上都以数量值表示,事实表每行的数据是一个特定级别的细节数据,称为粒度。维度建模的核心原则之一是同一事实表中的所有度量必须具有相同的粒度。这样能确保不会出现重复计算度量的问题。有时候往往不能确定该列数据是事实属性还是维度属性。记住最实用的事实就是数值类型和可加类事实。所以可以通过分析该列是否是一种包含多个值并作为计算的参与者的度量,这种情况下该列往往是事实。

    四、维度建模设计技巧

    4.1、使用代理键代替自然键作为维度表主键

    自然键:就是充当主键的字段本身具有一定的含义,是构成记录的组成部分,比如学生的学号,除了充当主键之外,同时也是学生记录的重要组成部分。

    代理键:就是充当主键的字段本身不具有业务意义,只具有主键作用,比如自动增长的ID。

    使用代理键的优点:

    • 为数据仓库缓冲源系统的变化。例如:账号闲置一年就会重新分配给新用户,如果用账号作为数据主键,则原账号数据就会被覆盖丢失;如果用代理键作为维度主键,那么可以对账号的变化赋予新的代理键以作区分。
    • 集成多个源系统。可以通过引用映射表将多个自然键连接成一个公共的代理键。

    4.2、缓慢变化维度处理方法

    类型0:不做任何处理
    案例:用户在使用产品之前是有注册动作的,大部分产品都会让用户填写出生年月之类的属性信息,当然用户有可能是瞎写的,在未来的某个时间点可能想把这个出生信息给重新修改,站在分析的角度上,我们通常是使用第一次注册的数据,或者是使用身份证上的信息为准。那么对于这种持久型的标识符通常是不做任何处理的。
    适用场景:这种处理手段适用于我们只关心第一次维度属性值的场景下,后续变化的值都认为是无效的。
    类型1:重写覆盖
    案例:在实际的业务过程中,用户是会更换手机号或者更改用户名的,那么站在分析的角度上来看,通常是只关心最新的数据,所以针对这种场景,我们可以采取覆盖的方式来解决,比如小明把用户名称改为小小明,那么从数据角度上来看的就变成了如下的方式:

    在这里插入图片描述

    适用场景:这适用于只关心最新数据的场景下,不需要关心属性历史信息变化;不用投入过多的etl成本,维护也比较简单
    类型2:增加新行
    案例:虽然重写覆盖的手段比较简单,但是其缺点也很明显,那就是我们没有办法分析历史变化的数据了,特别是像手机号这类的数据变更,是完全有必要把每次的变更记录保留下来,特别是对于风控业务,利用手机号通过图谱关系结合欺诈规则来拦截羊毛党、团伙欺诈等黑产。针对这类场景,我们可以采用新增记录的方式来解决。如下图所示,通过增加新行并分配新的代理键来保留维度的历史变化数据。

    在这里插入图片描述

    适用场景:该方案也是比较简单的一种处理方式,而且保留了历史信息变化的数据;但是该种方式在每变更一次就会新增一条记录,整个维表就会随着时间推移其数据也会越发膨胀,只要有一个维度发生变化,都会新增一行记录(当然一个维表里可以只对某几个属性变更采用类型2)
    类型3:增加新列
    案例:维度属性每次发生一次变更,我们通过新增一条记录的方式来保留历史数据,但其缺点也比较明显。对于数据量比较大的维度表来说,采用类型2就有些笨拙了,特别是对于属性指标分组的分析场景下就不太适用新增行记录的方式了。比如按照性别分组来分析活跃占比的时候,如果突然有一天的占比和历史分析结果相差比较大的时候,那么就需要定位判断是否有大量的属性变更的情况存在,针对这种情况可以采用新增列的方式来保留上一个变更版本的记录。如下图所示:

    在这里插入图片描述

    适用场景:避免了因为信息变化而新增记录造成数据膨胀的情况;而且可以允许保留一部分版本的变化,很多书籍中大多是新增一个当前列和上一次变化的列值,当然也可以多搞几个字段来保存多个版本,但不会把所有版本的数据都保留下来,而且如果维度信息比较多的话,那么字段就会变得非常多(比如表里有5个维度属性,需要保留3个版本,那这个表的字段数就会扩充到15个),所以这种处理手段很少用到,只适用于可以预测到变化而且不会分析过多版本的场景下(比如本案例中的男女占比分析)。
    类型4:微型维度
    案例:微型维度大概意思就是说对于变化比较快的维度(这个时候已经超出了缓慢变化的定义了)抽离出来形成一张单独的维表,那么抽离出来的这个维度表就被称为“微型维度”,说白了其实就是从大维表里把几个变化比较快的维度拿出来形成一个小的维度表(相对于原有维度来说确实是一个小维表)。比如在画像的场景中,我们通常会基于用户的收入属性运用一些规则定一个收入级别,并对用户打上一些标签,比如用户是属于高收入,高消费,还是属于低收入,高消费人群。通常收入属性可以说是变化比较频繁的(不要抬扛,特别是像拿提成的岗位收入本身就不是固定的),如果直接放在基维表(基础维度表,可以理解成主维表)的话就会不太合适了。所以采用微型维度,将收入级别这类变化比较快的维度抽离出来单独搞一个小型维。这样一搞的话,就解决了基维表数据一旦变化就会新增记录的问题了。因为微型维度是框定了范围,在范围内的变化,都对应的同一个范围值,比如小明的年龄从20岁变化到22岁对应的微型维度代理键还是03。而且将维度维度代理键代替年龄范围、收入水平、消费水平三个快速变化的维度,在原有维表上减属性。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/f8918b4397f648f7a7fb52ac03ec7e7d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5riF6aOO5ZKM5pyI5piO,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
    适用场景:维度快速变化的情况,需要维护主表中对应的微型维度代理键

    参考:建模之旅:你以为的SCD

    4.3、树状结构数据处理

    有些涉及多层级数据处理,比如对财务各级组织的相关指标计算。这就需对多层级数据处理。如下图,模拟的是集团中的组织架构,举例:怎么计算7和7所有的下属机构对应的月营收收入?

    在这里插入图片描述

    这里可以建立多层级组织关系桥接表,如下图。通过这个桥接表来筛选出7的所有下属机构。

    在这里插入图片描述

    展开全文
  • 数据库建模

    2022-04-02 14:14:47
    数据库建模 2021-4-24 课程笔记 0. mind 1. 基本概念 本小节内容仅做一些基本概念的介绍 1.1 实体集 ①实体 即客观事实存在的事物或对象,是一个名词 例:学生,教师,书等实际客观存在的事物;也可以是一门课...
  • Kimball维度建模

    千次阅读 2022-01-04 17:47:26
    最简洁的语言描述维度建模的理论和流程
  • 维度建模的优缺点

    千次阅读 2021-05-04 18:21:58
    在维度建模方法体系中,维度是描述事实的角度,如日期、商品、地址等,事实是要度量的指标,如用户数、销售额等。 维度建模是将层次化的数据结构展开为单一层次,构建出来的数据库结构表更加符合人的直觉、易于被人...
  • 数据建模初入门笔记

    千次阅读 2021-12-23 22:48:59
    班级成绩案例之大数据分析相关矩阵热图柱状图直方图散点图UCI 肿瘤数据集之大数据分析准备阶段数据集模型训练预测结果UCI观影数据集之大数据分析...准备工作数据清洗探索可视化特征工程基本建模和评估炼丹集成方法预测...
  • 如何从零开始准备数学建模竞赛?

    千次阅读 2021-12-15 21:55:26
    离2022年的数学建模美赛越来越近啦,大家都准备的怎么样呢?在前面的推文中,岛主为大家介绍了一些含金量高、值得参加的数学建模赛事(戳此处可见该期推文),随后也为大家全面地解析了在比赛中脱颖而出需要哪些方面...
  • 数仓维度建模实例

    千次阅读 2022-04-14 17:35:25
    本文将介绍维度建模理论,基于自己经验的实施步骤 数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据.... 只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低...
  • 风控建模

    千次阅读 2020-12-21 15:21:11
    1 风控建模流程 1 评分卡简介 贷前 申请评分卡 Application score card 贷中 行为评分卡 Behavior score card 贷后 催收评分卡 Collection score card A B逾期的客户是正样本 C 能够被内催催回来的客户 2 机器...
  • 谈谈领域建模

    千次阅读 2020-10-09 11:00:57
    这篇文章总结了我对领域建模的看法和方法论,也相当于汇总了各位大师对领域建模的不同思想。   领域建模的目标,是解决复杂业务中软件开发的一系列问题。领域建模也是实现这个目标的一条路径,一种方法论。在实践.
  • 美团威胁建模

    千次阅读 2021-04-10 14:46:06
    对美团安全团队来说,引入领先的安全技术设计能力,构建全方位、维度智能防御体系,是我们不懈追求的目标。美团有众多基础设施,核心业务系统也需要以成熟的方法论进行威胁评审。本文将着重分享威胁建模是如何帮助...
  • 本篇笔记对数学建模中常见的目标规划问题提供了解法:在建立传统的目标规划的常用模型的基础上,使用智能优化算法对目标规划问题进行求解,通过Pareto Front直观展现非劣解的分布情况,以解决传统的目标规划...
  • 金融风控评分卡建模全流程!

    千次阅读 2021-03-08 00:14:15
    qcut和cut的区别是,qcut是根据这些值的频率来选择箱子的间隔,以实现尽量每个分箱里的样本一样。而cut是手动给定分箱阈值。 我们定义需要 qcut的变量: RevolvingUtilizationOfUnsecuredLines DebtRatio ...
  • 第三章:3ds max多边形建模

    千次阅读 2021-11-08 20:59:16
    但是,对于建模来讲,使用的修改器并不。我们经常使用“可编辑多边形”和“修改器”两种方式共同完成复杂模型的创建工作。 模型是由三角形组成的,也就是点,线,面三种基本结构组成。如果我们想要通过一种灵活的...
  • 精华-IoT威胁建模

    千次阅读 2021-07-08 11:27:37
    一般来说,设备中包含的攻击面越,被入侵的可能性就越大。所以,攻击面其实就是进入IoT设备的入口点。有些IoT设备或应用在设计开发时默认信任这些入口点。但是所发现的攻击面都有与之相关联的入侵风险、入侵概率...
  • Hive_数据建模工具EZDML

    2021-08-19 17:36:56
    1. 下载地址 http://www.ezdml.com/download_cn.html 2. 使用说明 (1)新建模型 (2)命名模型 (3)点击图标,选中模型 (4)导入数据库 (5)配置数据库连接 (6)选择导入的表(标注红点的表...
  • UML建模

    千次阅读 2020-11-17 10:59:44
    UML建模图实战笔记 一、前言 UML:Unified Modeling Language(统一建模语言),使用UML进行建模的作用有哪些: 可以更好的理解问题 可以及早的发现错误或者被遗漏的点 可以更加方便的进行组员之间的沟通 支持面向...
  • 数据挖掘与建模流程

    千次阅读 2022-03-04 18:24:07
    今天给大家分享一下关于数据挖掘建模的流程,这是小编在书里看到的,分享给大家,这样以后做事有头有尾,有据可循,包括定义目标、数据采集及取样、数据探索、数据预处理、建立数学模型、模型评价。
  • 数学建模笔记——评价类模型(一)

    万次阅读 多人点赞 2020-08-22 08:32:37
    ok,废话不说,直接开始啦~ 这套课程由清风老师讲解,文章末尾有其公众号及试听课地址。该课程主要讲解了十个模型,并讲解了相应的常用算法,今天就学习一下第一个模型——评价类模型吧。 简介 评价类模型应该是最...
  • Python小白的数学建模课-02.数据导入

    千次阅读 多人点赞 2021-05-27 17:20:13
    『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人。 1. 数据导入是所有数模编程的第一步 编程求解一个数模问题,问题总会涉及一些数据。 有些数据是在题目的文字描述中给出的,有些数据是通过题目的附件...
  • GemPy三维地质建模工具包

    千次阅读 2021-01-15 02:40:40
    Github的项目地址是最新版本2.0.0,该项目迭代很快,目前还在快速发展之中,有时候网上的一些例子可能接口变化,会出现运行错误。该工具包具备创建复杂地质模型的能力,可以实现层序特征和结构特征的地质模型构建...
  • 2022五一数学建模C题思路分享

    千次阅读 2022-05-01 17:53:58
    ②当某一建筑内个火灾探测器的机号与回路编号相同时且这些探测器均发出火灾报警信号,则认为是同一起火灾事故 ③地址编码是建筑,用户编码可以看成其中的房间或者区域 第一问,首先根据附件1确定该城市6月1日至6...
  • 【游戏开发创新】自学Blender建模,自制孔明灯,在Unity中点亮整个星空,愿新年,胜旧年(Unity | 建模 | 粒子系统 | 预设)
  • 第十九届五一数学建模竞赛说明 五一数学建模竞赛官网:http://51mcm.cumt.edu.cn/bjjs/list.htm 第十九届五一数学建模竞赛资料获取:2022五一数学建模资料获取 第十九届五一数学建模竞赛资料获取:2022五一数学建模...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,248
精华内容 17,299
关键字:

多地址选择建模