数据科学 扯白了说就是拿到数据后,如何最有效利用这些数据去解决一个问题,使用数据来解决一个实际问题的学问就称之为数据科学。
数据科学主要牵扯到这几个方面:
(1)数据获取:主要利用爬虫和数据库技术找到和存储数据。
(2)数据处理:识别出脏数据、填充空缺数据、将数据形式进行转化成模型能接受的输入。
(3)特征工程:根据原始数据【原始数据每一项称为一个特征】挖掘处理出对预测任务更直接、有重要作用的特征。
(4)模型学习:根据已有的特征来构建特征和目标之间的数学建模关系,对于不同的任务,根据任务和数据的特点,我们会选取不同的模型,为了产生一个可以起作用的模型,比如用于区分猫和狗图片的模型,我们需要的数据是很多张猫或者狗的图片和对应的标签(图片是猫还是狗),这样不断让模型学习图片中动物对应的种类,会不断进行参数矫正,最后得到有一定区分能力的模型。
针对一个具体任务,怎么能得到较好的预测结果呢?针对这个问题,两大关键问题是数据和模型,必须同时保证两个,其中数据比模型更为重要。一个好的数据就算使用较差的模型也能得到比较好的效果,而在较差的数据下再好的模型也是无能为力的。
那么从本质进行思考呢?预测任务的本质就是通过模型利用数据学习到一个x1、x2....与y之间的因子式,其中x1、x2就是我们所称的特征,进一步的针对数据我们又可以针对数据量和特征进行考虑,两者又是需要同时进行保障的,好的特征是我们能够构建出优质式子的保障,但特征并不追求数量,使用10个关键特征往往要比1000个普通特征起到更好的效果,而造特征这个问题需要很大的功底,包括了解业务知识、较好的特征筛选、细致的数据探索,另一方面较大的数据量则是模型泛化能力的保障。
数据科学的三大要素:数据、数据处理方案、模型。
数据就是我们做任务的依据,用来让模型从这些数据中学习积攒经验,这就像人脑一样,人脑的联想和思考往往不是空穴来分,而是通过有所识,有所闻这样的积攒,能在遇到相似情况是知道相似的解决方案。
在数据科学任务中,数据往往是最宝贵的,一方面获取过来难(数据是大公司的优势),另一方面能够找到高质量的数据也难,因为自然产生的数据,往往会有很多脏、假数据,会对我们模型的学习进行干扰,误导我们的模型,所以有效的数据处理方案是十分必要的。
数据科学经常面对的数据主要是三大类数据:基本数据,文本数据、图像数据,这三类数据只是预测的依据,可以在一种任务里面相互组合。
1.第一类数据包含字符型、数值型,是很规范的我们能整理成表格的数据,比如在空气质量预测任务(预测PM10)中,我们就可以将与空气质量相关的因素组织成表格,来帮助我们的预测任务,如以下表格中包含了数值型数据、字符型数据(什么样的天气)。我们的思想就是把这样的与空气质量相关的因素作为预测的依据让一个模型去学习,学习(所谓学习就是让构建很复杂的数学公式,把各因素当做x1,x2,x3...,自己初始设定可调节的权值w,让算法通过不断调节w参数计算找到x和y之间的公式关系)到遇到这样的因素数值时,PM10应该是什么样的数值情况。
参数 |
|
类型 |
单位 |
|
污染因素 |
PM2.5 |
N |
ug/m2 |
|
|
O3 |
N |
ug/m3 |
|
|
NO2 |
N |
ug/m2 |
|
|
CO |
N |
ug/m3 |
|
|
SO2 |
N |
ug/m3 |
|
气象因素 |
temperature |
N |
℃ |
|
|
pressure |
N |
hpa |
|
|
humidity |
N |
% |
|
|
wind_direction |
N |
— |
|
|
wind_speed/kph |
N |
m/s |
|
|
weather |
C |
— |
举几个只用基本数据做预测任务的例子:如房价预测、电厂发电量预测、商店销售额预测、银行用户贷款能否按期归还预测,可以看到预测可以做的事情多种多样,是一个数值。
2.第二大类数据是文本数据,我们对文本数据的处理任务有一个统称叫NLP(自然语言处理),NLP中常常接触的数据类似于下面的格式,可以看到下面就是一堆文本,可以发现这样的数据跟能组织成表格形式的数据最大的特点,是文本中的每一个单词并没有独自的意义,其包含的含义具有上下文关系,即当前词与前一个词和后一个词有很强的依赖关系,模型只有知道一个词的上下文关系才能知道对这样的词包含的含义。
对这样的文本形式是不能直接放到模型中学习的,因为模型的输入必须是数值型的,所以需要将下面这样的文本做很多预处理工作、以及字符转成数字的操作,并且因为文本数据具有上下文相关性,所以我们会用与表格数据不同的模型对其进行学习。
使用上面的文本数据,我们可以做很多很炫的任务:智能机器人对话、翻译系统、自动做乐曲、自动写诗词、自动写文章等
3.第三类数据是图像数据,比如下面的图像,这样的图像本质上是由很多网格点组成,是从0-255的色素值,如黄色的块就对应了下面的色素值矩阵,整体下来,整个图像就是一个非常大的矩阵,矩阵中包含许多的数值,拿到这样的数值我们就可以将其输入到模型中,让模型从这些图像去做一些任务,比如给出很多猫和狗的图像让模型学习去区别出猫和狗(模型的输入是图像和对应的图片标签)。
用于图像数据,我们能够做很多事情,比如CV(计算机视觉)相关的任务还包括,图像识别、生成图像、图像标注等