English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

访客
1 / ?
返回课程列表

什么是数据科学?

数据科学不只是机器学习,不只是统计学,也不只是编程。

数据科学是从数据中提取有用知识的学科。这项工作大多并不光鲜:清洗杂乱的电子表格,提出正确的问题,并向不关心你代码的人传达结果。

Data Science Pipeline

典型的数据科学流程如下:

1. 收集:从数据库、API、CSV 文件或网页抓取中获取原始数据

2. 清洗:处理缺失值、修正数据类型、删除重复项

3. 探索:可视化数据分布、发现规律、提出问题

4. 特征工程:创建有助于模型学习的新特征

5. 建模:训练算法、评估性能、反复迭代

6. 沟通:向做决策的利益相关者展示发现

如果你用过 Excel 的数据透视表、条件格式或 VLOOKUP,就已经完成了第 1 到 3 步。本课将这段经验与业界使用的基于 Python 的工作流程衔接起来。

热身

你的数据经验

每个人都用过某种形式的数据:预算电子表格、成绩记录表、健身应用,甚至是带播放次数的歌单。

描述一次你在电子表格或应用中处理数据的经历。你当时想弄清楚什么?数据给出答案了吗?

垃圾进,垃圾出

为什么数据清洗很重要

数据科学家把 60% 到 80% 的时间花在清洗数据上。这并非夸张:各行业的调查一致得出这个结果。

原因很简单:垃圾进,垃圾出。如果数据含有错误、缺失值或格式不一致的内容,建立其上的每一项分析都会出错。用脏数据训练的完美模型,只会给出信心十足的错误答案。


常见的数据问题

- 缺失值:单元格为空白。这些数据没有被收集,还是该值其实为零?两种情况不同,需要不同的处理方式。

- 数据类型错误:一列数字被存成文本,日期格式不一致(01/02/2024:这是 1 月 2 日,还是 2 月 1 日?)

- 离群值:薪资列中有一条记录为 $1,000,000,000。这是真实数据,还是笔误?无论哪种,它都会拉偏你的平均值。

- 重复记录:两个系统合并得不完美,同一条记录出现了两次

- 分类编码:某一列里有 'Yes'、'yes'、'Y'、'TRUE' 和 '1'。它们都表示同一个意思,但计算机并不知道。


在 pandas(标准的 Python 数据库)中,你可以用 dropna()、fillna()、astype() 和 drop_duplicates() 等方法处理这些问题。但难点不在代码,而在于决定对每个问题该怎么做。

常见数据问题

清洗决策

决定怎么做

来看一个真实场景。你有一个包含 10,000 条客户记录的数据集,其中 'age'(年龄)列有 500 个缺失值。

你的选择:

- 删除这些行:移除全部 500 条记录。做法简单,但会损失 5% 的数据。如果这 500 位客户有共同特征(比如出于隐私顾虑而跳过了年龄字段),删除他们就会引入偏差。

- 用均值填充:用平均年龄替换空白。快捷,但会人为降低年龄列的方差。

- 用中位数填充:如果年龄分布有偏(少数极年长或极年幼的客户拉动了平均值),中位数比均值更合适。

- 使用标记:新建一列 'age_missing'(1 或 0),并用中位数填充原列。这样模型就能学习缺失本身是否带有信息。

没有放之四海而皆准的正确答案。选择取决于数据为何缺失 & 你打算如何使用这些数据。

你有一份员工薪资数据集。5,000 条记录中有 200 条缺失薪资值。你注意到,大部分缺失值来自高管。你会删除这些行、用均值填充,还是采取其他做法?请解释你的理由。

提出正确的问题

探索性数据分析(EDA)

在构建任何模型之前,你需要先了解自己的数据。EDA 是对数据集进行汇总、可视化与质疑的过程,目的是发现其中的模式、异常与关系。


关键工具

- 直方图:展示单个变量的分布。它是钟形的吗?偏斜的吗?双峰的吗(有两个峰值)?收入的直方图总是右偏的,因为少数人的收入远高于大多数人。

- 散点图:展示两个变量之间的关系。个子高的人体重更重吗?学习时间越长,成绩越高吗?图中呈现的规律(或没有规律)会告诉你两者之间是否存在关系。

- 相关性:一个介于 -1 和 +1 之间的数,用来衡量线性关联。+1 表示完全正相关,-1 表示完全负相关,0 表示没有线性关系。但相关不等于因果:冰淇淋销量和溺水死亡人数相关,是因为两者在夏季都会增加。

- 汇总统计量:均值、中位数、标准差、最小值、最大值。在 pandas 中,df.describe() 一行代码就能给出所有这些数值。


真正的技能

工具很容易学会,难的是提出正确的问题。糟糕的问题:"数据说明了什么?"好的问题:"在第一周内联系客服的客户,留存率是否更高?"

EDA Tools

相关性陷阱

相关性与因果关系

这是数据素养中最重要的一个概念。两个变量可以高度相关,却并非一方导致另一方。

经典例子:

- 消防员越多的城市,火灾也越多。(大城市两者都多。)

- 吃早餐的学生成绩更好。(也许富裕家庭更有可能既提供早餐,也提供学业支持。)

- 巧克力消费量越高的国家,获得诺贝尔奖越多。(两者都与国家财富相关。)

这个隐藏因素称为混杂变量:它是第三个变量,同时驱动你正在观察的那两个变量。

相关性与因果关系

某公司发现,使用办公室健身房的员工病假天数减少了 30%。首席执行官想要求所有员工都使用健身房。这种推理有什么问题?哪些混杂变量可能解释这种相关性?

创建有用的变量

什么是特征工程?

特征是模型用来做出预测的输入变量。特征工程是一门艺术:从原始数据中创建新特征,帮助模型学习它们原本看不到的模式。

原始数据很少直接符合模型的需要。以一个包含“出生日期”列的数据集为例。模型很难利用原始日期做什么。但如果你从中创建一个“年龄”特征,模型就能学习基于年龄的模式。


常用技巧

- 归一化:把数值缩放到统一范围(0 到 1,或均值为 0 & 标准差为 1)。缺少这一步,以千计的特征(薪资)会压过以个位数计的特征(工作年限)。

- 独热编码:把类别变量转换成二值列。一个 'color' 列含有 [red, blue, green] 三个取值,会变成三列:'color_red'、'color_blue'、'color_green',每列取值为 0 或 1。

- 分箱:把连续变量变成类别。年龄 0-17 归为 'minor',18-64 归为 'adult',65 岁以上归为 'senior'。当变量之间的关系不呈线性时,分箱有帮助。

- 交互特征:把两个特征相乘。"面积乘以浴室数量"预测房价的效果,可能胜过单独使用任何一个特征。

- 领域知识:最强大的技术。为医学模型构建特征的医生,知道哪些化验指标重要。营销人员知道"距上次购买的天数"比"购买日期"更有用。没有任何算法能取代这种知识。

特征工程技术

特征练习

应用特征工程

假设你正在构建一个模型,预测哪些客户下个月会取消流媒体订阅。你的原始数据包括:

- 账户创建日期

- 最近一次登录日期

- 上个月观看的节目数量

- 每月付款金额

- 提交的客户支持工单数量

- 国家/地区

请从上面列出的原始数据中,提出至少三个你会设计的新特征。针对每一个特征,说明它捕捉了什么信息,以及为什么可能有助于预测取消订阅。

训练集/测试集划分

为什么要划分数据

建模中最重要的规则:绝不用训练过的同一批数据来评估模型。

否则,模型只需死记答案。它在训练数据上会得满分,却在全新的、没见过的数据上表现糟糕。这叫过拟合:模型学到的是你这份数据集中的噪声,而不是真正的规律。

标准做法是拆分数据:

- 训练集(通常占 70-80%):模型从中学习

- 测试集(通常占 20-30%):预先留出,只用于评估最终模型

在 scikit-learn 中:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)


常见算法

- 线性回归:在数据中画出拟合效果最好的直线。简单,易于解释,适用于关系大致呈线性的情况。预测一个数值(价格、温度、分数)。

- 决策树:由一连串是/否问题组成的流程图。易于理解和解释。除非经过剪枝或限制深度,否则容易过拟合。

- 随机森林:许多决策树共同投票。比单棵决策树更准确,更不容易过拟合,但更难解释。


过拟合与欠拟合

- 过拟合:模型过于复杂。它死记硬背训练数据,连噪声也一并记住。训练数据上的准确率高,测试数据上的准确率低。

- 欠拟合:模型过于简单。它无法捕捉真实的规律。训练数据和测试数据上的准确率都低。

目标是找到两者之间的最佳平衡点。

训练集/测试集划分与偏差-方差权衡

评估指标

如何判断模型好不好?

仅看准确率可能会产生误导。如果 95% 的邮件都不是垃圾邮件,那么一个永远回答"不是垃圾邮件"的模型准确率高达 95%,却完全没用。

关键指标:

- 准确率(Accuracy):预测正确的百分比。在各类别数量均衡时很有用。

- 精确率(Precision):在模型标记为正类的所有样本中,实际为正类的占多少?精确率高意味着误报少。

- 召回率(Recall):在所有实际为正类的样本中,模型找出了多少?召回率高意味着漏报少。

- F1 分数:精确率与召回率的调和平均数。需要兼顾两者时很有用。

- RMSE(均方根误差):用于回归(预测数值)。预测值平均偏离真实值多远?

哪个指标最重要,取决于具体问题。检测癌症时,召回率更重要:你不想漏掉任何一个病例。过滤垃圾邮件时,精确率更重要:你不想删掉一封真正的邮件。

评估指标与混淆矩阵

你正在构建一个模型,用来检测信用卡欺诈交易。实际上只有 0.1% 的交易属于欺诈。如果你的模型把每笔交易都预测为合法,它的准确率是多少?为什么准确率在这里是个糟糕的指标 & 你会改用哪个指标?

数据分析师、数据科学家与机器学习工程师的区别

三种不同的角色

数据领域有三条主要的职业路径,& 它们所需的技能各不相同。


数据分析师

- 重点:用现有数据回答商业问题

- 工具:SQL、Excel、Tableau、基础 Python 或 R

- 日常工作:仪表盘、报告、A/B 测试分析、向利益相关者做演示

- 入门路径:通常最容易进入。许多分析师没有计算机科学学位也能起步。


数据科学家

- 重点:构建预测模型 & 在复杂数据中发现规律

- 工具:Python(pandas、scikit-learn、matplotlib)、统计学、SQL、Jupyter notebooks

- 日常工作:探索性数据分析、特征工程、模型构建、实验

- 入行路径:通常需要统计学或定量背景。训练营 & 自学同样可行。


机器学习工程师

- 重点:在生产系统中部署 & 扩展模型

- 工具:Python、TensorFlow/PyTorch、Docker、云平台(AWS/GCP)、API

- 日常工作:模型优化、流水线基础设施、监控生产环境中的模型

- 入行路径:通常需要扎实的软件工程技能,外加机器学习知识。


打造作品集

招聘经理看重的是你能做什么,而不只是你学了什么。GitHub 上有 3 到 5 个扎实的项目,比各类证书更有分量。好的项目使用真实(而非玩具)数据集,附带清晰的文档,并展示完整的流程:从杂乱的数据到可执行的洞察。

数据职业路径

你的下一步

接下来去哪里

这些行业工具都免费且容易获取:

- pandas:用于数据处理的标准 Python 库

- matplotlib / seaborn:可视化库

- scikit-learn:经典机器学习的主力工具

- Jupyter notebooks:交互式编程环境,可以在其中混合代码、输出和笔记

- Kaggle:提供免费数据集、竞赛,以及一个实践者社区

从一个你感兴趣的真实数据集开始。下载它,清洗它,探索它,并尝试回答一个问题。这一个项目教给你的,会比任何课程都多。

根据你在本课中学到的内容,三种角色(数据分析师、数据科学家或机器学习工程师)中,哪一种最吸引你?这周你可以采取哪一个具体步骤,来开始为这个角色积累技能?