算法讲解 | 百变的数据与数据收集方法

优采云 发布时间: 2022-07-02 13:24

  算法讲解 | 百变的数据与数据收集方法

  数模趣谈

  ——阿蜂助力之算法教程

  今日简介

  主要内容:什么是数据?怎么从茫茫网络里找到你最需要的数据?

  难度评价:

  全文字数:约4000

  阅读时长:16min

  *

  写在开头:

  其实这一篇不能算是严格意义上的算法,但我认为很有必要在算法模块里去谈一谈关于数据处理的事儿,因为在数学建模的绝大部分过程中都绕不开“数据”这个坎儿,但是对于初学者来说,往往具有以下三个方面的问题:

  1. 概念混淆不清。数据处理、数据分析、数据清洗等等词汇杂乱无章,让人摸不着头脑

  2. 学习资料杂乱。百度很多资源,但是对于建模学习的初学者来说,有时候并不需要很专业的数据处理手段,但我们只需要学习自己最合适的那部分,往往找不到学习途径的精准定位。

  3. 难以学以致用。建模初学者在学习了一定数据处理手段之后拿到新的案例不知道如何下手分析。

  什么是数据

  我在进行有关数据之前的学习之前,一直认为,把在excel里有一堆数构成一个二维矩阵,行和列都有自己的名称和意义,这样的东西就叫数据了,比如这样的:

  但是后来在学习过程中发现,这种类型数据只不过冰山一角,更多类型的数据是这样的:

  还有的是这样的:

  甚至有的是这样的:

  这些能叫数据吗?当然能。

  我们在刚开始一定要分清楚两个概念:数据、大数据。

  很多人建模中都会遇到一个问题:找不到数据。找不到数据怎么办?编数据。从此便开始在编数据这条路上愈走愈远,无法自拔。我觉得出现这样的问题的原因很可能就是把数据与大数据这两个概念混淆了。

  先说说什么叫大数据。按照我自己的理解,在数学建模中有这样一类题目——大数据分析题,在这种题目中官方一般会给出excel文件里面内含几千组几万组数据,题目的每个问题都要求分析数据的某一种特征并进行综合评价,我觉得这样的数据我们就可以把他们叫做大数据,即便数据可能只有几百条我们也可以暂时这样分类。

  再谈谈什么叫一般意义上的数据。比赛题目中经常会出现这样一个问题:请收集相关数据,并对XX做分析/预测。往往是这样的题目在收集数据上会给人带来很大困扰。相关数据中“相关”这个词很神奇,似乎所有的东西都可以往上考。于是乎大家就开始上各种内网外网找数据,希望也能得到一个类似题目中给出的那样的excel表格里面有自己想用的东西,但是花了几天时间,发现一无所获,就开始瞎编了。其实这个数据不是没办法获得,只是途径不对。善于寻找数据的人往往喜欢用“爬数据”这个词,什么是爬,就很有学问了,我们在后面再进行介绍,这里就不多啰嗦了。

  什么是数据分析

  就我个人看来,在数学建模中,数据分析包含以下五个步骤:

  1.建模分析

  2.数据收集

  

  3.数据预处理

  4.数据分析

  5.数据可视化

  建模分析

  为什么说数据分析的第一步反而是建模分析呢?其实这里的建模分析更准确地说是需求信息识别。在进行数据分析之前,我们首先考虑的应该是“为什么要展开数据分析?我要解决什么问题?从哪些角度分析数据才系统?用哪个分析方法最有效?这个最有效的方法他需要哪些类型的数据?这些数据是不是可以获取的?如果这些数据不可获取那么可以用哪些数据来代替”,如果你在查找数据之前不进行这样的工作,导致的结果必然是像一头无头苍蝇一样到处看文献看资料但两三天下来一无所获,这就是没有精准定位造成的。我们建模,不是要把梳子卖给和尚,而是要找到哪些人真正需要梳子并卖出高价。

  就拿最近的深证杯A题来具体,题目是这样的:

  1、通过收集相关数据、建立数学模型,量化地评价深圳市的人才吸引力水平,并尝试就深圳“加大营商环境改革力度若干措施”对人才吸引力水平的影响做出量化评价。

  2.针对具体人才类别,给出有效提升人才吸引力的可行方案。

  (获取深圳杯A题题目内容以及相关解题思路请微信公众号后台回复“深圳杯A题”)

  题目在第一问中已经明确告诉我们要收集相关数据来评价深圳市人才吸引力水平。很多人在后台问,”找不到数据怎么办”。我觉得这个题目的数据相对而言已经算比较好找的了,找不到数据很大的可能是因为找数据的方向出了问题。有个同学试图找被深圳市吸引来的人比如年龄、收入、*敏*感*词*等信息,但是我觉得从这方面考虑的话基本上是不会有结果的,因为这些数据根本不存在,即便存在也不会公布。为什么?这涉及到个人隐私政府机密的事情,我觉得以一个正常大学生的水平是无法获知这些信息的,而比赛方也肯定不会想让我们从这个角度来解题。那什么东西是我们可以找到的呢?深圳市每年引入不同人才给予的待遇或者奖励我们是很容易获知的。我们登陆深证市人力资源和社会保障局的官网(该部门负责深圳市人才招聘),即可看到18年及历届人才招聘详则:

  更简单方便地,我们打开手机微信直接搜索:深圳人才引进,就会出了很多篇内容贴合主题的推文,比如下面这篇:

  数据是什么?就是这个里面的600万元、300万元等等。结合题目要求评价人才吸引力水平,既然是评价水平高低那么就应该想到两个方面,一是指标,二是对比。

  指标——要衡量的方面是哪些?补助、住房、科研条件、发展前景亦或是其他方面,然后再将其量化,并确定哪个指标在哪种类型的人才中的比例是怎么样的。

  对比——相对于其他城市而言,深圳市给出的各个指标的值是怎么样的,将搜索中的“深圳”换成其他城市诸如“广州”、“重庆”、“上海”等即可,选取5/6所城市将各项指标数据罗列对比,选取一种综合评价方法进行评价即可。

  说到这里,如何对上述结果进行评价?还是需要数据的支撑,这次我们找的就是吸引人才的结果了,比如下面这样:

  同样在找到其他城市的类似数据,结果评估结果来说明模型的好坏。

  看到这里你是否明白为什么第一条是建模分析了呢。总而言之,我们心里一定要对即将搜集的数据有一个清晰的定位,想清楚这种数据是否会存在?我们又是否真正需要这样的数据?数据量不一定大,但是一定要精一定要准。

  数据收集

  严格意义上来说数据收集是一个需要进行行业细分的行为,针对不同的行业有着同的数据收集手段,今天我在这里讲的是几种针对各大行业以及大部分数模比赛比较通用的数据收集手段,在进行实际数据收集时务必要注意数据所在的行业,看是否有更高效可靠的数据收集方法。

  第一种:常用公开数据库

  对于部分类型的数据,如农业、商业、天气、人口、资源、环境、教育、语言、医疗等等涉及到国家甚至世界其他各国等公开数据是可以在各种公开数据库查询的到的,且这些数据量大、按年份排布,因此一般都是以表格或者数据库形式呈现,方便下载,现将部分数据库罗列如下:

  国家数据,中国国家统计局的数据公布平台

  大数据导航 各种数据网站的入口

  世界银行公开数据免费并公开获取世界各国的发展数据

  世界主要城市CAD图

  The home of the U.S. Government’s open data 美国的开放数据库

  Health Care

  ~enron/ Email Datasets

  

  ~delve/data/datasets.html University of Toronto

  Datasets publicly available on Google BigQuery

  DATASETS

  Global climate data

  第二种 网络爬虫

  网络爬虫有以下几种形式:

  1.批量型网络爬虫:限制抓取的属性,包括抓取范围、特定目标、限制抓取时间、限制数据量以及限制抓取页面,总之明显的特征就是受限;

  2.增量型网络爬虫(通用爬虫):与前者相反,没有固定的限制,无休无止直到抓完所有数据。这种类型一般应用于搜索引擎的网站或程序;

  3.垂直网络爬虫(聚焦爬虫):简单的可以理解为一个无限细化的增量网络爬虫,可以细致的对诸如行业、内容、发布时间、页面大小等很多因素进行筛选。

  网络爬虫的基本原理是按照一定的规则(模拟人工登录网页的方式),自动抓取网络上内容的程序。也就是说数据爬虫能做的事儿就是方便的把一些我们能在网络上搜索到的信息快速高效地“爬下来”。举个简单的例子,比如说我们要爬取某个城市所有火锅店的位置、评价、人均消费等数据,那么我们首先点开大众点评按照所需要的信息进行搜索,如下图所示:

  可以看出每一家店的每一项信息我们都是可以知晓的,但是条数过多,每页10条,共有50页:

  如果想在短时间内把这些信息都依靠手工一条条记录下来显然是不现实,因此我们就需要利用爬虫软件对这些信息进行整理,我这里采用了爬虫软件后将这些信息用excel导出,结果呈现如下:

  这些数据共有700多条,在设置好爬虫软件后一共用了4分钟左右就完整地爬下来了,是不是很神奇呢?

  在这里给大家推荐两款比较好用的网络爬虫软件,优采云采集器和优采云采集器,操作方便、上手门槛低、可以导出成Excel等表格文件,一、两个小时就可以学会啦。

  但是这两款软件都只能爬取一些像上述例子中一样简单的数据,但是比如想爬取网易云音乐评论这样复杂的东西,就只能采用一个神器——python了,但是python语言学起来还算比较复杂,不像前两款软件那么简单粗暴,大家学有余力的话可以去多尝试一下,如果大家有需要的话,我在后面的学习教程里也可以加一些关于python的学习教程。

  第三种 简单搜索与图像处理

  以上两种方法介绍的都是一些能批量采集数据的方法,但是对于有些题目有些行业上述方法却是行不通的,需要我们另取手段,例如某一道建模题目是这样的:预测股市上某个公司股价的变化趋势。想做预测就必须知道历史数据,然后根据历史数据通过一些数学建模手段做预测。

  很显然用前面两种方法是无法得到这样的数据的,但是我们可以从股交所的版面上或许他们历史变化的曲线,如下图:

  把图像上每个点对应成横纵坐标即可得到这样的数据啦,如果想更加快捷精准,可以采用matlab中图像处理部分对图像进行处理挑出所需要曲线然后获取每个点的坐标即可。

  还有另外一种类型的数据,例如想要获取历年油价信息,那么可以从新闻中获取,如:

  本节课阿蜂的讲述就到此为止了

  下期我们将继续为大家讲解

  数据的处理与分析

  你在数模的荒原行走

  阿蜂愿做你的摆渡人

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线