关于数学建模的一个问题。已知一间大学阶梯教室尺寸的相关数据,通过建模,求

作者:陈丹奕
今天要说内容是建模。为啥我作为一个数学能力并不强的人要在这献丑讲建模的事呢?其实我的目的很简单,就是为了告诉大家一个事实:数据分析中的建模,并没有想象中那么高深莫测,人人都有机会做出自己的模型。
第一部分:数据建模理论和逻辑
一、从数据分析的定义开始
维基百科对数据分析的定义如下:
Analysis of data is a process of inspecting, cleaning, transforming, and modeling data with the goal of discovering useful information, suggesting conclusions, and supporting decision making. Data analysis has multiple facets and approaches, encompassing diverse techniques under a variety of names, in different business, science, and social science domains.
(来源:)
简单翻译:数据分析是一个包含数据检验、数据清洗、数据重构,以及数据建模的过程,目的在于发现有用的信息,有建设性的结论,辅助决策的制定。数据分析有多种形式和方法,涵盖了多种技术,应用于商业、科学、社会学等多个不同的领域。
和上篇文章中我画的图对比一下:
我在上篇文章中为了让初学者更容易走通全流程,简化了数据清洗的过程,实际上数据清洗绝非一次完成,“检验-清洗-检验”的过程可能会重复数次乃至数十次。
而建模呢?再次引用维基上对数据建模的定义:
Data modeling is a process used to define and analyze data requirements needed to support the business processes within the scope of corresponding information systems in organizations. Therefore, the process of data modeling involves professional data modelers working closely with business stakeholders, as well as potential users of the information system.(来源:)
简单翻译:数据建模是一个用于定义和分析在组织的信息系统的范围内支持商业流程所需的数据要求的过程。因此,数据建模的过程需要专业建模师与商业人员和信息系统潜在用户的紧密合作。这段话的定义更偏向信息系统和商业数据建模,我之所以在此引用这段话,是为了明确接下来的讨论内容主要方向是商业数据分析和建模,至于科学研究方向的数据建模,不在这篇文章的讨论范围以内。
请注意上边这段话中的一个核心:支持商业流程。商业数据建模,乃至商业数据分析,其最终目的都是要支持某种商业流程,要么优化原有流程,提高各部分效率;要么重构原有流程,减少步骤;要么告诉决策者,哪些流程改造方向是错误的,以避免走错路。最终的目标,一定是提升效率。但在不同的情况下,提升效率的方式也是不同的,因此在每个模型建立时,都需要确定其解决的具体目标问题。
再往前走一步,数学—主要是统计学,在建模的过程中又扮演什么样的角色呢?继续引用维基:
Mathematical formulas or models called algorithms may be applied to the data to identify relationships among the variables, such as correlation or causation. In general terms, models may be developed to evaluate a particular variable in the data based on other variable(s) in the data, with some residual error depending on model accuracy (i.e., Data = Model + Error)(来源:)
简单翻译:数学公式或模型称为算法,可应用于数据以确定变量之间的关系,如相关性或因果关系。在一般情况下,模型开发出来后用于评估一个特定的变量与数据中其他其他变量的关系,根据模型的准确性不同,这些关系中会包含残差(即,数据=模型+错误)
这段描述很明确,统计学在数据建模的过程中,主要用于帮助我们找出变量之间的关系,并对这种关系进行定量的描述,输出可用于数据集的算法。一个好的数据模型,需要通过多次的测试和优化迭代来完成。
综上,给出一个我认为的“数据建模”定义:数据集+商业目标+算法+优化迭代= 数据建模。定义中的每一部分都必不可少。
二、数据模型的建立过程
照例,先上流程图:
上图的流程颜色对应数据分析全流程,为了方便大家阅读,我把全流程图再贴一次:
接下来,我重点解读明黄色(浅黄?)部分的内容:
选择变量与重构变量
在进行建模之前,首先要考虑的是使用哪些变量来建立模型,需要从业务逻辑和数据逻辑两个方面来考虑:
业务逻辑:变量基于收集到的数据,而数据在收集时,会产生与业务层面相关的逻辑,比如在汽车参数中,一旦我们定义了“家用轿车”这个类别,那么无论什么品牌什么车型,“轮胎数量(不计备胎)”这个变量就有99%以上几率为4……当然在接下来的建模中,我们不会选择这个变量。这一类情况是业务知识来告诉我们哪些变量可以选择,哪些不能选择。
数据逻辑:通常从数据的完整性、集中度、是否与其他变量强相关(甚至有因果关系)等角度来考虑,比如某个变量在业务上很有价值,但缺失率达到90%,或者一个非布尔值变量却集中于两个值,那么这个时候我们就要考虑,加入这个变量是否对后续分析有价值。
我个人认为,在选择变量时,业务逻辑应该优先于数据逻辑,盖因业务逻辑是从实际情况中自然产生,而建模的结果也要反馈到实际中去,因此选择变量时,业务逻辑重要程度相对更高。
而在变量本身不适合直接拿来建模时,例如调查问卷中的满意度,是汉字的“不满意”“一般”“满意”,那么需要将其重构成“1”(对应不满意)“2”(对应一般)“3”(对应满意)的数字形式,便于后续建模使用。
除这种重构方式之外,将变量进行单独计算(如取均值)和组合计算(如A*B)也是常用的重构方法。其他的重构方法还有很多种,在此不一一阐述。
我们在建模时,目标是解决商业问题,而不是为了建模而建模,故此我们需要选择适合的算法。常用建模算法包括相关、聚类、分类(决策树)、时间序列、回归、神经网络等。
以对消费者的建模为例,举一些场景下的常用算法对应:
划分消费者群体:聚类,分类;
购物篮分析:相关,聚类;
购买额预测:回归,时间序列;
满意度调查:回归,聚类,分类;
确定算法后,要再看一下变量是否满足算法要求,如果不满足,回到选择/重构变量,再来一遍吧。如果满足,进入下一步。
算法选定后,需要用数据分析工具进行建模。针对不同的模型,需要调整参数,例如聚类模型中的K-means算法,需要给出希望聚成的类别数量,更进一步需要给出的起始的聚类中心和迭代次数上限。
这些参数在后续测试中会经过多次调整,很少有一次测试成功的情况,因此请做好心理准备。
加载算法与测试结果
算法跑完之后,要根据算法的输出结果来确定该算法是否能够解决问题,比如K-means的结果不好,那么考虑换成系统聚类算法来解决。或者回归模型输出的结果不满足需求,考虑用时间序列来做。
如果不需要换算法,那么就测试一下算法输出的结果是否有提升空间,比如聚类算法中指定聚类结果包含4类人群,但发现其中的两类特征很接近,或者某一类人群没有明显特征,那么可以调整参数后再试。
在不断的调整参数,优化模型过程中,模型的解释能力和实用性会不断的提升。当你认为模型已经能够满足目标需求了,那就可以输出结果了。一个报告,一些规则,一段代码,都可能成为模型的输出。在输出之后,还有最后一步:接收业务人员的反馈,看看模型是否解决了他们的问题,如果没有,回到第一步,再来一次吧少年……
以上,就是建模的一般过程。如果你有些地方觉得比较生涩,难以理解,也没有关系。下一篇专栏中,我将向你们介绍一个具体的数据模型,我会对建模的过程一步步进行拆解,力求简明易懂。
第二部分:数据建模的应用
我写了个建模的流程,有过建模经验的人自然懂,没有经验的各位也不要着急,这次我以一个真实模型为例,给大家详细讲述建模的各个步骤。照例,先上流程图:
大家可以看到,这个图是由我之前文章中的两张图拼合而来,而我今天讲的这个真实模型,将把图中所有的流程都走一遍,保证一个步骤都不漏。
Step 0:项目背景
话说这个项目跟我加入百度有直接关系……
2013年的最后一天,我结束了在三亚的假期,准备坐飞机回家,这时候接到一个知乎私信,问我对百度的一个数据科学家(其实就是数据分析师啦)职位是否感兴趣,我立刻回信,定了元旦假期以后去面试。两轮面试过后,面试官——也是我加入百度后的直属Leader——打电话给我,说他们对我的经历很满意,但是需要我给他们一份能体现建模能力的报告。
按说这也不是一件难事,但我翻了翻电脑后发现一个问题:我从上家公司离职时,为了装13,一份跟建模相关的报告文件都没带……最后双方商定,我有一个星期时间来做一份报告,这份报告决定了我是否能加入百度。
那么,是时候展示我的技术了!我的回合,抽卡!
Step 1:目标确定
看看报告的要求:
数据最好是通过抓取得来,需要用到至少一种(除描述统计以外)的建模技术,最好有数据可视化的展示
看来是道开放题,那么自然要选择一个我比较熟悉的领域,因此我选择了……《二手主机游戏交易论坛用户行为分析》
为啥选这个呢?你们看了我那么多的Mario图,自然知道我会选主机游戏领域,但为什么是二手?这要说到我待在国企的最后半年,那时候我一个月忙三天,剩下基本没事干,因此泡在论坛上倒卖了一段时间的二手游戏……
咳咳……总之,目标就确定了:分析某二手主机游戏交易论坛上的帖子,从中得出其用户行为的描述,为用户进行分类,输出洞察报告。
Step 2:数据获取
简单来说,就是用python写了个定向爬虫,抓了某个著名游戏论坛的二手区所有的发帖信息,包括帖子内容、发帖人信息等,基本上就是长这个样子:
(打码方式比较简单粗暴,请凑合看吧……)
Step 3:数据清洗
这个模型中的数据清洗,主要是洗掉帖子中的无效信息,包括以下两类:
1、论坛由于其特殊性,很多人成交后会把帖子改成《已出》等标题,这一类数据需要删除:
2、有一部分人用直接贴图的方式放求购信息,这部分体现为只抓到图片链接,需要删除。
数据清洗结束了么?其实并没有,后边会再进行一轮清洗……不过到时再说。
Step 4:数据整理
用上面的那些帖子数据其实是跑不出啥结果的,我们需要把数据整理成可以进一步分析的格式。
首先,我们给每条帖子打标签,标签分为三类:行为类型(买 OR 卖 OR 换),目标厂商(微软 OR 索尼 OR 任天堂),目标对象(主机 OR 游戏软件)。打标签模式是”符合关键词—打相应标签“的方法,关键词表样例如下:
(主机掌机那个标签后来我在实际操作时没有使用)
打完标签之后,会发现有很多帖子没有打上标签,原因有两种:一是关键词没有涵盖所有的产品表述(比如三公主这种昵称),二是有一部分人发的帖子跟买卖游戏无关……
这让人怎么玩……第二次数据清洗开始,把这部分帖子也洗掉吧。
其次,我们用发帖用户作为视角,输出一份用户的统计表格,里边包含每个用户的发帖数、求购次数、出售次数、交换次数、每一类主机/游戏的行为次数等等,作为后续搭建用户分析模型之用。表格大概长这个样子:
之后这个表的列数会越来越多,因为数据重构的工作都在此表中进行。
整理之后,我们准备进行描述统计。
Step 5 & 6:描述统计 & 洞察结论
描述统计在这个项目中的意义在于,描述这一社区的二手游戏及主机市场的基本情况,为后续用户模型的建立提供基础信息。
具体如何进行统计就不说了,直接放成品图,分别是从各主机市场份额、用户相互转化情况、地域分布情况进行的洞察。
Step 7 & 8:选择变量 & 选择算法
因为我要研究的是这些用户与二手交易相关的行为,因此初步选择变量为发帖数量、微软主机拥有台数、索尼主机拥有台数、任天堂主机拥有台数。
算法上面,我们的目标是将用户分群,因此选择聚类,方法选择最简单的K-means算法。
Step 9 & 10:设定参数 & 加载算法
K-means算法除了输入变量以外,还需要设定聚类数,我们先拍脑袋聚个五类吧!
(别笑,实际操作中很多初始参数都是靠拍脑袋得来的,要通过结果来逐步优化)
看看结果:
第一类别的用户数跟总体已经很接近了,完全没有区分度啊!
Step 7‘ & 8’ & 9‘ & 10’ & 11:选择变量 & 选择算法 &设定参数 & 加载算法 &重构变量
这一节你看标题都这么长……
既然我们用原始值来聚类的结果不太好,那么我把原始值重构成若干档次,比如发帖1-10的转换为1,10-50的转换为2,依次类推,再聚一次看看结果。
哦哦!看上去有那么点意思了!不过有一类的数量还是有一点少,我们聚成四类试试:
哦哦,完美! 我们运气不错,一次变量重构就输出了一个看上去还可以的模型结果,接下来去测试一下吧。
Step 12:结果测试
测试过程中,很重要的一步是要看模型的可解释性,如果可解释性较差,那么打回重做……
接下来,我们看看每一类的统计数据:
这个表出来以后,基本上可以对我们聚类结果中的每一类人群进行解读了。结果测试通过!
Step 13 & 14 & 15:输出规则 & 模型加载 & 报告撰写
这个模型不用回朔到系统中,因为仅仅是一个我们用来研究的模型而已。因此,输出规则和模型加载两步可以跳过,直接进入报告撰写。
聚类模型的结果可归结为下图:
眼熟不?在我的第二篇专栏文章 中,我用这张图来说明了洞察结论的重要性,现在你们应该知道这张图是如何得来的了。
撰写报告的另外一部分,在描述统计-洞察结论的过程中已经提到了,把两部分放在一次,加上背景、研究方法等内容,就是完整的报告啦!
最后附送几张各类用户发帖内容中的关键词词云图:
那么,这篇文章就到此结束了,最后的最后,公布一下我做这份报告用到的工具:
大家可以看到,要当一个数据分析师,要用到很多类别的工具,多学一点总是没有坏处的,在此与大家共勉。
转载请注明来自36大数据(): &
除非特别注明,本站所有文章均不代表本站观点。报道中出现的商标属于其合法持有人。请遵守理性,宽容,换位思考的原则。求问,用什么模型可以使用一个月的数据,估计出下一个月的数据_数学建模吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:93,459贴子:
求问,用什么模型可以使用一个月的数据,估计出下一个月的数据收藏
2月的总库存量,各品牌的库存量已知(分层随机抽样调查出来的),什么样的模型可以预计三月份的库存量?
找工作要英文简历?毕业论文要英文摘要?国外客户沟通困难?试试人工翻译!
自己顶,求帮忙
一个月不够吧,
预测问题应该用预测方法吧,动态规划?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或老是会提到建模, 软件建模什么的。
因为不是计算机专业的,做这个还真有点累。
非常感谢!
相关信息工程的建模和数学建模不是一个感念,楼上先生对数学建模的解释很好,我就不多说了.
软件工程的建模是要把一个现实应用问题表述成一个软件问题,核心有两点,就是明确这个应用的数据是什么?对这些数据如何进行处理(也叫操作).
建模的过程在软件工程中叫做“需求分析”。
建模的结果要形成两个技术文档,需求分析说明书和需求规格说明书。
建模的模型化方法有多种,针对具体的应用问题可以采取不同的方法,常用的有数据流图、统一建模UML方法等。现在普遍采用的是UML方法。
建模的软件工具有VISIO等。Visio是和微软的开发平台Visual Studio .Net一起发布的大概是其中第七块盘,网上搜索Visio可以找到D版软件下来玩玩,支持多种建模方法,还有案例。
建模的目的是要得到软件系统设计的基本要素:数据流图、数据字典;或者,用例、类图、状态图等,并且为下一步的系统设计奠定基础。
简而言之:软件建模的概念就是从一个应用问题开始,经过建模过程得到系统设计所需要的资料和数...
相关信息工程的建模和数学建模不是一个感念,楼上先生对数学建模的解释很好,我就不多说了.
软件工程的建模是要把一个现实应用问题表述成一个软件问题,核心有两点,就是明确这个应用的数据是什么?对这些数据如何进行处理(也叫操作).
建模的过程在软件工程中叫做“需求分析”。
建模的结果要形成两个技术文档,需求分析说明书和需求规格说明书。
建模的模型化方法有多种,针对具体的应用问题可以采取不同的方法,常用的有数据流图、统一建模UML方法等。现在普遍采用的是UML方法。
建模的软件工具有VISIO等。Visio是和微软的开发平台Visual Studio .Net一起发布的大概是其中第七块盘,网上搜索Visio可以找到D版软件下来玩玩,支持多种建模方法,还有案例。
建模的目的是要得到软件系统设计的基本要素:数据流图、数据字典;或者,用例、类图、状态图等,并且为下一步的系统设计奠定基础。
简而言之:软件建模的概念就是从一个应用问题开始,经过建模过程得到系统设计所需要的资料和数据,这些资料和数据体现在叫做《需求规格说明书》的技术文档里面。
如果还不清楚,请和我联系。这个问题在大学里是一个学期的课程。
其他答案(共2个回答)
前,先把这个软件的模型建立起来。这和其它学科中的建模其实是一个意思。
偶引用个例子,你看看就明白了!什么叫建模,数学建模等等等!
数学建模竞赛,就是在每年叶子黄的时候(长沙的树叶好像一年到头都是绿的)开始的一项数 学应用题比赛。大家都做过数学应用题吧,不知道现在的教育改革了没有,如果没有大变化, 大家都应该做过,比如说[树上有十只鸟,开枪打死一只,还剩几只],这样的问题就是一道数学应用题(应该是小学生的吧),正确答案应该是9只,是吧?这样的题照样是数学建模题, 不过答案就不重要了,重要的是过程。
真正的数学建模高手应该这样回答这道题。
“树上有十只鸟,开枪打死一只,还剩几只?”
“是无声手枪或别的无声的枪吗?”
“不是。”
“枪声有多大?”
“80-100分贝。”
“那就是说会震的耳朵疼?”
“在这个城市里打鸟犯不犯法?”
“不犯。”
“您确定那只鸟真的被打死啦?”
“确定。”
“OK,树上的鸟里有没有聋子?”
“没有。”
“有没有关在笼子里的?”
“没有。”
“边上还有没有其他的树,树上还有没有其他鸟?”
“没有。”
“有没有残疾的或饿的飞不动的鸟?”
“没有。”
“算不算怀孕肚子里的小鸟?”
“不算。”
“打鸟的人眼有没有花?保证是十只?”
“没有花,就十只。”
“有没有傻的不怕死的?”
“都怕死。”
“会不会一枪打死两只?”
“所有的鸟都可以自由活动吗?”
“完全可以。”
“如果您的回答没有骗人,打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩。”
不是开玩笑,这就是数学建模。从不同的角度思考一个问题,想尽所有的可能,正所谓的智者 千虑,绝无一失,这,才是数学建模的高手。然后,数学建模高手的搭挡----论文写作高手( 暂称为写手吧),会把以上的思想用最好的方式表达出来。 一般的写手会直接把以上的文字放到论文里就成了。但是专职的数学建模论文的写手不会这样 做,她们会先分析这些思想,归整好条理;然后,她们会试着用图画来深入浅出的表达这些思想,或者再使用一些表格;这些都是在Word中进行,当然,如果有不喜欢Microsoft的朋友 或是国粹主义者喜欢用WPS什么的当然也可以。她们都是这一行的专家,相信Word什么的使用技巧,都够她们写一篇论文的了。她们不一定会打字,但是输入公式的速度确是一流的。她 们一定会用一种画图软件,不管是Visio还是SmartDraw,她们都会用来明确而清晰的表达自己的思想。 好了,有了思想,也有了表达思想的人,还少一样东西----实现。屈原老哥就有那么多的怀 疑与问题,作为数学建模竞赛的评委当然也不是好骗的,不会那么容易的相信高手们的话。所以要一个编程高手实现之(暂称为程序员吧)。就上面所说的问题,程序员会编一个仿真的程 序,实现以上所有的情况。这个程序是这样子的,他对以上所提的每一个选项提供了选择接口,比如说,我们可以选择枪的声音的分贝数,可以从80到100分贝调节,或者干脆从0到200d b均可,调节方式是无级变速方式,当然,电脑太慢,在遍历的时候可能要指定步长,嘿嘿,所以,最好买个好电脑,CPU一定不要用赛扬的,要用奔腾的,另外,为了程序员的安全,还 要用液晶的显示器,要有UPS不间断电源,要有健康的座椅.....哈哈,扯远了。仿真程序会尽一切可能按实际所限制的条件遍历所有的情况,看一看还剩下几只bird。 当然,这也不是实践。真的做的绝的,会跑去烈士公园做实验,当然得拿一把枪,可以拿塑料 子弹枪。烈士公园离我们学校(路过就读于东点军校)很近,就在南门嘛。那儿有一个地方养了很多鸽子。虽然不能保证刚好10只鸽子,也不能保证刚好都在树上,但也可以将就着做实 验,然后根距实验条件做一些修正。哈哈,这样就完美了....把实践结果与仿真结果、理论结果做比较,再修改理论、仿真程序、论文,再做实验、做仿真,再比较,再修改,递归到时 间的完结。
数学建模就是用数学语言描述实际现象的过程。这里的实际现象既包涵具体的自然现象比如自由落体现象,也包涵抽象的现象比如顾客对某种商品所取的价值倾向。这里的描述不但包...
数学建模就是用数学语言描述实际现象的过程。这里的实际现象既包涵具体的自然现象比如自由落体现象,也包涵抽象的现象比如顾客对某种商品所取的价值倾向。这里的描述不但包...
最早出现的软件工程模型是线性模型(又称瀑布模型)。线性模型太理想化,太单纯,已不再适合现代的软件开发模式,几乎被业界抛弃。
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区}

我要回帖

更多关于 大学阶梯教室尺寸 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信