9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

借助数据科学解决业务问题

  • 2016-11-20
  • 本文字数:3287 字

    阅读完需:约 11 分钟

数据科学快速成为整个行业中开发人员和管理人员的关键技能,它似乎也非常有趣。但它相当复杂——工程分析选项有许多,你很难知道自己做得对不对或者哪里是陷阱。在该系列文章中,我们将探讨如何利用数据科学——从已经采用并成功实施数据科学的人那里,了解哪里需要数据科学哪里不需要以及如何让它成为你的资产。

这篇文章是“理解数据科学”系列文章的第一部分。你可以通过 RSS 进行订阅,以便接收更新通知。

本文要点

  • 数据科学是一组跨学科技术的统称,它可以从数据中提取出有用的观点、预测或知识。
  • 要成功实施数据科学项目,其中一个最大的决定因素是选择并定义好需要解决的问题。
  • 现在有许多很好的开源数据科学程序库,大多数是用 Python、Java 或 C++ 编写的。
  • 为了实际地解决问题,业务上下文会设定一个任何预测模型都需要满足的阈值。
  • 交叉验证是一种不错的完整性检查方法,可以保证你使用了一个合理的模型,当投入生产环境时不会出现不好的情况。

企业越来越意识到,有许多最紧迫的问题,只要稍微运用一点数据科学就可以解决。几年前,你可能曾经扬言,用一段非常短的 shell 脚本替换掉某个人,现在,你可以使用一个非常小的预测模型替换掉更多的人。

如果你阅读 InfoQ,那么你很可能是一位高级软件开发人员或架构师,你习惯于处理数据,但目前可能并没有做多少数据科学方面的工作。我希望让你相信,数据科学是一个值得探索的领域,因为它是一项有趣的技术挑战,同时也能让你对所服务的组织产生重大的影响。

数据科学是一组跨学科技术的总称,它可以从数据中提取出有用的观点、预测或知识——需要统计、编程、数据挖掘和机器学习等要素。它出现在各个领域,有些确实是复杂伤神,但也有一些要平凡普通许多。数据科学是消费互联网背后的魔法力量,如 Amazon 的图书推荐或 LinkedIn 的“你可能认识”。它也是一些新生事物的基础,如自动驾驶汽车就使用这些技术来学习如何安全地驾驶。它还支撑着一些日常的实用应用程序,像超市忠诚计划,如 Tesco 的 Clubcard,它可以计算出应该给你发送什么消费券。

这些应用程序背后的理论已经存在了几十年了。但是,也只是在过去的十年中,随着按小时计费的廉价云服务器、无所不在的数据收集、分布式存储和处理、经过实战测试的机器学习程序库等的出现,将数据科学应用于日常业务已经成为一个不错的实践选择。这是一个使用新的数据科学解决旧的业务问题的激动人心的时代。

不过,业务问题的定义经常模糊、复杂,而且还有成功的条件和依赖关系,就是说,只有特定类型的模型或达到了一定的准确率(对实际正确的样本作出正向预测的比例)和召回率(模型找到的真“正”的样本的比例)水平才可以解决它们。本文将介绍其中一些最常见的挑战及最佳的应对方法供技术人员参考,以便他们可以最大限度地利用数据。

问题选择

决定成功的其中一个最重要的因素是选择并定义好要解决的问题。那么,在这个领域里,“好”是指什么?它是指:

  • 解决方案有足够的影响力,可以证明你的工作成果;
  • 相关数据以可用的格式存储——平面文件或 CSV 一般就可以,专用格式或复杂的结构会更有效;
  • 有大量的数据需要处理——正如 Peter Norvig 评价谷歌的那句名言“我们并没有更好的算法,我们只是有更多的数据”;
  • 来自“业务”的专家同事们有兴趣并愿意参与到数据科学过程——如果你身边有具有丰富业务经验的同事,帮你选出最有用的数据源,告诉你实体在数据中的位置,并构建出良好的特性输入你的算法,就可以避免进入许多死胡同。

基础知识指南

数据科学是一个统称,但有几个具体的技术分类:

  • 人工智能是一个最宽泛的术语。它是指过去 60 年里人们使用计算机复制人类智力各个方面的多次尝试;这可以包含所有类型的学习和推断系统,使用了许多不同类型的方法。
  • 机器学习是人工智能的一个子集,在数据科学家的工具箱中居于主要地位。它是一个包含许多不同方法的技术集,可以使用算法在数据集中发现模式,并作出预测。
  • 深度学习是机器学习的一个分支,它使用深度图方法(例如神经网络)。与其他大多数机器学习方法相比,深度学习方法更像“大脑”——那是说,它们非常强大,但计算也非常密集,结果很难解释。最近,它们变得越来越流行,因为新的程序库及更强大更廉价的硬件让它们更可承受也更可用。

工具选择

当前有许多开源数据科学程序库,大多数是用 Python、Java 或 C++ 编写的。特别是去年,有用的深度学习工具(尤其是谷歌的 TensorFlow )呈现爆发式增长,可以用于复杂的、超大规模的机器学习,如图像识别,并且 AI 领域取得了一些令人印象深刻的成果。尽管这些工具很酷,但对于大多数应用程序而言,开始的时候选择一个更简单的模型(比如使用 scikit-learn,这是一个流行的 Python 程序库,它所包含的工具适用于最常见的数据挖掘和数据分析任务)和建模技术(比如简单的逻辑回归)才是明智的选择——在数据科学的世界里,要加倍运用 YAGNI 原则。简单的模型理解和调试起来都要容易许多,而且一般来说,与选择一个更复杂的程序库相比,更多的数据和更好的特性选择对你而言要有利得多,当你需要对模型进行优化时,前者更可能让你陷入困境。 Cross Validated 是数据科学领域的 StackOverflow ,非常有用,从中可以找到不错的代码片段。

成功条件

为了实际地解决问题,业务上下文会设定一个任何预测模型都需要满足的阈值。下面几个方面是你需要重点考虑的。

准确率和召回率:任何预测模型都有准确率和召回率这两个指标。第一步非常重要,就是要弄清楚模型的准确率和召回率达到什么水平才能解决问题。例如,你可能需要通过建模计算出你们公司的哪些客户考虑转向另一个供应商。如果你所拥有的资源只能对少数流失风险最高的客户施加影响,则需要高准确率。那样,你就可以确保不把资源浪费在留住那些本身就没有真得考虑要换个供应商的客户身上。不过,如果可以采取一些成本不高的行动留住客户,那么你可能会优先考虑高召回率——那样你可以留住每个可能离开的客户。

输出验证:对于任何预测模型,你都需要针对一份或多份“保留(holdbacks)”数据进行验证,以便检查这个模型随着时间推移是否一直有效,避免那个可能是数据科学业务里最难处理的问题——过度拟合。如果你只使用一个数据集构建模型,那么总是存在一个风险,就是你构建出了一个可以完美描述现有数据的模型,而当你引入一些新东西,该模型就失效了——你可以使用模型构建过程中专门保留下来的数据对模型进行交叉验证来避免这种情况——而类似 scikit-learn 这样的程序库对这类功能提供了很好的支持。交叉验证是一种不错的完整性检查方法,可以保证你使用了一个合理的模型,当投入生产环境时不会出现不好的情况——你很可能会找到一种规范的测试机制。

性能:运行模型解决问题所需的机器时间和资源的数量要符合实际。当数据集扩展到更大的规模时,有些模型类型的性能会比其他类型高出许多。例如,我们最近研究从简单的“潜在狄氏配置(Latent Dirichlet Allocation, LDA )”切换到相当不错的新程序库 lda2vec ,用于文本主题检测——这无疑会提供更好的输出结果,但运行时间也从几分钟变成了好几天。一般来说,越复杂的学习模型,如神经网络和深度学习技术,提供的输出结果越准确,但训练和运行所需要的资源都比简单的模型多,而这种时间成本可能超出了更好的输出结果所带来的益处(虽然你也许能够减少一些运行时间,例如减少训练迭代次数或者在建模之前从数据中删除低价值的特征)。还有一个问题值得考虑,业务人们可能想要知道系统的工作原理,但与类似决策树这样的简单模型相比,类似神经网络这样的“学习”模型很难给他们解释。

关于作者

Francine Bennett是 Mastodon C 的联合创始人兼 CEO。Mastodon C 是一个敏捷大数据专家团队,他们提供以开源的 Hadoop 和 Cassandra 为基础的技术以及可以帮助大型组织挖掘数据潜能的技术和分析技能。Bennett 是一名公认的分析应用程序和“数据科学”技术专家。她是英国皇家学会的特邀发言人,同时也为英国内阁办公室提供关于如何更好地使用数据的建议。她拥有数学 & 哲学一等学位,此前曾在谷歌担任分析主管。她还是 DataKind UK 的理事。

查看英文原文: Solving Business Problems with Data Science

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2016-11-20 16:281926
用户头像

发布了 1008 篇内容, 共 361.9 次阅读, 收获喜欢 334 次。

关注

评论

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

原创 | 正确区分属性和字段

编程道与术

Java hibernate 编程 软件开发 jpa

LeetCode题解:641. 设计循环双端队列,使用双向链表,JavaScript,详细注释

Lee Chen

大前端 LeetCode

手把手教你:将 ClickHouse 集群迁至云上

腾讯云大数据

大数据 Clickhouse

架构师训练营第三周作业

邓昀垚

极客大学架构师训练营

【架构笔记之设计模式】架构师训练营第1期第3周

业哥

极客大学架构师训练营

Greenplum 性能优化之路 --(二)存储格式

腾讯云大数据

大数据

Greenplum 性能优化之路 --(三)ANALYZE

腾讯云大数据

大数据 数据仓库

第二周-命题作业

莫森

极客大学架构师训练营

智能体的奇幻漂流之“成都折叠”篇

脑极体

经常使用的数据结构

hasWhere

原创 | 使用JPA实现DDD持久化-JPA vs MyBatis

编程道与术

Java hibernate 编程 mybatis jpa

数字货币视域下的金融安全实现路径

CECBC

区块链 数字货币

架构师训练营第三周作业

文智

极客大学架构师训练营

用go语言实现快排

Sean

算法 快速排序 Go 语言

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

业哥

极客大学架构师训练营

FastDFS 分布式文件系统详解

哈喽沃德先生

文件系统 分布式文件存储 fastdfs 分布式文件

腾讯云副总裁刘煜宏:大数据平台算力弹性资源池达500万核,国内最强

腾讯云大数据

大数据

Greenplum 性能优化之路 --(一)分区表

腾讯云大数据

大数据

CSS语法与规则 — 重学CSS

三钻

CSS 大前端

优秀组织的5大表现

凌晞

团队管理 团队组织 组织

一个好系统自我完善自我进化的方法

boshi

产品思维 系统工程 即时反馈 生态体系

c++杂谈4

菜鸟小sailor 🐕

原创 | 使用JPA实现DDD持久化-JPA,Hibernate与Spring Data JPA

编程道与术

Java hibernate Spring C Data jpa

持续引领大数据行业发展,腾讯云发布全链路数据开发平台WeData

腾讯云大数据

大数据

【FastDFS】SpringBoot整合FastDFS实战,我只看这一篇!!

冰河

springboot fastdfs

揭开500亿“区块链”骗局

CECBC

法律 传销

鲲鹏播种于时代,花开五色中原

脑极体

高中生写LOL外挂1年狂赚五百万,落网前刚买下120万保时捷

Java架构师迁哥

致谢!华为全联接2020精彩回顾

华为云开发者联盟

华为 华为云 智能 hdc

jdk 源码系列之StringBuilder、StringBuffer

sinsy

Java jdk 源码解析

腾讯云大数据发布最新产品矩阵,助力企业整合打通海量数据

腾讯云大数据

大数据

  • 扫码添加小助手
    领取最新资料包
借助数据科学解决业务问题_AI_Francine Bennett_InfoQ精选文章