【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

微软高级数据科学家教你如何做数据科学

  • 2016-04-08
  • 本文字数:2372 字

    阅读完需:约 8 分钟

  1. 学会获取更多的数据

数据科学的数据源是数字和字段的集合。测量、价格、日期、时间、产品、标题等,都是简单的数据集;你也可以用图像、音频、视频等复杂结构的数据集,这时需要你去降维分解成数字和字段的集合。
数据获取是一个复杂的机制,数据工程师各种被揉捏,但本篇文章重点是讲述数据科学,数据获取将会是下一个 topic。
2. 学会聪明的提出问题

简单点讲,就是提出的问题要问到点子上。数据科学是通过对数字和字段组成的数据集合进行处理,然后回答问题。你描述的问题越精确,越容易找到令你满意的精确答案。含糊不清的问法:“我的数据能为业务提供什么?”,”有了数据我该做什么?”;相对应地,清晰的问法:“第三季度在蒙特利尔卖了多少 Q 型小物件?”
你有了一个问题,现在你得看自己的数据是否可以回答。如果你的问题是“我的股票下周的销售价是多少?”,那需要确保你的数据包括股票的历史数据;如果你的问题是“88 型发动机多少小时会发生故障?”,那需要确保你的数据包括 88 型发动机失败的次数。这些问答案例被称之为目标,你的目标是定量或者分类预测或任务。如果你没有任何目标数据,需要回到步骤 1,获取更多的数据。
3. 装载数据进表

大部分机器学习算法都是假设数据以表的形式呈现。每行是一个事件、item、或者实体;每列是行数据的一个特征或者属性。一个描述美国足球比赛的数据集,每行代表一场比赛,每列分为主场足球队、客场足球队、主场得分、客场得分、日期、开始时间和出场等等。
选择你所需的数据行
经常有许多种方式将数据集分割成行,但只有一种方法能帮助你回答问题:每行有且仅有一个目标实体。拿零售店数据举例,一条交易记录一行,一天的记录一行,一个零售店一行,一个顾客的数据一行,等等。如果你的问题是”刚进过店的顾客会回访吗?“,那数据以一个顾客为一行来组织为好。你的目标 whether_the_customer_returned 将呈现在每行;但如果以一个零售店或者一天进行数据组织,将不能回答目标问题。
有时你必须向上钻取数据来获得相应的维度数据。如果你的问题是“我每天能卖多少拿铁咖啡?”,那你需要每行一天的数据记录(目标列为 number_of_lattes_sold),但是你的数据是每次的交易记录(带有日期和时间)。为了获取每行一天的数据记录,你必须向上钻取数据。
4. 数据质量校验

数据检查
接下来是仔细的查看数据。检查数据有两个目的:第一,发现错误数据,修复或者去除它;第二,对每行每列有足够的了解。
检查每列数据,它的符号是什么?符号意味着什么?有文档解释列的意思吗?数据是如何测试的?谁来测试的?如果你足够的幸运知道记录数据的人,可以去问问他们是怎样测试这些数据。
把数据列作为纵轴画图表,看下整体分布是否符合预期?是否有异常数据点?异常点是否有意义?
校正
纵观所有的数据列,你能发现字段和文档的错误,并记录下来你学到了什么,这样你会比其他人都要了解这些数据(除了纪录数据的人外)。
你也可能发现一些值是错误的。一些值超过了正常范围,比如,一个人 72 米高,或一个“7777777777 Mani St”的地址。当这些事情发生后你有三种选择:如果这个值很容易更改正确,比如,把高 72 米改成 72 英寸;如果错误的值不明显,你可以直接删除或者缺失;如果这个值是关键信息,你应该删除整行或者整列,这可以让你训练的模型远离错误数据,因为错误的数据对你的训练模型的影响比缺失数据更大。
替换缺失的值
在大部分情况下,数据集都存在缺失的值。但不管什么情况,机器学习算法都要希望数据无缺失或者填充默认值。对于你来说,你比机器学习算法更懂你的数据,所有补全缺失数据的工作你更适合。有许多替换缺失值的方法,最保险的一种是采用其它正常数据的平均值来替代。
5. 抽取特征

在做机器学习之前有一个非常重要的步骤:特征工程。特征工程简单讲,就是对现有特征数据进行组合,以获得更好的特征来预测目标。举个例子,火车到达和离开的时间相减获得运输时间,这个特征对预测速度的峰值更有用。
严格来讲,特征工程并不会增加任何数据信息,只是使用各种方法对原有数据进行组合。特征工程是数据科学的“黑科技”,并没有什么特别的、大一统的处理原则,虽然很多深度学习试图自动化这个过程,但都是失败了,特征工程一般是数据科学家的经验决定。不过即使你没有特征工程的技能,也有些小技巧可以使用。你可以对变量画图,并标记不同的颜色,可以帮你方便的发现变量之间的关系。
如果你发现经过特征工程之后还未找到特征来预测目标,那你得重写回到第一步获取数据。
6. 正确的回答问题

现在到了数据科学家钟爱的部分:机器学习,有许多资源讲这部分,这里就不再总结所有的方法。简单地讲,你可以在参考文章《你的问题属于哪种算法?》《选择一到多种算法》来选择算法,并用传统机器学习技术来分割数据进行训练、调优、测试数据、根据选择的模型优化参数。
如果你的模型并不能很好的解决问题,或者你想避免使用机器学习,也有两种非传统的方法回答:
第一种,简单的看你收集数据的图像,有一半的情况下可视化数据就可以找到答案。比如,如果你的问题是“在波士顿明年 7 月 4 号的最高温度是多少?”,对过去 100 年的温度可视化,查看直方图就基本可以解决问题。
第二种,更多技术需求。如果由于数据集太小而得不到结果,你可以考虑优化。机器学习是基于弱先验假设的结构化数据。这种方法的优点在于你使用算法之前你不需要知道太多数据,它能够训练出一个大范围的模型;副作用就是需要大量数据才能获得一个可信的答案。
7. 应用数据

不管你如何优雅的回答提出的问题,但数据科学家的工作直到用户去使用才算完成。把结果以某种形式呈现给用户作为参考来做对应的决策,展示的形式有很多种:将结果在 web 页面上画出来;把你发现的有用信息保存成 PDF;在 GitHub 上分享你的代码;把结论做成视频给你的商业客户,等等。总之一句话,要把你做的工作让其他人来使用。

2016-04-08 19:001947
用户头像

发布了 43 篇内容, 共 27.6 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

用 JavaScript 实现一个 TicTacToe 游戏 —— 编程训练

三钻

Java 算法 大前端 游戏开发 七日更

Android uni-app实现音视频通话

anyRTC开发者

uni-app android 音视频 WebRTC 跨平台

都 2021 年了,Serverless 能取代微服务吗?

Serverless Devs

Serverless 微服务 运维 云原生 后端

你不好奇 Linux 网络发包过程吗?

小林coding

Linux 操作系统 网络

阿里P8整理出Nginx笔记:Nginx应用与运维实战核心篇

996小迁

Java nginx 架构 面试

顶会两篇论文连发,华为云医疗AI低调中崭露头角

华为云开发者联盟

人工智能 医疗 华为云

XRP瑞波币系统软件开发|XRP瑞波币APP开发

系统开发

LeetCode题解:42. 接雨水,暴力法,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

滴滴内部框架手册:Spring5+SpringMVC3+MyBatis3.X

Java架构追梦

Java spring 架构 mybatis springmvc

程序员必看的Redis6.0多线程性能测试结果及分析 你看懂了嘛?

比伯

Java 编程 架构 面试

编写令人愉悦的API接口(二)

Geek_42915f

Java APi设计 接口规范

波场智能合约系统开发技术方案丨智能合约DAPP系统开发源码

打开数“智”化之门,一字之差带来的思考

京东科技开发者

DevOps IoT 新基建 智能

软件测试的方法

测试人生路

软件测试

架构师训练营第 1 期 第 13 周作业

李循律

极客大学架构师训练营

如何在 20 分钟内给你的 K8s PaaS 上线一个新功能?

阿里巴巴云原生

阿里云 容器 运维 云原生

现代JavaScript:ES6+ 中的 Imports,Exports,Let,Const 和 Promise

葡萄城技术团队

Java ES6

社区一体化综合平台搭建,智慧平安小区建设解决方案

t13823115967

智慧城市 智慧平安社区平台建设

执法监督信息化建设,公安情报指挥一体化合成作战系统开发

t13823115967

智慧公安

传统数仓如何转型大数据

数据社

大数据 数据仓库 七日更

区块链数字货币多币种钱包开发案例

判空使用isEmpty()方法真的可行吗?

田维常

Java

应对游戏业务的四大“崩溃”场景有妙招,安全畅玩不是梦!

华为云开发者联盟

游戏 场景 崩溃

大神带你一睹为快!阿里技术官亲自码了“2000页的Spring全家桶笔记”真牛逼!

比伯

Java 编程 程序员 架构 计算机

SpacePX挖矿系统APP开发|SpacePX挖矿软件开发

系统开发

ECS实践案例丨逻辑卷的创建和扩容操作指导

华为云开发者联盟

数据库 数据 服务

架构师训练营第 1 期 - 第 11 周 - 命题作业

wgl

极客大学架构师训练营

灵魂一问:数据库连接池到底该怎么配?

Gopher指北

MySQL Go 语言

Serverless 是一种思想状态

Serverless Devs

Java Serverless 运维 云原生 后端

高性能MySQL

田维常

MySQL

如何阅读别人的源码

熊斌

学习 Code Review 源码阅读 七日更

微软高级数据科学家教你如何做数据科学_语言 & 开发_侠天_InfoQ精选文章