IBM-数据科学-IX-笔记-全-
IBM 数据科学 IX 笔记(全)
001:Python机器学习基础介绍 🎯



在本课程中,我们将学习机器学习的基础知识,并了解如何应用多种机器学习算法。


课程概述 📋
机器学习广泛应用于众多领域和行业。例如,在自动驾驶汽车行业中,机器学习用于分类驾驶过程中可能遇到的物体,如行人、交通标志和其他车辆。许多云服务提供商,如IBM和亚马逊,也利用机器学习来保护其服务,检测和防止分布式拒绝服务攻击或可疑恶意行为。此外,机器学习还能帮助分析股票数据趋势,辅助交易决策,并协助通过X光扫描识别患者体内的潜在肿瘤。
讲师介绍 👨🏫
本课程由三位讲师共同指导:

- Saeed Aghabozorgi博士:谷歌高级AIML客户工程师,拥有为IBM和亚马逊云服务开发企业级解决方案的经验,致力于帮助客户将数据转化为可操作的知识。他同时也是人工智能和机器学习领域的研究者。
- Joseph Santarcangelo博士:拥有电气工程博士学位,研究方向集中于利用机器学习、信号处理和计算机视觉来评估视频对人类认知的影响。博士毕业后一直任职于IBM。
- Azim Hirjani:IBM数据科学实习生,负责为多门IBM数据科学课程创建内容。他目前正在多伦多大学攻读计算机科学学士学位。

课程结构 📚
本课程包含四个模块,每个模块都结合了视频讲解和实践练习,以巩固所学知识。
以下是课程模块的详细内容:
-
模块一:介绍与回归
- 在本模块中,我们将初步接触机器学习,并重点学习回归算法。
-
模块二:分类
- 上一模块我们介绍了回归,本节中我们来看看机器学习中的另一大类任务:分类。本模块将涵盖多种分类算法。
-
模块三:聚类
- 在学习了监督学习(回归与分类)之后,本模块我们将探索无监督学习的一个重要分支:聚类。



- 模块四:最终项目
- 在掌握了核心算法后,本模块将通过一个综合项目来应用所学知识,预测澳大利亚是否会下雨。

所有实践练习将在 Skills Network Labs 提供的 Jupyter Lab 环境中进行,主要使用 Python 编程语言及相关的数据科学库,例如 pandas、numpy 和 scikit-learn。

实践案例与数据集 🔬



在本课程中,我们将探索不同的机器学习算法,并使用多种数据集来帮助理解和应用机器学习。
以下是本课程将涉及的主要实践案例:

- 线性回归:使用汽车数据集,根据车辆特征(如发动机大小、气缸数)估计其二氧化碳排放量,公式可表示为
CO2 = β0 + β1 * Feature1 + ... + βn * FeatureN。目标是预测尚未生产的汽车的排放量。 - 回归树:使用房地产数据预测房屋价格。
- 逻辑回归:使用电信公司的客户数据,预测客户是否会流失(客户忠诚度)。
- K最近邻算法:使用电信客户数据对客户进行分类。
- 支持向量机:对人类细胞样本进行分类,判断其为良性还是恶性。
- 多类别预测:使用经典的鸢尾花数据集,对不同类型的鸢尾花进行分类。
- 决策树:构建一个模型,根据患者特征决定应使用哪种药物。
- K均值聚类:学习将客户数据集分割成具有相似特征的群体。
学习目标 🎓
完成本课程后,你将能够:

- 解释、比较和对比各种机器学习的主题与概念,例如监督学习、无监督学习、分类、回归和聚类。
- 描述各种机器学习算法的工作原理。
- 最终,学会使用Python及相关库(如
scikit-learn)来应用这些机器学习算法。
总结
本节课中,我们一起学习了《Python机器学习基础》课程的概览。我们了解了机器学习的广泛应用、认识了课程讲师、明确了由四个模块(介绍与回归、分类、聚类、最终项目)组成的课程结构,并预览了将使用不同数据集进行实践的各种算法案例。最后,我们明确了完成本课程后能够达到的学习目标,为后续深入学习打下了基础。
002:1_导论 🎯

在本节课中,我们将要学习机器学习在多个关键领域和行业中的应用,并了解如何使用Python及其流行库来构建机器学习模型。课程将涵盖从基础概念到实际应用的全面内容,帮助初学者掌握机器学习的核心技能。
机器学习在医疗健康领域扮演着关键角色。数据科学家利用机器学习预测被认为有患癌风险的人类细胞是良性还是恶性。因此,机器学习在决定个人健康与福祉方面具有重要作用。
上一节我们介绍了机器学习在医疗领域的应用,本节中我们来看看决策树的价值。构建一个基于历史数据的良好决策树,能帮助医生为每位患者开具合适的药物。
以下是决策树在医疗中的具体应用方式:
- 分析患者历史数据。
- 根据特征(如症状、检测结果)构建树状决策模型。
- 输出针对性的治疗或用药建议。
银行家利用机器学习来决定是否批准贷款申请。此外,机器学习还用于银行客户细分,这对于处理海量且多样的数据通常并不容易。
以下是机器学习在金融领域的两个主要应用:
- 信用风险评估:使用客户数据(如收入、信用历史)构建模型,预测贷款违约风险。
- 客户细分:通过聚类算法(如K-Means),将客户划分为不同群体,以便提供个性化服务。
YouTube、亚马逊或Netflix等网站利用机器学习向客户推荐各种产品或服务,例如他们可能感兴趣的电影或值得购买的书籍。机器学习的功能非常强大。
以下是推荐系统的基本原理:
- 系统分析用户的历史行为数据(如观看记录、购买历史)。
- 使用协同过滤或内容过滤等算法。
- 预测并推荐用户可能感兴趣的新项目。
我们将学习如何使用流行的Python库来构建模型。例如,给定一个汽车数据集,我们可以使用Scikit-learn库,根据发动机尺寸或气缸数来估算汽车的二氧化碳排放量。
我们甚至可以预测尚未生产的汽车的二氧化碳排放量。此外,我们将看到电信行业如何预测客户流失。
本课程内置实验环境,您可以运行和练习所有这些示例的代码。无需在计算机上安装任何软件或在云端进行任何操作。您只需点击一个按钮,即可在浏览器中启动实验环境。示例代码已使用Python语言在Jupyter Notebook中编写,您可以运行它以查看结果,或修改它以更好地理解算法。

那么,学习本课程能达到什么目标?在接下来的几周里,每周只需投入几个小时,您就能获得可以添加到简历中的新技能,例如回归、分类、聚类、Scikit-learn和SciPy。
您还将获得可以添加到作品集中的新项目,包括癌症检测、预测经济趋势、预测客户流失、推荐引擎等等。




您还将获得机器学习证书,以证明您的能力,并可以在任何您喜欢的地方在线或离线分享它,例如LinkedIn个人资料和社交媒体。

本节课中我们一起学习了机器学习在医疗、金融、娱乐等领域的广泛应用,并了解了本课程将如何通过Python和Scikit-learn等工具,带领我们从理论到实践,掌握回归、分类、聚类等核心技能,最终完成实际项目并获得认证。现在,让我们开始学习吧。
003:机器学习导论 🧠

在本节课中,我们将要学习机器学习的基本概念、定义、应用领域以及它与人工智能、深度学习的关系。我们将通过一个医学诊断的实例来理解机器学习如何工作,并介绍几种常见的机器学习技术。
概述
机器学习是计算机科学的一个分支,它使计算机能够在没有明确编程的情况下进行学习。本节课将通过一个具体的例子——使用细胞特征预测肿瘤是良性还是恶性——来阐述机器学习的基本流程和核心思想。
上一节我们介绍了课程的整体安排,本节中我们来看看机器学习的核心定义和工作原理。
什么是机器学习?🤔
这是一张从患者体内提取的人类细胞样本图像。该细胞具有多种特征,例如:
- 其团块厚度为 6。
- 其细胞大小均匀性为 1。
- 其边缘粘附度为 1。
此时我们可以提出一个关键问题:这是一个良性细胞还是恶性细胞?与良性肿瘤不同,恶性肿瘤可能会侵入周围组织或扩散到全身,早期诊断可能是患者生存的关键。
人们可能轻易地认为,只有拥有多年经验的医生才能诊断该肿瘤并判断患者是否患有癌症。然而,假设我们获得了一个数据集,其中包含数千个被认为有患癌风险的患者细胞样本的特征。
对原始数据的分析表明,许多特征在良性和恶性样本之间存在显著差异。我们可以利用这些细胞特征值,对其他患者的新样本进行早期预测,判断其是良性还是恶性。
这个过程需要:清洗数据、选择合适的算法来构建预测模型、训练模型以理解数据中良性和恶性细胞的模式。模型经过迭代数据训练后,就可以用于以相当高的准确度预测新的或未知的细胞。这就是机器学习。它展示了机器学习模型如何执行医生的任务,或至少帮助医生加快诊断过程。
现在,让我们给出机器学习的正式定义:
机器学习是计算机科学的一个子领域,它使计算机能够在没有明确编程的情况下进行学习。
“没有明确编程”的含义 🧩
为了解释“没有明确编程”的含义,我们假设有一个包含猫和狗等动物图像的数据集,并且我们希望开发一个能够识别和区分它们的软件或应用程序。



首先,我们需要将图像解释为一组特征集。例如:
- 图像是否显示动物的眼睛?如果有,大小是多少?
- 它有耳朵吗?
- 有尾巴吗?
- 有多少条腿?
- 有翅膀吗?

在机器学习出现之前,每张图像都会被转换成一个特征向量。传统上,我们必须编写一些规则或方法,以使计算机变得智能并检测动物。




但这种方法失败了。原因在于它需要大量规则,高度依赖当前数据集,并且泛化能力不足,无法检测样本外的情况。



这时,机器学习登场了。



使用机器学习,我们可以构建一个模型。该模型会查看所有特征集及其对应的动物类型,并学习每种动物的模式。



这是一个由机器学习算法构建的模型。它能够进行检测,而无需被明确编程来实现此功能。本质上,机器学习遵循的是一个四岁儿童学习、理解和区分动物时所使用的相同过程。





因此,受人类学习过程启发的机器学习算法,能够从数据中迭代学习,并让计算机发现隐藏的洞察。





这些模型在多种任务中帮助我们,例如物体识别、摘要总结、推荐系统等。
机器学习的应用实例 🌍


机器学习以非常有影响力的方式影响着社会。以下是一些现实生活中的例子:


首先,Netflix 和亚马逊如何向用户推荐视频、电影和电视节目?
它们使用机器学习来生成你可能喜欢的建议。



这类似于你的朋友根据他们对你喜好的了解,向你推荐电视节目。


银行在审批贷款申请时如何做决定?
它们使用机器学习来预测每位申请人的违约概率,然后根据该概率批准或拒绝贷款申请。
电信公司利用客户的人口统计数据对其进行细分,或预测他们下个月是否会取消订阅。
在我们的日常生活中,每天都能看到许多其他机器学习应用,例如聊天机器人、手机人脸识别登录,甚至电脑游戏中的面部识别。
常见的机器学习技术 📊
这些应用各自使用不同的机器学习技术和算法。让我们快速了解几种更流行的技术。
以下是几种主要的机器学习技术类型:
1. 回归
- 用途:用于预测连续值。
- 示例:根据房屋特征预测其价格,或估算汽车发动机的二氧化碳排放量。
- 核心概念:
预测值 = f(特征1, 特征2, ...)




2. 分类
- 用途:用于预测样本的类别或分类。
- 示例:判断细胞是良性还是恶性,或预测客户是否会流失。
- 核心概念:
类别 = argmax( P(类别 | 特征) )




3. 聚类
- 用途:将相似的样本分组。
- 示例:寻找相似的患者,或在银行领域用于客户细分。
4. 关联规则
- 用途:发现经常共同出现的物品或事件。
- 示例:特定顾客通常一起购买的杂货商品。


5. 异常检测
- 用途:发现异常和不寻常的案例。
- 示例:用于信用卡欺诈检测。



6. 序列挖掘
- 用途:预测下一个事件。
- 示例:网站上的点击流预测。

7. 降维
- 用途:减少数据的大小。
8. 推荐系统
- 用途:将人们的偏好与具有相似品味的人关联起来,并向他们推荐新物品,例如书籍或电影。
我们将在后续视频中详细介绍其中一些技术。
人工智能、机器学习与深度学习 🤖
说到这里,我相信这个问题已经出现在你的脑海中:我们经常听到的这些流行词——人工智能、机器学习和深度学习——之间有什么区别?
让我解释一下它们之间的不同。简而言之:
- 人工智能 试图使计算机智能化,以模仿人类的认知功能。因此,人工智能是一个范围广泛的通用领域,包括计算机视觉、语言处理、创造力和摘要总结。
- 机器学习 是人工智能的一个分支,涵盖了人工智能的统计部分。它通过让计算机查看成百上千个示例、从中学习,然后利用这些经验在新情况下解决相同的问题。
- 深度学习 是机器学习中一个非常特殊的领域,计算机实际上可以自主学习并做出智能决策。与大多数机器学习算法相比,深度学习涉及更深层次的自动化。
总结与展望 🚀
现在我们已经完成了对机器学习的介绍,后续视频将重点回顾两个主要部分:
- 你将学习机器学习的目的及其在现实世界中的应用场景。
- 你将获得对机器学习主题的总体概述,例如监督学习与无监督学习、模型评估以及各种机器学习算法。

现在你已经对这段学习旅程的内容有了初步了解,让我们继续探索机器学习的奥秘。



本节课中,我们一起学习了机器学习的核心定义,理解了它如何通过从数据中学习模式来解决问题,而无需明确编程。我们探讨了机器学习在医疗诊断、推荐系统等领域的应用,并简要介绍了回归、分类、聚类等主要技术。最后,我们厘清了人工智能、机器学习和深度学习三者之间的关系。
004:Python机器学习基础 📚


在本节课中,我们将学习如何使用Python进行机器学习。Python是一种流行且强大的通用编程语言,近年来已成为数据科学家的首选语言。你可以使用Python编写机器学习算法,并且效果很好。然而,Python中已经实现了很多模块和库,可以极大地简化你的工作。本课程将介绍这些Python包,并在实验中使用它们,以提供更好的实践体验。



Python核心科学计算库 🧮

上一节我们介绍了Python在机器学习中的重要性,本节中我们来看看支撑机器学习的基础科学计算库。


NumPy 是一个数学库,用于在Python中处理n维数组。它使你能够高效地进行计算。由于其出色的能力,它在处理数组、字典、函数、数据类型和图像方面优于常规Python。你需要了解NumPy。


SciPy 是一个数值算法和特定领域工具箱的集合,包括信号处理、优化、统计学等。SciPy是进行科学和高性能计算的一个优秀库。
Matplotlib 是一个非常流行的绘图包,提供2D和3D绘图功能。



掌握这三个构建在Python之上的包的基础知识,对于希望解决实际问题的数据科学家来说是一笔宝贵的财富。


如果你不熟悉这些包,建议你先学习《使用Python进行数据分析》课程。该课程涵盖了这些包中的大部分实用主题。


数据处理与机器学习库 🤖

了解了基础科学计算库后,我们接下来看看专门用于数据处理和机器学习的强大库。


Pandas 库是一个非常高层次的Python库,它提供了高性能、易于使用的数据结构。它拥有许多用于数据导入、操作和分析的函数。特别是,它为操作数值表和时间序列提供了数据结构和操作。

Scikit-learn 是一个机器学习算法和工具的集合,这也是我们本课程的重点,你将学习如何使用它。由于我们将在实验中大量使用Scikit-learn,让我详细解释一下它,并展示它为何在数据科学家中如此受欢迎。



Scikit-learn是Python编程语言的免费机器学习库。它包含了大多数分类、回归和聚类算法,并且设计用于与Python数值和科学库NumPy和SciPy协同工作。此外,它包含了非常完善的文档。


最重要的是,使用Scikit-learn只需几行Python代码就能轻松实现机器学习模型。机器学习流程中需要完成的大多数任务都已经在Scikit-learn中实现,包括数据预处理、特征选择、特征提取、训练测试集划分、定义算法、拟合模型、调参、预测、评估以及导出模型。
让我展示一个使用这个库的例子。你现在不需要理解代码,只需看看如何用几行代码轻松构建一个模型。


以下是使用Scikit-learn构建支持向量机分类器的核心代码示例:

# 导入必要的模块
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import confusion_matrix


# 1. 数据预处理:标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 2. 划分训练集和测试集 (通常在数据加载后立即进行)
# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 3. 设置算法(估计器)
clf = svm.SVC(gamma=0.001, C=100.)


# 4. 使用训练集训练模型
clf.fit(X_train_scaled, y_train)


# 5. 使用测试集进行预测
predictions = clf.predict(X_test_scaled)

# 6. 评估模型准确性(例如使用混淆矩阵)
cm = confusion_matrix(y_test, predictions)



基本上,机器学习算法受益于数据集的标准化。如果你的数据集中存在一些异常值或不同尺度的字段,你必须修复它们。Scikit-learn的预处理包提供了几个常见的实用函数和转换器类,用于将原始特征向量更改为适合建模的向量形式。


你必须将数据集拆分为训练集和测试集,以训练你的模型,然后单独测试模型的准确性。Scikit-learn可以用一行代码为你将数组或矩阵随机拆分为训练子集和测试子集。


然后你可以设置你的算法。例如,你可以使用支持向量分类算法构建一个分类器。我们称我们的估计器实例为clf并初始化其参数。

现在,你可以通过将训练集传递给fit方法来用训练集训练你的模型,clf模型学习对未知案例进行分类。


然后我们可以使用测试集来运行预测。结果告诉我们每个未知值的类别是什么。此外,你可以使用不同的指标来评估模型的准确性,例如使用混淆矩阵来显示结果。最后,保存你的模型。
你可能会发现所有这些或部分机器学习术语令人困惑,但别担心,我们将在接下来的视频中讨论所有这些主题。要记住的最重要的一点是,使用Scikit-learn,整个机器学习任务的过程只需几行代码即可简单完成。
请注意,虽然使用NumPy或SciPy包也可以完成所有这些工作,但不会那么容易,当然,如果你使用纯Python编程来实现所有这些任务,则需要更多的编码。
总结 📝
本节课中我们一起学习了Python在机器学习中的应用基础。我们介绍了核心的科学计算库NumPy、SciPy和Matplotlib,它们是数据处理和可视化的基石。接着,我们深入探讨了专门用于机器学习的库Scikit-learn,了解了它如何通过简洁的代码实现从数据预处理到模型评估的完整机器学习流程。掌握这些工具是成为一名高效的数据科学家和机器学习实践者的关键第一步。
005:监督式与非监督式学习 🧠

在本节课中,我们将学习机器学习中两个核心范式:监督式学习与非监督式学习。我们将了解它们的基本概念、区别以及各自的应用场景。



概述:什么是监督式学习? 👀

理解监督式学习概念的一个简单方法是直接观察构成它的词语。
“监督”意味着观察并指导一项任务、项目或活动的执行。


显然,我们并非要监督一个人。相反,我们将监督一个机器学习模型,该模型可能能够生成我们在此处看到的分类区域。
那么,我们如何监督一个机器学习模型呢?


我们通过教导模型来实现这一点,即我们为模型加载知识,以便让它预测未来的实例。但这引出了下一个问题:我们究竟如何教导一个模型?
教导模型:使用标记数据集 📊
我们通过使用来自标记数据集的一些数据来训练模型,从而教导它。需要注意的是,数据是标记过的。
一个标记数据集看起来是什么样子?它可能类似于这样。这个例子取自癌症数据集。如你所见,我们有一些患者的历史数据,并且我们已经知道每一行的类别。
让我们先介绍这个表格的一些组成部分。出现在这里的名称,如“肿块厚度”、“细胞大小均匀性”、“细胞形状均匀性”、“边缘粘附”等,被称为属性。列被称为特征,其中包含数据。如果你绘制这些数据并查看图表上的单个数据点,它将拥有所有这些属性。这构成了图表上的一行,也称为一个观测值。
直接查看数据的值,可以有两种类型。第一种是数值型。在处理机器学习时,最常用的数据是数值型的。第二种是分类型。也就是说,它是非数值型的,因为它包含字符而非数字。在本例中,它是分类的,因为该数据集是为分类而构建的。
监督式学习的两大技术 🎯

监督式学习技术有两种类型:分类和回归。
分类是预测一个离散的类别标签或分类的过程。
回归是预测一个连续值的过程,与分类中预测分类值相反。
请看这个数据集。它与不同汽车的二氧化碳排放量有关。它包括各种汽车型号的发动机尺寸、气缸数、油耗和二氧化碳排放量。给定这个数据集,你可以使用回归,通过其他字段(如发动机尺寸或气缸数)来预测一辆新车的二氧化碳排放量。
过渡到非监督式学习 🔄
既然我们知道了监督式学习的含义,你认为非监督式学习是什么意思?是的,非监督式学习正如其名。我们不监督模型,而是让模型自行工作,以发现人眼可能无法看到的信息。
这意味着非监督式算法在数据集上进行训练,并对未标记的数据得出结论。
一般来说,非监督式学习比监督式学习拥有更复杂的算法,因为我们对数据或预期结果知之甚少。
非监督式学习的主要技术 🧩
以下是几种最广泛使用的非监督式机器学习技术:
- 降维:降维和/或特征选择在其中扮演重要角色,通过减少冗余特征使分类更容易。
- 市场篮子分析:这是一种建模技术,基于这样的理论:如果你购买某一组商品,你更有可能购买另一组商品。
- 密度估计:这是一个非常简单的概念,主要用于探索数据以发现其中的某些结构。
- 聚类:聚类被认为是最流行的非监督式机器学习技术之一,用于以某种方式对相似的数据点或对象进行分组。
聚类分析在不同领域有许多应用,无论是银行希望根据某些特征细分其客户,还是帮助个人组织并分组他或她最喜欢的音乐类型。
一般来说,聚类主要用于发现结构、总结和异常检测。
总结与对比 📝
本节课中我们一起学习了监督式学习与非监督式学习的核心内容。
总而言之,监督式学习和非监督式学习之间最大的区别在于:监督式学习处理标记数据,而非监督式学习处理未标记数据。
在监督式学习中,我们有用于分类和回归的机器学习算法。在非监督式学习中,我们有诸如聚类等方法。
与监督式学习相比,非监督式学习的模型更少,可用于确保模型结果准确的评估方法也更少。因此,非监督式学习创造了一个可控性较低的环境,因为机器在为我们创造结果。
006:回归分析导论 📈
在本节课中,我们将要学习回归分析的基本概念。回归分析是机器学习中用于预测连续数值的重要方法。我们将通过一个汽车二氧化碳排放预测的例子,来理解回归分析的核心思想、变量类型以及实际应用场景。

概述
回归分析旨在根据一个或多个自变量来预测一个连续的因变量。例如,我们可以根据汽车的发动机大小和气缸数量来预测其二氧化碳排放量。接下来,我们将详细探讨回归分析的基本组成部分。


回归分析示例

观察以下数据集,它记录了不同汽车的发动机大小、气缸数量、油耗以及二氧化碳排放量。






核心问题是:给定这个数据集,我们能否使用其他字段(如发动机大小或气缸数量)来预测汽车的二氧化碳排放量?




假设我们拥有不同汽车的历史数据,并且假设第9行所示的汽车尚未生产,但我们希望估算其生产后的大致二氧化碳排放量。这是否可能?





我们可以使用回归方法,借助其他变量来预测如二氧化碳排放量这样的连续值。




回归分析的核心概念
上一节我们介绍了回归分析的应用场景,本节中我们来看看其核心定义与变量类型。

回归的本质是预测一个连续值的过程。


在回归分析中,存在两种类型的变量:
- 因变量 (Dependent Variable)
- 一个或多个自变量 (Independent Variables)



因变量可以被视为我们研究并试图预测的状态、目标或最终结果。
自变量(也称为解释变量)可以被视为导致这些状态的原因。


自变量通常用 X 表示。


因变量用 y 表示。一个回归模型将 y(因变量)与 X(自变量)的函数关联起来。


回归分析的关键点在于,我们的因变量值必须是连续的,而不能是离散值。



然而,自变量可以在分类或连续的测量尺度上进行度量。



因此,我们在此希望做的是:利用一些汽车的历史数据及其一个或多个特征,从这些数据中构建一个模型。我们使用回归来构建这样的回归估计模型。




然后,该模型被用于预测一辆新的或未知汽车的预期二氧化碳排放量。





回归模型的类型
了解了基本概念后,我们来看看回归模型的主要分类。
基本上,回归模型有两种类型:简单回归和多元回归。


简单回归是指使用一个自变量来估计一个因变量。它可以是线性的,也可以是非线性的。例如,使用发动机大小这个变量来预测二氧化碳排放量。






回归的线性性基于自变量和因变量之间关系的性质。当存在多于一个自变量时,该过程称为多元线性回归。例如,使用发动机大小和气缸数量来预测给定汽车的二氧化碳排放量。同样,根据因变量和自变量之间的关系,它可以是线性或非线性回归。




回归分析的应用场景
我们已经介绍了回归模型的类型,现在让我们探讨一些回归分析的实际应用示例。

本质上,当我们想要估计一个连续值时,就会使用回归分析。




以下是回归分析的一些典型应用领域:

-
销售预测:例如,尝试根据年龄、教育程度和工作年限等自变量来预测销售人员的年度总销售额。
![]()
![]()
-
心理学:例如,根据人口统计和心理因素确定个人满意度。
![]()
![]()
-
房地产:基于房屋面积、卧室数量等预测某个区域的房屋价格。
![]()
![]()
-
收入预测:根据工作时间、教育程度、职业、性别、年龄、工作经验等自变量预测就业收入。
![]()
![]()
事实上,你可以在金融、医疗保健、零售等许多其他领域或领域中找到回归分析有用性的例子。








总结
本节课中我们一起学习了回归分析的基础知识。我们了解到回归是用于预测连续值的强大工具,并区分了因变量 (y) 和自变量 (X)。我们探讨了简单回归与多元回归的区别,以及线性与非线性关系的概念。最后,我们看到了回归分析在销售、心理学、房地产和收入预测等多个领域的实际应用。
存在许多回归算法,每种算法都有其自身的重要性以及最适合其应用的具体条件。虽然本课程仅涵盖了其中一部分,但它为你探索不同的回归技术提供了足够的基础知识。
007:简单线性回归 📈




在本节课中,我们将学习线性回归的基本概念,这是一种用于预测连续值的机器学习方法。我们将通过一个汽车二氧化碳排放预测的实例,理解简单线性回归的工作原理、如何找到最佳拟合线,以及如何使用该模型进行预测。






概述




线性回归是一种用于描述两个或多个变量之间线性关系的模型。它通过拟合一条直线(或超平面)来预测一个连续的因变量(目标值)。本节课我们将重点学习简单线性回归,即只使用一个自变量来预测因变量的情况。



什么是线性回归?




线性回归是一种近似线性模型,用于描述变量之间的关系。在简单线性回归中,存在两个变量:
- 因变量 (Dependent Variable):我们想要预测的值,必须是连续值。
- 自变量 (Independent Variable):用于预测因变量的值,可以是连续值或分类值。

核心公式:y_hat = θ₀ + θ₁ * x₁
y_hat是预测值。x₁是自变量。θ₀是截距。θ₁是斜率(或梯度)。

线性回归的类型


线性回归模型主要分为两种:





以下是两种主要类型:
- 简单线性回归:使用一个自变量来估计因变量。例如,使用发动机排量预测二氧化碳排放量。
- 多元线性回归:使用多个自变量来估计因变量。例如,使用发动机排量和气缸数预测二氧化碳排放量。



本节课我们专注于简单线性回归。






线性回归如何工作?




为了理解线性回归,我们可以将数据可视化。以发动机排量作为自变量(x轴),排放量作为因变量(y轴)绘制散点图。



散点图可以清晰地展示变量之间的关系。如果数据点大致呈线性分布,我们就可以尝试用一条直线来拟合它们。这条直线就是我们的回归模型,可以用来预测新数据点的值。



上一节我们介绍了线性回归的基本概念,本节中我们来看看如何找到这条“最佳拟合线”。







寻找最佳拟合线




最佳拟合线的目标是使模型预测值与实际值之间的误差最小。这个误差也称为残差,即数据点到拟合回归线的垂直距离。


我们的目标是使所有数据点的残差平均值最小。在数学上,这通常通过最小化均方误差来实现。


均方误差公式:MSE = (1/n) * Σ(y_i - y_hat_i)²
n是数据点的数量。y_i是第 i 个实际值。y_hat_i是第 i 个预测值。


线性回归的目标就是找到参数 θ₀ 和 θ₁,使得 MSE 最小化。







如何计算参数 θ₀ 和 θ₁?



我们可以使用数学公式直接根据数据计算最佳拟合线的参数 θ₀(截距)和 θ₁(斜率)。



计算步骤如下:
- 计算自变量
x的平均值x̄和因变量y的平均值ȳ。 - 使用以下公式计算斜率
θ₁:
θ₁ = Σ((x_i - x̄) * (y_i - ȳ)) / Σ((x_i - x̄)²) - 使用以下公式计算截距
θ₀:
θ₀ = ȳ - θ₁ * x̄

注意:在实际应用中,我们通常使用Python(如scikit-learn库)、R或Scala等工具来自动计算这些参数,但理解其背后的原理非常重要。
通过计算,我们可能得到类似 θ₀ = 125.74, θ₁ = 39 的结果。那么我们的线性模型就是:CO2排放量 = 125.74 + 39 * 发动机排量。
使用模型进行预测


找到线性方程的参数后,对新数据进行预测就变得非常简单,只需将自变量的值代入方程即可。




例如,使用我们得到的模型 CO2排放量 = 125 + 39 * 发动机排量,预测一辆发动机排量为2.4的汽车的排放量:
预测排放量 = 125 + 39 * 2.4 = 218.6






线性回归的优点




线性回归之所以被广泛使用,有以下几个原因:
- 简单易懂:模型原理直观,易于理解和解释。
- 计算高效:训练和预测速度通常很快。
- 无需复杂调参:不像K近邻需要选择K值,或神经网络需要调整学习率,线性回归的参数可以通过数学方法直接计算。






总结




本节课我们一起学习了简单线性回归。我们了解了它如何通过一个自变量来预测连续的因变量,掌握了最佳拟合线的概念及其代表方程 y_hat = θ₀ + θ₁ * x₁。我们探讨了通过最小化均方误差来寻找最佳参数 θ₀ 和 θ₁ 的原理,并学习了如何使用最终的线性模型对新数据进行预测。线性回归因其简单、快速和可解释性强,成为机器学习中一个基础且重要的工具。
008:回归模型评估 📊



在本节课中,我们将学习如何评估回归模型的性能。回归的目标是构建一个能够准确预测未知案例的模型。为此,在构建模型后,我们必须进行回归评估。


我们将介绍并讨论两种可用于实现此目标的评估方法:在同一数据集上训练和测试 以及 训练测试分割。我们将探讨每种方法的含义、优缺点,并介绍一些用于衡量回归模型准确性的指标。
在同一数据集上训练和测试 📈




上一节我们介绍了模型评估的目标,本节中我们来看看第一种评估方法。



当考虑评估模型时,我们显然希望选择能提供最准确结果的方法。那么问题来了:如何计算模型的准确性?换句话说,在使用给定数据集并构建了线性回归等模型后,我们能在多大程度上信任该模型对未知样本的预测?
解决方案之一是选择数据集的一部分用于测试。


例如,假设我们的数据集中有10条记录。我们使用整个数据集进行训练,并利用这个训练集构建模型。现在,我们选择数据集的一小部分,例如第6到第9行,但不包含标签。这个集合称为测试集,它实际上有标签,但这些标签不用于预测,仅作为真实值使用。这些标签被称为测试集的实际值。


接着,我们将测试部分的特征集输入到我们构建的模型中,并预测目标值。最后,我们将模型的预测值与测试集中的实际值进行比较。这反映了模型的实际准确程度。报告模型准确性的指标有多种,但大多数都基于预测值与实际值的相似性来工作。
让我们看看计算回归模型准确性最简单的指标之一。如前所述,我们只需比较实际值 Y 与预测值 Ŷ(在测试集上)。模型的误差计算为所有行的预测值与实际值之间的平均差。我们可以将此误差写成一个公式。


以下是这种方法的要点:
- 方法:使用整个数据集训练模型,然后使用同一数据集的一部分进行测试。
- 特点:这种方法很可能具有较高的训练精度,但较低的样本外精度,因为模型从训练中已经了解了所有测试数据点。


理解训练精度与样本外精度 🎯
我们提到,在同一数据集上进行训练和测试会产生较高的训练精度,但训练精度究竟是什么?

训练精度是模型使用测试数据集时做出的正确预测的百分比。然而,高训练精度不一定是一件好事。例如,高训练精度可能导致过拟合。这意味着模型对数据集的训练过度,可能捕捉到噪声并产生一个非泛化的模型。

样本外精度是模型在未训练过的数据上做出正确预测的百分比。在同一数据集上进行训练和测试很可能会因为过拟合的可能性而导致较低的样本外精度。


我们的模型拥有高的样本外精度非常重要,因为模型的目标准确预测未知数据。那么,如何提高样本外精度呢?一种方法是使用另一种称为训练测试分割的评估方法。

训练测试分割 🔀

上一节我们了解了第一种评估方法的局限性,本节中我们来看看更优的解决方案。

在这种方法中,我们选择数据集的一部分用于训练(例如第0到5行),其余部分用于测试(例如第6到9行)。模型在训练集上构建。然后,测试特征集被输入模型进行预测。最后,将测试集的预测值与测试集的实际值进行比较。



以下是这种方法的要点:
- 方法:将数据集分割成互斥的训练集和测试集,用训练集训练,用测试集测试。
- 优点:由于测试数据集不是用于训练数据的数据集的一部分,因此能更准确地评估样本外精度。这对于现实世界的问题更为真实。
- 注意:请确保之后使用测试集重新训练你的模型,因为你不想丢失潜在的有价值数据。
训练测试分割的问题是,它高度依赖于用于训练和测试的数据集。这种变化使得训练测试分割比在同一数据集上训练和测试具有更好的样本外预测能力,但由于这种依赖性,它仍然存在一些问题。
另一种称为 K折交叉验证 的评估模型解决了大部分这些问题。
K折交叉验证简介 🔄
如何解决因依赖性导致的高方差问题?答案是:取平均值。


让我解释一下K折交叉验证的基本概念,看看我们如何解决这个问题。整个数据集由左上角图像中的点表示。如果我们设置K=4折,那么我们将数据集分割如图所示。

以下是K折交叉验证的基本步骤:
- 第一折:使用前25%的数据集进行测试,其余用于训练。使用训练集构建模型,并使用测试集进行评估。
- 第二折:使用第二个25%的数据集进行测试,其余用于训练模型。再次计算模型的准确性。
- 后续折:继续此过程,直到所有折都完成。
- 汇总:最后,对所有四次评估的结果取平均值。即,计算每一折的准确性,然后求平均。请注意,每一折都是独立的,任何一折中的训练数据都不会在另一折中使用。
K折交叉验证以其最简单的形式,使用相同的数据集执行多次不同的训练测试分割,然后对结果进行平均,以产生更一致的样本外精度。我们想向您展示一种解决了先前方法中描述的一些问题的评估模型,然而,深入探讨K折交叉验证模型超出了本课程的范围。
总结 📝
本节课中我们一起学习了回归模型评估的两种主要方法:在同一数据集上训练和测试、训练测试分割,并简要了解了K折交叉验证的概念。我们明确了训练精度与样本外精度的区别,认识到高的样本外精度对于模型的实用价值至关重要。通过合理的评估方法,我们可以更好地了解模型的泛化能力,从而构建出更可靠的预测模型。
009:回归模型评价指标

在本节课中,我们将要学习如何评估回归模型的性能。我们将介绍几种核心的评价指标,理解它们的含义、计算方式以及适用场景。

评价指标用于解释模型的性能。对于回归模型,我们将讨论几种常用的评价指标。

什么是模型误差?🤔

上一节我们介绍了评价指标的重要性,本节中我们来看看模型误差的具体定义。

在回归的语境下,模型的误差是指数据点与算法生成的趋势线之间的差值。

由于存在多个数据点,可以通过多种方式来确定误差。


核心评价指标详解📈
以下是几种关键的回归模型评价指标。


平均绝对误差

平均绝对误差是误差绝对值的平均值。这是最容易理解的指标,因为它就是平均误差。
其公式为:
MAE = (1/n) * Σ |y_i - ŷ_i|


均方误差

均方误差是误差平方的平均值。它比平均绝对误差更常用,因为它更侧重于较大的误差。
这是由于平方项会以指数方式放大较大误差相对于较小误差的影响。


其公式为:
MSE = (1/n) * Σ (y_i - ŷ_i)^2

均方根误差

均方根误差是均方误差的平方根。

这是最流行的评价指标之一,因为均方根误差的解释单位与响应向量或Y值的单位相同,使得其信息易于关联。


其公式为:
RMSE = √MSE

相对绝对误差
相对绝对误差,也称为残差平方和,其中ȳ是y的平均值。它通过除以简单预测器的总绝对误差来对总绝对误差进行归一化。

其公式为:
RAE = Σ |y_i - ŷ_i| / Σ |y_i - ȳ|


相对平方误差
相对平方误差与相对绝对误差非常相似,但被数据科学界广泛采用,因为它用于计算R平方。

其公式为:
RSE = Σ (y_i - ŷ_i)^2 / Σ (y_i - ȳ)^2


R平方
R平方本身并非误差,而是衡量模型准确性的流行指标。



它表示数据值距离拟合回归线的接近程度。
R平方值越高,模型对数据的拟合程度越好。

其公式为:
R² = 1 - RSE


如何选择评价指标?🎯

以上每种指标都可用于量化你的预测效果。
指标的选择完全取决于模型类型、数据类型和知识领域。遗憾的是,更深入的探讨超出了本课程的范围。

总结📝


本节课中我们一起学习了回归模型的评价指标。我们定义了模型误差,并详细介绍了平均绝对误差、均方误差、均方根误差、相对绝对误差、相对平方误差以及R平方等核心指标。理解这些指标将帮助你有效地评估和比较不同回归模型的性能。
010:多元线性回归 📈



在本节课中,我们将要学习多元线性回归。这是一种使用多个自变量来预测一个连续因变量的统计方法。我们将探讨其基本概念、应用场景、模型构建方式以及如何找到最优参数。



线性回归的类型 📊
上一节我们介绍了线性回归的基本概念,本节中我们来看看它的具体类型。
线性回归模型主要分为两种:简单线性回归和多元线性回归。


- 简单线性回归:使用一个自变量来估计一个因变量。例如,使用发动机大小来预测二氧化碳排放量。
- 多元线性回归:使用多个自变量来预测一个因变量。例如,同时使用发动机大小和气缸数量来预测二氧化碳排放量。

本视频的重点是多元线性回归。多元线性回归是简单线性回归的扩展。


多元线性回归的应用 🎯
在深入探讨具体数据集和多元线性回归的工作原理之前,我们先了解它能解决什么问题以及何时使用它。


多元线性回归主要有两个应用方向:



以下是多元线性回归的两个主要应用:


- 识别影响强度:用于识别自变量对因变量的影响强度。例如,复习时间、考试焦虑、出勤率和性别是否对学生的考试成绩有影响?
- 预测变化影响:用于预测变化的影响,即理解当改变自变量时,因变量如何变化。例如,在评估个人健康数据时,多元线性回归可以告诉你,在保持其他因素不变的情况下,患者的体重指数每增加或减少一个单位,其血压会上升或下降多少。
与简单线性回归一样,多元线性回归是一种预测连续变量的方法。它使用多个被称为自变量或预测变量的变量,来最佳地预测目标变量(也称为因变量)的值。
多元线性回归模型 🧮
现在,我们来具体看看多元线性回归的数学模型。
在多元线性回归中,目标值 Y 是自变量 X 的线性组合。
例如,你可以根据汽车的发动机大小、气缸数量和油耗等自变量来预测其二氧化碳排放量。
多元线性回归模型的一般形式如下:
公式: ŷ = θ₀ + θ₁x₁ + θ₂x₂ + ... + θₙxₙ
其中:
ŷ是预测值。θ₀是截距(或偏置参数)。θ₁, θ₂, ..., θₙ是各自变量x₁, x₂, ..., xₙ的系数。x₁, x₂, ..., xₙ是特征值(自变量)。
这个方程也可以用向量形式表示:


公式: ŷ = θᵀX

其中:
θ是一个(n+1) x 1的参数向量[θ₀, θ₁, ..., θₙ]ᵀ。X是一个(n+1) x 1的特征向量[1, x₁, x₂, ..., xₙ]ᵀ。第一个元素设为1,是为了将θ₀转化为截距项。


θ 也称为回归方程的参数向量或权重向量。X 是特征集。


在一维空间(一个自变量)中,θᵀX 表示一条直线(简单线性回归)。在更高维度(多个自变量)中,它表示一个平面或超平面(多元线性回归)。我们的目标就是为数据找到最佳拟合的超平面。



如何找到最优参数? 🔍
为了用模型进行准确预测,我们需要找到最优的参数向量 θ。那么,什么是最优参数,又如何找到它们呢?
简而言之,最优参数是能使模型预测误差最小的参数。
假设我们已经知道了参数向量 θ 的值。我们可以用模型和数据集第一行的特征来预测第一辆车的二氧化碳排放量 ŷ。例如,预测值 ŷ 是140。


而实际值 y 是196。预测值与实际值的差异就是误差:196 - 140 = 56。这个误差是单个数据点到拟合回归模型的距离。


所有残差误差的平均值可以衡量模型代表数据集的优劣,这被称为均方误差。


公式: MSE = (1/n) * Σ(yᵢ - ŷᵢ)²


多元线性回归的目标就是最小化这个MSE方程。为了最小化MSE,我们需要找到最佳的参数 θ。



参数估计方法 ⚙️



我们如何找到多元线性回归的参数或系数呢?

主要有两种常见的方法来估计这些系数的值:



以下是两种主要的参数估计方法:
- 普通最小二乘法:通过最小化均方误差来估计系数值。这种方法将数据视为矩阵,并使用线性代数运算来估计
θ的最优值。当数据集行数少于10,000时可以考虑此方法,但对于更大的数据集,计算矩阵运算的时间复杂度可能很高。 - 优化算法:使用优化算法来寻找最佳参数。即通过迭代最小化模型在训练数据上的误差来优化系数值。例如,梯度下降法从每个系数的随机值开始优化,然后计算误差,并通过多次迭代明智地改变系数来最小化误差。梯度下降法适用于大型数据集。


当然,还有其他估计多元线性回归参数的方法,可以自行探索。



进行预测 📈



找到线性方程的参数后,进行预测就变得非常简单,只需为特定的输入集求解方程即可。

想象一下,我们要根据其他变量预测数据集中第9条记录的汽车的二氧化碳排放量 Y。



我们的线性回归模型表示为:ŷ = θᵀX。



一旦找到参数,就可以将它们代入线性模型方程。例如,假设我们找到的参数是:θ₀ = 125, θ₁ = 6.2, θ₂ = 14, 等等。

映射到我们的数据集,线性模型可以重写为:
CO2排放量 = 125 + 6.2 * 发动机大小 + 14 * 气缸数 + ...

现在,将第9行数据(例如,发动机大小为2.4,气缸数为4等)代入方程:
CO2排放量 = 125 + 6.2 * 2.4 + 14 * 4 + ...


我们可以预测这辆特定汽车的二氧化碳排放量约为214.1。




注意事项与常见问题 ❓


在使用多元线性回归时,需要注意以下几个关键问题:


以下是关于多元线性回归的几个重要注意事项:

- 使用多少个自变量? 添加过多的自变量而没有理论依据可能导致过拟合。过拟合模型过于复杂,无法泛化到新数据上进行预测。因此,建议避免使用过多变量进行预测。
- 自变量必须是连续的吗? 分类自变量可以通过转换为数值变量纳入回归模型。例如,对于一个二元变量(如汽车类型),可以编码为:0代表手动挡,1代表自动挡。
- 线性关系假设:多元线性回归是线性回归的一种,因此因变量与每个自变量之间需要存在线性关系。可以通过散点图等方式检查线性关系。如果关系不是线性的,则可能需要考虑其他回归方法。




总结 🎓
本节课中我们一起学习了多元线性回归。
我们了解到,多元线性回归使用多个自变量来预测一个连续因变量。其核心模型是 ŷ = θ₀ + θ₁x₁ + θ₂x₂ + ... + θₙxₙ,目标是找到最优参数 θ 以最小化预测误差(如均方误差)。参数估计可以通过普通最小二乘法或优化算法(如梯度下降)实现。最后,我们讨论了在实际应用中需要注意的问题,如避免过拟合和处理分类变量。
多元线性回归是一个强大的工具,可以帮助我们理解多个因素如何共同影响一个结果,并基于此做出预测。
011:分类算法导论 🎯

在本节课中,我们将学习机器学习中的分类算法。分类是一种监督学习方法,用于将未知项目归类到离散的类别中。我们将探讨分类的基本概念、工作原理、应用场景以及常见的分类算法类型。
什么是分类? 🤔


在机器学习中,分类是一种监督学习方法。它可以被视为将某些未知项目分类到离散类别集合中的一种手段。分类试图学习一组特征变量与目标变量之间的关系。

分类中的目标属性是一个分类变量,具有离散值。
分类器如何工作? ⚙️
上一节我们介绍了分类的基本概念,本节中我们来看看分类器是如何工作的。
给定一组带有目标标签的训练数据点,分类会为未标记的测试用例确定类别标签。
以下是一个例子来说明这一点。
贷款违约预测是分类的一个很好的例子。假设银行担心贷款可能无法偿还。如果以前的贷款违约数据可以用来预测哪些客户可能在偿还贷款方面存在问题,这些高风险客户的贷款申请可以被拒绝,或者被提供替代产品。
贷款违约预测器的目标是使用现有的贷款违约数据,这些数据是关于客户的信息,如年龄、收入、教育等,来构建一个分类器。将新客户或潜在的未来违约者传递给模型,然后将其标记为违约者或非违约者,例如,零或一。
这就是分类器预测未标记测试用例的方式。请注意,这个具体例子是关于具有两个值的二元分类器。
我们也可以为二元分类和多类分类构建分类器模型。
例如,假设您收集了一组患有相同疾病的患者的数据。在治疗过程中,每位患者对三种药物中的一种有反应。您可以使用这个带有分类算法的标记数据集来构建分类模型。然后,您可以使用它来找出哪种药物可能适合未来患有相同疾病的患者。如您所见,这是一个多类分类的例子。
分类的应用场景 📈
分类在不同的业务场景中也有应用。例如,预测客户所属的类别,用于客户流失检测(预测客户是否会转向其他提供商或品牌),或者预测客户是否会对特定的广告活动做出反应。

数据分类在广泛的行业中都有多种应用。本质上,许多问题可以表示为特征变量和目标变量之间的关联,尤其是在有标签数据可用时。这为分类提供了广泛的应用范围。例如,分类可以用于电子邮件过滤、语音识别、手写识别、生物识别、文档分类等等。
常见的分类算法类型 🧠
以下是机器学习中分类算法的类型。
它们包括:
- 决策树
- 朴素贝叶斯
- 线性判别分析
- K最近邻
- 逻辑回归
- 神经网络
- 支持向量机


分类算法有很多类型,在本课程中我们只涵盖其中几种。
总结 📝
本节课中我们一起学习了机器学习中的分类算法。我们了解了分类是一种监督学习方法,用于将数据点分配到预定义的类别中。我们探讨了分类器的工作原理,包括如何利用带标签的训练数据来预测新数据的类别。我们还介绍了分类在贷款预测、医疗诊断和客户分析等多个领域的实际应用。最后,我们列举了几种常见的分类算法类型,为后续深入学习这些具体算法奠定了基础。
012:K近邻算法 🧠
在本节课中,我们将学习K近邻算法。这是一种基于相似度的分类算法,通过比较新数据点与已知数据点的“距离”来预测其类别。我们将从基本概念入手,逐步理解其工作原理、关键参数的选择以及实际应用场景。


🎯 算法概述与问题引入

想象一个电信服务提供商根据客户的使用模式,将客户分成了四个群体。





如果能够利用人口统计数据来预测客户所属的群体,公司就可以为潜在客户定制个性化的服务方案。




这是一个分类问题。给定一个带有预定义标签的数据集,我们需要构建一个模型,用于预测新数据点或未知案例的类别。




本例将重点使用如地区、年龄和婚姻状况等人口统计数据来预测使用模式。




目标字段名为“Custcat”,它有四个可能的值,分别对应四个客户群体。




这四个群体是:基础服务、电子服务、增强服务和全面服务。

我们的目标是构建一个分类器。例如,使用第0到第7行的数据来预测第8行的类别。我们将使用一种特定的分类方法:K近邻算法。

📊 算法直观理解
为了演示,我们仅使用两个特征作为预测变量:年龄和收入,并根据客户的群体归属绘制散点图。



假设我们有一个新客户,例如记录号为8,已知其年龄和收入。我们如何确定这位客户的类别?能否找到距离最近的一个案例,并将相同的类别标签分配给新客户?


我们能否说,新客户很可能属于第4类(全面服务),因为它的最近邻居也是第4类?是的,可以。实际上,这就是第一个最近邻。但问题是,我们能在多大程度上信任仅基于第一个最近邻的判断?


如果第一个最近邻是一个非常特殊的案例或异常值,那么这个判断可能很差。

现在,让我们再次查看散点图。


与其只选择第一个最近邻,不如选择五个最近邻,并通过多数表决来决定新客户的类别。


在这种情况下,五个最近邻中有三个告诉我们应归为第3类(增强服务)。这是否更合理?



是的,确实如此。在这个例子中,K近邻算法中的K值就是5。


这个例子揭示了K近邻算法背后的直观思想。
🔍 K近邻算法定义
K近邻算法是一种分类算法,它利用一组已标记的数据点来学习如何标记其他数据点。

该算法根据数据点与其他数据点的相似性对其进行分类。



在K近邻中,彼此接近的数据点被称为“邻居”。K近邻算法基于这样一个范式:具有相同类别标签的相似案例彼此靠近。因此,两个案例之间的距离是它们不相似性的度量。


计算两个数据点相似性(或相反,距离/不相似性)的方法有多种,例如可以使用欧几里得距离。
⚙️ 算法工作原理
在分类问题中,K近邻算法的工作流程如下:
以下是K近邻算法进行分类的四个步骤:
- 为K选择一个值。
- 计算新数据点(待预测点)与数据集中每个数据点之间的距离。
- 在训练数据中搜索与未知数据点测量值最接近的K个观测值。
- 使用这K个最近邻中最常见的响应值来预测未知数据点的类别。



这个算法中有两部分可能令人困惑:第一,如何选择正确的K值;第二,如何计算案例之间的相似性。

📏 如何计算相似性(距离)

让我们先从第二个问题开始:如何计算两个数据点之间的相似性。

假设有两个客户:客户1和客户2。暂时假设这两个客户只有一个特征:年龄。


我们可以很容易地使用一种特定的闵可夫斯基距离来计算这两个客户的距离,即欧几里得距离。


公式:距离 = |x1 - x2|
计算示例:客户1年龄34岁,客户2年龄30岁,距离为 |34 - 30| = 4。

如果我们有多个特征,例如年龄和收入,该怎么办?

如果我们拥有每个客户的收入和年龄,仍然可以使用相同的公式,但这次是在二维空间中。


公式(二维欧几里得距离):距离 = sqrt((年龄1-年龄2)^2 + (收入1-收入2)^2)



我们也可以将相同的距离计算推广到多维向量。当然,必须对特征集进行归一化,以获得准确的不相似性度量。还有其他不相似性度量方法,但这高度依赖于数据类型和进行分类的领域。

❓ 如何选择K值
如前所述,K近邻中的K是要检查的最近邻数量,需要由用户指定。那么,如何选择正确的K值呢?


假设我们想找出图表上标记为问号的客户的类别。



如果选择非常小的K值(例如K=1)会发生什么?
第一个最近的点是蓝色的(第1类)。



这将是一个糟糕的预测,因为它周围更多的点是品红色的(第4类)。


实际上,由于它的最近邻是蓝色的,可以说我们捕捉到了数据中的噪声,或者说我们选择了一个数据中的异常点。


过小的K值会导致模型非常复杂,可能造成模型过拟合。
这意味着预测过程不够泛化,无法用于样本外数据。样本外数据是指用于训练模型的数据之外的数据。换句话说,不能信任它用于预测未知样本。



记住,过拟合是不好的,因为我们想要一个适用于任何数据的通用模型,而不仅仅是用于训练的数据。



另一方面,如果选择非常大的K值(例如K=20),模型会变得过度泛化。


那么,如何找到最佳的K值呢?


通用解决方案是: 保留一部分数据用于测试模型的准确性。完成后,选择K=1,使用训练部分建模,并用测试集中的所有样本计算预测准确率。



重复此过程,逐渐增加K值,看看哪个K值能为你的模型带来最佳性能。例如,在我们的案例中,K=4会给出最佳的准确率。



🔄 用于回归问题
最近邻分析也可用于计算连续型目标变量的值。
在这种情况下,使用最近邻目标值的平均值或中位数来获得新案例的预测值。
例如,假设你根据房屋的特征集(如房间数量、面积、建造年份等)来预测其价格。
你可以轻松找到三个最近的邻居房屋(当然,不仅是基于距离,而是基于所有属性),然后将房屋价格预测为这些邻居价格的中位数。
📝 总结
本节课中,我们一起学习了K近邻算法。我们从电信客户分组的实际问题引入,理解了KNN是一种基于相似度和距离进行分类的直观算法。我们详细探讨了算法的工作原理,包括计算数据点间距离(如欧几里得距离)的方法,以及选择合适K值的重要性——K值过小可能导致过拟合,K值过大则会导致欠拟合。最后,我们还了解到KNN不仅可以用于分类,通过取近邻的平均值或中位数,也能应用于回归问题。掌握KNN是理解许多更复杂机器学习模型的重要基础。
013:分类模型评价指标


在本节课中,我们将学习如何评估分类模型的性能。我们将介绍几种常用的评价指标,包括Jaccard指数、F1分数和对数损失。这些指标帮助我们理解模型的准确性,并指出可能需要改进的地方。
概述
评价指标用于解释模型的性能。假设我们有一个电信公司的客户流失历史数据集。我们训练了一个模型,现在想使用测试集计算其准确性。我们将测试集传递给模型,得到预测标签。接下来,我们需要评估这个模型的准确性。基本上,我们通过比较测试集中的实际值与模型预测的值来计算模型的准确性。评价指标在模型开发中起着关键作用,因为它们提供了可能需要改进的领域的见解。
Jaccard指数





首先,我们来看一种最简单的准确性度量方法:Jaccard指数,也称为Jaccard相似系数。
假设Y表示流失数据集的真实标签,Y_hat表示分类器的预测值。那么,我们可以将Jaccard指数定义为两个标签集合交集的大小除以并集的大小。

公式:
[
\text{Jaccard} = \frac{|Y \cap \hat{Y}|}{|Y \cup \hat{Y}|}
]

例如,对于一个大小为10的测试集,如果有8个正确预测(即8个交集),那么根据Jaccard指数计算的准确性为0.66。



如果样本的预测标签集与真实标签集完全匹配,则子集准确性为1.0;否则为0.0。


混淆矩阵


另一种查看分类器准确性的方法是观察混淆矩阵。

例如,假设我们的测试集只有40行。这个矩阵显示了与真实标签相比的正确和错误预测。


每个混淆矩阵的行显示测试集中的实际真实标签,列显示分类器的预测标签。让我们看第一行。

第一行对应测试集中实际流失值为1的客户。如你所见,在40个客户中,有15个客户的流失值为1。在这15个客户中,分类器正确预测了6个为1,9个为0。


这意味着对于6个客户,测试集中的实际流失值为1,分类器也正确预测为1。然而,对于9个客户,实际标签为1,但分类器预测为0,这并不理想。我们可以将其视为模型在第一行的错误。


那么流失值为0的客户呢?让我们看第二行。

看起来有25个客户的流失值为0。分类器正确预测了24个为0,错误预测了1个为1。因此,在预测流失值为0的客户方面,分类器表现良好。
混淆矩阵的一个优点是它显示了模型正确预测或区分类别的能力。在二元分类器的特定情况下,我们可以将这些数字解释为真正例、假负例、真负例和假正例的计数。



精确率与召回率



基于每个部分的计数,我们可以计算每个标签的精确率和召回率。
精确率是在预测了类别标签的情况下提供的准确性度量。它定义为真正例除以真正例与假正例之和。
公式:
[
\text{Precision} = \frac{\text{True Positive}}{\text{True Positive} + \text{False Positive}}
]



召回率是真正例率。它定义为真正例除以真正例与假负例之和。



公式:
[
\text{Recall} = \frac{\text{True Positive}}{\text{True Positive} + \text{False Negative}}
]

因此,我们可以计算每个类别的精确率和召回率。



F1分数
现在我们可以基于每个标签的精确率和召回率计算F1分数。



F1分数是精确率和召回率的调和平均数,其中F1分数的最佳值为1,表示完美的精确率和召回率,最差值为0。这是展示分类器在召回率和精确率方面都有良好值的好方法。它使用F1分数方程定义。


公式:
[
F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
]
例如,类别0(即流失等于0)的F1分数为0.83,类别1(即流失等于1)的F1分数为0.55。最后,我们可以说这个分类器的平均准确性是两个标签F1分数的平均值,即0.72。


请注意,Jaccard指数和F1分数也可用于多类分类器,但这超出了本课程的范围。
对数损失
现在,让我们看看分类器的另一种准确性度量。有时,分类器的输出是类别标签的概率,而不是标签本身。例如,在逻辑回归中,输出可以是客户流失的概率,即“是”或等于1。这个概率值介于0和1之间。
对数损失(Log Loss)衡量分类器的性能,其中预测输出是介于0和1之间的概率值。例如,当实际标签为1时,预测概率为0.13会很差,并导致较高的对数损失。



我们可以使用对数损失方程计算每一行的对数损失,该方程衡量每个预测与实际标签的距离。然后,我们计算测试集所有行的平均对数损失。
显然,理想的分类器具有逐渐减小的对数损失值。因此,对数损失较低的分类器具有更好的准确性。
总结
在本节课中,我们一起学习了分类模型的评价指标。我们介绍了Jaccard指数、混淆矩阵、精确率、召回率、F1分数和对数损失。这些指标帮助我们全面评估分类器的性能,并指导我们改进模型。理解这些指标对于构建有效的机器学习模型至关重要。
014:决策树导论 🌳



在本节课中,我们将要学习决策树的基本概念。决策树是一种直观且强大的机器学习算法,常用于分类和回归任务。我们将通过一个医疗研究的例子,了解决策树如何构建,以及它如何帮助我们做出决策。




什么是决策树? 🤔
决策树是一种树状结构模型,用于基于数据特征进行分类或预测。它通过一系列的问题(即对特征的测试)来对数据进行分割,最终将数据分配到不同的类别中。
决策树的应用场景 🏥
想象你是一名医学研究员,正在为一项研究收集数据。你已经收集了一组患有相同疾病的患者数据。在治疗过程中,每位患者对两种药物(药物A和药物B)中的一种有反应。你的任务是构建一个模型,以确定未来患有相同疾病的患者应使用哪种药物。
该数据集的特征包括患者的年龄、性别、血压和胆固醇水平。目标是每位患者有反应的药物。这是一个二分类问题,你可以使用数据集的训练部分构建决策树,然后用它来预测未知患者的类别,从而决定为新患者开具哪种药物。


决策树的构建过程 🛠️



决策树通过将训练集分割成不同的节点来构建,每个节点包含全部或大部分同一类别的数据。


构建步骤


以下是构建决策树的基本步骤:


- 选择属性:从数据中选择一个属性。
- 计算属性重要性:计算该属性在数据分割中的重要性。在下一个视频中,我们将解释如何计算属性的重要性,以判断它是否是一个有效的属性。
- 分割数据:根据最佳属性的值分割数据。
- 递归构建:进入每个分支,对其余属性重复上述过程。


构建完成后,你可以使用这棵树来预测未知案例的类别,或者根据新患者的特征为其推荐合适的药物。


决策树的结构解析 🌲


决策树的核心在于测试属性并根据测试结果分支案例。


- 内部节点:对应一个测试。
- 分支:对应测试的结果。
- 叶节点:将患者分配到一个类别。


例如,从年龄开始,年龄可以是年轻、中年或老年。如果患者是中年,则直接选择药物B。如果患者是年轻或老年,则需要更多细节(如胆固醇水平、性别或血压)来确定使用哪种药物。
总结 📚
本节课我们一起学习了决策树的基本概念和构建过程。决策树通过测试属性并分支案例来对数据进行分类,是一种直观且易于理解的机器学习算法。在接下来的课程中,我们将深入探讨如何计算属性的重要性,以及如何优化决策树的构建。
015:决策树的构建 🌳

在本节课中,我们将学习决策树模型的构建过程。决策树是一种通过递归划分数据来进行分类的机器学习方法。我们将通过一个药物数据集的例子,详细解释如何选择最佳特征进行数据分割,以及如何通过计算信息增益来构建一个有效的决策树。

概述


决策树使用递归分区的方法对数据进行分类。构建过程的核心在于,每一步都选择最能减少数据“不纯度”的特征进行分割,从而生成尽可能“纯净”的叶节点。

上一节我们介绍了决策树的基本概念,本节中我们来看看如何具体构建一棵决策树。


决策树的构建过程

考虑之前的药物数据集。问题在于,如何基于该数据集构建一棵决策树?
决策树通过递归分区来构建,目的是对数据进行分类。


假设我们的数据集中有14名患者。
算法会选择最具预测性的特征来分割数据。


构建决策树的关键在于,确定基于哪个特征来分割数据是最佳或最具预测性的。



特征选择的重要性

假设我们选择“胆固醇”水平作为第一个分割属性。

它会将我们的数据分成两个分支。如图所示,如果患者的胆固醇水平高,我们并不能很有把握地说药物B适合他。
同样,如果患者的胆固醇水平正常,我们仍然没有足够的证据或信息来确定药物A或药物B是否真正适合。

这是一个糟糕的属性选择示例。因此,让我们尝试另一个属性。


尝试更好的特征


再次,我们有14个病例。

这次,我们选择患者的“性别”属性。

它会将我们的数据分成两个分支:男性和女性。


如图所示,如果患者是女性,我们可以很有把握地说药物B可能适合她。但如果患者是男性,我们则没有足够的证据来确定药物A或B是否适合。

然而,与胆固醇属性相比,这仍然是一个更好的选择,因为结果节点更“纯净”,即节点中的样本要么主要是药物A,要么主要是药物B。
因此,我们可以说性别属性比胆固醇属性更显著,或者换句话说,它比其他属性更具预测性。



预测性与节点不纯度

实际上,预测性是基于节点不纯度的减少。

我们寻找最佳特征,使得基于该特征分割后,叶节点中患者的不纯度降低。因此,在以下案例中,性别特征是一个很好的候选,因为它几乎找到了纯净的患者。


让我们更进一步。
对于男性患者分支,我们再次测试其他属性来分割子树。


我们在这里再次测试胆固醇属性。如图所示,它产生了更纯净的叶节点。

因此,我们可以轻松地在此做出决策。例如,如果患者是男性且胆固醇高,我们当然可以开药物A;但如果胆固醇正常,我们可以很有把握地开药物B。


节点纯度与熵


正如你可能注意到的,选择用于分割数据的属性非常重要,这完全关乎分割后叶节点的纯度。
如果节点中100%的病例都属于目标字段的特定类别,则该节点被认为是纯净的。


实际上,该方法使用递归分区,通过最小化每一步的不纯度,将训练记录分割成段。

节点的不纯度是通过该节点中数据的熵来计算的。那么,什么是熵?

理解熵

熵是信息混乱的量度,即数据中的随机性大小。
节点的熵取决于该节点中数据的随机程度,并为每个节点计算。
在决策树中,我们寻找节点熵最小的树。
熵用于计算该节点中样本的同质性。如果样本完全同质,熵为0;如果样本被平均分割,熵为1。
这意味着,如果一个节点中的所有数据要么是药物A,要么是药物B,那么熵为0;但如果一半数据是药物A,另一半是B,那么熵为1。
你可以使用属性的频率表,通过熵公式轻松计算节点的熵,其中 P 代表某个类别(如药物A或B)的比例。但请记住,你无需手动计算这些,因为你使用的库或包会轻松计算。
计算示例
例如,让我们计算分割前数据集的熵。
我们有9例药物B和5例药物A。
你可以将这些数字代入熵公式,计算分割前目标属性的不纯度。在这种情况下,它是0.94。
那么分割后的熵是多少?现在我们可以测试不同的属性,以找到最具预测性的那个,从而产生两个更纯净的分支。
首先选择患者的胆固醇属性,看看数据如何根据其值进行分割。
例如,当胆固醇正常时,我们有6例药物B和2例药物A。我们可以根据药物A和B的分布计算该节点的熵,本例中为0.8。
但当胆固醇高时,数据被分割为3例药物B和3例药物A。计算其熵,我们可以看到它是1.0。
我们应该遍历所有属性,计算分割后的熵,然后选择最佳属性。
比较不同特征
好的,让我们尝试另一个字段。选择性别属性进行下一次检查。如图所示,当我们使用性别属性分割数据时,当值为女性时,我们有3名患者对药物B有反应,4名患者对药物A有反应。该节点的熵为0.98,这并不十分理想。
然而,在分支的另一侧,当性别属性值为男性时,结果更纯净,有6例药物B,只有1例药物A。该组的熵为0.59。
现在的问题是,在胆固醇和性别属性之间,哪个是更好的选择?哪个更适合作为第一个属性将数据集分成两个分支?或者换句话说,哪个属性能为我们的药物产生更纯净的节点?在哪棵树中,分割后的熵比分割前更小?是熵为0.98和0.59的性别属性,还是熵为0.81和1.0的胆固醇属性?
答案是分割后信息增益更高的树。

信息增益
那么,什么是信息增益?信息增益是分割后可以增加确定性水平的信息。
它是分割前树的熵减去按某个属性分割后的加权熵。
我们可以将信息增益和熵视为对立面。随着熵或随机性的减少,信息增益或确定性增加,反之亦然。
因此,构建决策树就是寻找能返回最高信息增益的属性。
让我们看看如何计算性别属性的信息增益。如前所述,信息增益是分割前树的熵减去分割后的加权熵。
分割前树的熵是0.94。女性患者的比例是7/14,其熵为0.985。男性患者的比例也是7/14,男性节点的熵为0.592。方括号内的结果是分割后的加权熵。
因此,如果我们使用性别属性分割数据集,树的信息增益是0.151。
如图所示,我们将考虑每个叶节点下样本分布的熵,并按其叶节点下样本比例加权平均。
我们也可以计算使用胆固醇时树的信息增益,它是0.048。现在的问题是,哪个属性更合适?如前所述,选择分割后信息增益更高的树。这意味着选择性别属性。
因此,我们选择性别属性作为第一个分割器。

递归构建过程
现在,在按性别属性分支之后,下一个属性是什么?正如你所猜到的,我们应该为每个分支重复这个过程,并测试其他每个属性,以继续达到最纯净的叶节点。这就是你构建决策树的方式。


总结


本节课中,我们一起学习了决策树的构建过程。我们了解到,构建决策树的核心是递归地选择最佳分割特征,其目标是最大化信息增益,从而最小化叶节点的熵或不纯度。我们通过计算熵和信息增益,比较了不同特征(如性别和胆固醇)的分割效果,并确定了性别是更优的初始分割点。这个过程会递归进行,直到生成足够纯净的叶节点,从而形成一个可用于预测的决策树模型。
016:逻辑回归入门 📊

在本节课中,我们将学习一种名为逻辑回归的机器学习方法,该方法用于分类任务。我们将具体探讨以下三个问题:什么是逻辑回归?逻辑回归可以解决哪些类型的问题?在哪些情况下我们应该使用逻辑回归?





什么是逻辑回归? 🤔


逻辑回归是一种统计和机器学习技术,用于根据输入字段的值对数据集的记录进行分类。
假设我们有一个电信数据集,我们希望通过分析来了解哪些客户可能在下个月流失。这是历史客户数据,其中每一行代表一个客户。想象一下,你是这家公司的分析师,你必须找出谁要离开以及原因。你将使用这些数据基于历史记录构建一个模型,并用它来预测客户群体中未来的流失情况。
数据包括每个客户已注册的服务信息、客户账户信息、客户的人口统计信息(如性别和年龄范围),以及上个月内离开公司的客户。该列称为“流失”。我们可以使用逻辑回归,利用给定的特征构建一个预测客户流失的模型。
在逻辑回归中,我们使用一个或多个自变量(如任期、年龄和收入)来预测一个结果(如流失),我们称之为因变量,代表客户是否会停止使用服务。
逻辑回归类似于线性回归,但试图预测一个分类或离散的目标字段,而不是数值型字段。在线性回归中,我们可能尝试预测一个连续变量,如房屋价格、患者血压或汽车油耗。但在逻辑回归中,我们预测一个二元变量,例如是/否、真/假、成功/不成功、怀孕/未怀孕等,所有这些都可以编码为0或1。
在逻辑回归中,自变量应该是连续的。如果是分类变量,则应进行虚拟或指示编码。这意味着我们必须将它们转换为某种连续值。
请注意,逻辑回归既可用于二元分类,也可用于多类分类,但为了简单起见,在本视频中我们将重点讨论二元分类。
在解释其工作原理之前,让我们先看看逻辑回归的一些应用。

逻辑回归的应用场景 🏥📈


如前所述,逻辑回归是一种分类算法,因此可以用于不同的情况。例如:

- 根据一个人的年龄、性别和体重指数,预测其在指定时间段内发生心脏病的概率。
- 预测受伤患者的死亡几率。
- 根据观察到的患者特征(如体重、身高、血压和各种血液检查结果等),预测患者是否患有某种疾病(如糖尿病)。




在营销环境中,我们可以用它来预测客户购买产品或停止订阅的可能性,正如我们在流失示例中所做的那样。我们还可以使用逻辑回归来预测给定过程、系统或产品失败的概率。我们甚至可以用它来预测房主拖欠抵押贷款的可能性。
这些都是可以使用逻辑回归解决的问题的好例子。请注意,在所有这些例子中,我们不仅预测每个案例的类别,还衡量案例属于特定类别的概率。
有多种机器学习算法可以对变量进行分类或估计。

何时使用逻辑回归? ⏰


问题是,我们什么时候应该使用逻辑回归?以下是四种适合使用逻辑回归的情况。
以下是四种适合使用逻辑回归的情况:
- 目标字段是分类变量(特别是二元变量):当数据中的目标字段是分类变量,特别是二元变量时,例如0/1、是/否、流失/未流失、阳性/阴性等。
- 需要预测的概率:如果你需要知道预测的概率,例如,想知道客户购买产品的概率是多少。逻辑回归会为给定的数据样本返回一个介于0和1之间的概率分数。实际上,逻辑回归预测的是该样本的概率,我们根据该概率将案例映射到一个离散的类别。
- 数据是线性可分的:逻辑回归的决策边界是一条线、一个平面或一个超平面。分类器会将决策边界一侧的所有点归为一个类别,另一侧的所有点归为另一个类别。例如,如果我们只有两个特征并且不应用任何多项式处理,我们可以得到一个不等式,如
θ₀ + θ₁x₁ + θ₂x₂ > 0,这是一个很容易绘制的半平面。请注意,在使用逻辑回归时,我们也可以通过多项式处理实现复杂的决策边界,但这超出了本课程的范围。当你理解逻辑回归的工作原理后,你会对决策边界有更深入的了解。 - 需要理解特征的影响:你可以根据逻辑回归模型系数或参数的统计显著性来选择最佳特征。也就是说,在找到最优参数后,权重
θ₁接近0的特征x对预测的影响小于θ₁绝对值大的特征。实际上,它使我们能够在控制其他自变量的同时,理解一个自变量对因变量的影响。
让我们再看一下我们的数据集。我们将自变量定义为 x,因变量定义为 y。
形式化问题 📝
请注意,为了简单起见,我们可以将目标值或因变量值编码为0或1。逻辑回归的目标是构建一个模型来预测每个样本(在本例中是客户)的类别,以及每个样本属于某个类别的概率。
基于此,让我们开始形式化这个问题。

X 是我们的数据集,位于 M x N 的实数空间中,即具有 M 个维度(特征)和 N 条记录。y 是我们想要预测的类别,可以是0或1。

理想情况下,一个称为 ŷ 的逻辑回归模型,可以预测给定其特征 X 的客户的类别为1。

同样可以很容易地证明,客户属于类别0的概率可以计算为 1 减去客户类别为1的概率。


总结 📚

本节课中,我们一起学习了逻辑回归的基础知识。我们了解到逻辑回归是一种用于分类的统计和机器学习方法,特别适用于预测二元结果。我们探讨了它的定义、与线性回归的区别、典型的应用场景(如医疗诊断和客户流失预测),以及适合使用逻辑回归的四种情况(目标变量为二元、需要概率输出、数据线性可分、需要理解特征重要性)。最后,我们形式化了逻辑回归的预测目标,即预测样本属于某一类别的概率。
017:逻辑回归与线性回归对比





在本节课中,我们将学习逻辑回归与线性回归之间的区别。我们将回顾线性回归,并探讨为何它不能很好地处理某些二分类问题。同时,我们也会深入了解逻辑回归的核心——Sigmoid函数。




🔍 线性回归回顾




为了更好地理解逻辑回归,首先让我们回顾一下线性回归的工作原理。


假设我们的目标是预测数据集中客户的收入,而不是预测客户流失这类分类值。这意味着我们需要预测一个连续值,即收入。


我们可以选择一个自变量,例如客户年龄,来预测因变量,例如收入。当然,我们可以使用更多特征,但为了简化,这里只使用一个特征。


我们可以绘制散点图,将年龄作为自变量,收入作为我们希望通过线性回归预测的目标值。我们可以通过训练模型或基于样本集进行数学计算,来拟合一条直线或多项式曲线。



这条直线的方程通常表示为 A + B * X1。现在,我们可以使用这条直线来预测连续值 Y,即基于客户的年龄预测其收入。





❓ 线性回归用于分类的局限性


现在,如果我们想预测客户流失这类分类字段,能否使用相同的技术呢?让我们看看。



假设我们获得了客户流失数据,这次的目标是基于客户年龄预测其流失情况。我们有一个特征“年龄”(记为 X1)和一个分类特征“流失”,它有两个类别:“是”和“否”。如前所述,我们可以将“是”和“否”映射为整数值 0 和 1。


在图形上,我们可以用散点图表示数据,但这次 Y 轴只有两个值。在这个图中,类别 0 用红色表示,类别 1 用蓝色表示。我们的目标是基于现有数据建立一个模型,以预测新客户是红色(类别 0)还是蓝色(类别 1)。



如果我们尝试使用线性回归技术来解决这个分类问题,我们同样可以拟合一条多项式曲线,传统上表示为 A + B * X,或者更正式地表示为 θ₀ + θ₁ * X₁。这条线有两个参数,用向量 θ 表示,其值为 θ₀ 和 θ₁。



我们也可以将这条线的方程正式表示为 θᵀX。通常,对于多维空间,方程可以表示为 θᵀX,其中 θ 是二维空间中直线的参数,或是三维空间中平面的参数,依此类推。θ 也称为方程的权重因子或系数,这两个术语可以互换使用。X 是特征集,代表一个客户。



给定一个数据集,所有特征集 X 和参数 θ 可以通过优化算法或数学计算得出,从而得到拟合线的方程。例如,这条线的参数是 -1 和 0.1,方程是 -1 + 0.1 * X₁。


现在,我们可以使用这条回归线来预测新客户的流失情况。例如,对于一个年龄 X 值为 13 的客户(数据点 P1),我们可以将其代入直线公式计算 Y 值:θᵀX = -1 + 0.1 * 13 = 0.3。




我们可以在图上显示这一点。现在,我们可以定义一个阈值,例如 0.5,来确定类别。我们为模型 Ŷ 制定一个规则,如果 θᵀX 的值小于 0.5,则类别为 0;如果大于 0.5,则类别为 1。由于我们客户的 Y 值小于阈值,我们可以根据模型判断其属于类别 0。



但这里存在一个问题:这个客户属于类别 0 的概率是多少?正如你所见,这并不是解决这个问题的最佳模型。



此外,还有其他一些问题证实了线性回归不是处理分类问题的合适方法。




⚠️ 线性回归在分类中的问题






如果我们使用回归线来计算一个点的类别,它总是返回一个数字,例如 3 或 -2 等。然后我们需要使用一个阈值(例如 0.5)将该点分配到类别 0 或 1。


这个阈值就像一个阶跃函数,无论输入值是大是小、是正是负,输出都是 0 或 1。因此,使用阈值,我们可以找到一条记录的类别。注意,在阶跃函数中,无论值有多大,只要大于 0.5,它就简单地等于 1。反之,无论 Y 值有多小,只要小于 0.5,输出就是 0。




换句话说,对于一个值为 1 或 1000 的客户,结果没有区别,输出都是 1。


与其使用这个阶跃函数,如果我们有一条更平滑的线,能够将这些值投影到 0 和 1 之间,那不是更好吗?确实,现有方法并没有真正给出客户属于某个类别的概率,而这正是我们非常需要的。



我们需要一种方法,既能给出类别,也能给出属于该类别的概率。那么,科学的解决方案是什么呢?






🎯 引入 Sigmoid 函数



如果我们不使用 θᵀX,而是使用一个特定的函数,称为 Sigmoid 函数,那么 Sigmoid(θᵀX) 会直接给出一个点属于某个类别的概率,而不是直接给出 Y 的值。



Sigmoid 函数,也称为逻辑函数,类似于阶跃函数,在逻辑回归中由以下表达式使用:



Sigmoid(z) = 1 / (1 + e⁻ᶻ),其中 z = θᵀX


Sigmoid 函数初看起来有点复杂,但不必担心记住这个方程。在使用它之后,你会理解它的意义。

注意,在 Sigmoid 方程中,当 θᵀX 变得非常大时,分母中的 e⁻⁽θᵀX⁾ 几乎变为 0,Sigmoid 函数的值接近 1。如果 θᵀX 非常小,Sigmoid 函数的值接近 0。




在 Sigmoid 函数图上,当 θᵀX 增大时,Sigmoid 函数的值接近 1。同样,如果 θᵀX 非常小,Sigmoid 函数的值接近 0。因此,Sigmoid 函数的输出始终在 0 和 1 之间,这使其适合将结果解释为概率。



显然,当 Sigmoid 函数的输出接近 1 时,给定 X 的条件下 Y 等于 1 的概率上升;相反,当 Sigmoid 值接近 0 时,给定 X 的条件下 Y 等于 1 的概率非常小。





📈 逻辑回归模型的输出




在逻辑回归中,我们对输入 X 属于默认类别 Y=1 的概率进行建模,我们可以将其正式写为 P(Y=1|X)。


我们也可以写出属于类别 0 的概率,即 P(Y=0|X) = 1 - P(Y=1|X)。



例如,客户留在公司的概率可以表示为 P(流失=1 | 客户收入, 年龄),例如可能是 0.8。而同一客户流失概率为 0 的情况,可以计算为 1 - 0.8 = 0.2。


因此,我们现在的任务是训练模型,设置其参数值,使我们的模型能够很好地估计 P(Y=1|X)。事实上,这就是一个由逻辑回归构建的良好分类器模型应该为我们做的事情。
同时,它也应该能很好地估计 P(Y=0|X),可以表示为 1 - Sigmoid(θᵀX)。





🛠️ 训练过程



那么,我们如何实现这一点呢?我们可以通过训练过程找到 θ。让我们看看训练过程是什么。



以下是训练逻辑回归模型的基本步骤:



步骤 1:初始化参数
用随机值初始化 θ 向量,就像大多数机器学习算法一样。例如,-1 或 2。



步骤 2:计算模型输出
对于训练集中的一个样本客户,计算模型输出,即 Sigmoid(θᵀX)。X 是特征向量值,例如客户的年龄和收入(例如 2 和 5)。θ 是你在上一步设置的置信度或权重。这个方程的输出是预测值,即客户属于类别 1 的概率。



步骤 3:比较与计算误差
将我们模型的输出 Ŷ(例如可能是 0.7)与客户的实际标签(例如对于流失是 1)进行比较。然后记录差异作为模型对该客户的误差,即 1 - 0.7 = 0.3。这只是训练集中所有客户中的一个客户的误差。


步骤 4:计算总成本
按照前面的步骤计算所有客户的误差,并将这些误差相加。总误差是你的模型的成本,由模型的成本函数计算。成本函数基本上代表了如何计算模型的误差,即实际值与模型预测值之间的差异。因此,成本显示了模型在估计客户标签时的表现有多差,成本越低,模型正确估计客户标签的能力越好。所以,我们希望做的是尝试最小化这个成本。



步骤 5:调整参数
但由于 θ 的初始值是随机选择的,成本函数很可能非常高。因此,我们改变 θ,以期降低总成本。

步骤 6:迭代优化
改变 θ 的值后,我们回到步骤 2,开始另一次迭代,再次计算模型的成本。我们不断重复这些步骤,每次改变 θ 的值,直到成本足够低。
这就引出了两个问题:第一,我们如何改变 θ 的值,以便在迭代过程中降低成本?第二,我们应该何时停止迭代?
改变 θ 的值有不同的方法,但最流行的方法之一是梯度下降。同样,停止迭代也有各种方法,但本质上,你是通过计算模型的准确性来停止训练,并在达到满意程度时停止。
🎓 总结
在本节课中,我们一起学习了逻辑回归与线性回归的核心区别。我们了解到线性回归适用于预测连续值,但在处理二分类问题时存在局限性,因为它无法直接输出概率且对异常值敏感。逻辑回归通过引入 Sigmoid 函数,将线性组合 θᵀX 映射到 (0, 1) 区间,从而能够输出样本属于某一类别的概率。我们还简要介绍了逻辑回归模型的训练过程,其核心是通过优化算法(如梯度下降)调整参数 θ,以最小化成本函数,从而得到一个能够准确估计概率的分类器。理解这两种回归方法的适用场景和原理,是构建有效机器学习模型的重要基础。
018:逻辑回归训练 🎯



在本节课中,我们将学习如何训练逻辑回归模型。我们将讨论如何调整模型参数以更好地预测结果,并介绍逻辑回归中的成本函数和梯度下降法,作为优化模型的方法。


概述 📋



逻辑回归训练的主要目标是调整模型参数,使其能最好地估计数据集中样本的标签,例如客户流失情况。



上一节我们介绍了逻辑回归的基本概念,本节中我们来看看如何通过训练来优化模型参数。



成本函数与参数的关系 📊

我们首先需要了解成本函数与参数θ之间的关系。成本函数衡量的是模型预测值ŷ与实际值y之间的差异。


以下是计算单个样本成本的一般公式:


成本 = (实际值 y - 模型预测值 ŷ)


通常,为了避免负值并简化求导过程,我们使用该差值的平方的一半作为成本函数:

成本函数 J(单个样本) = 1/2 * (y - ŷ)^2
其中,模型预测值ŷ是sigmoid函数的结果:ŷ = σ(θ^T X)。






所有样本的成本函数 📈


对于训练集中的所有样本(例如所有客户),我们可以将总成本函数定义为所有样本成本的平均和,这也称为均方误差(Mean Squared Error)。由于它是参数向量θ的函数,因此表示为 J(θ)。


J(θ) = (1/m) * Σ [1/2 * (y^(i) - ŷ(i))2]
其中,m是样本数量。




寻找最优参数 🎯


我们有了成本函数。现在,如何找到或设置能最小化此成本函数的最佳权重或参数?答案是计算该成本函数的最小值点,它将为我们展示模型的最佳参数。


虽然我们可以通过求函数的导数来找到最小值点,但对于此类方程,没有简单的方法找到全局最小值点。鉴于这种复杂性,描述如何达到该方程的全局最小值超出了本视频的范围。

那么解决方案是什么?我们需要找到另一个具有相同行为但更容易找到其最小值点的成本函数。




逻辑回归的成本函数 🔄



让我们为模型绘制理想的成本函数。我们的模型是ŷ,实际值y等于0或1。我们的模型试图估计它。

假设y的理想值是1。这意味着如果模型估计y等于1,则模型最佳。在这种情况下,我们需要一个成本函数,当模型结果为1(与实际标签相同)时返回0,并且随着模型结果远离1,成本应持续增加。如果模型结果接近0,成本应该非常大。


我们可以看到,负对数函数为我们提供了这样的成本函数。这意味着如果实际值为1且模型也预测为1,负对数函数返回0成本;但如果预测值小于1,负对数函数返回较大的成本值。

因此,我们可以使用负对数函数来计算逻辑回归模型的成本。



具体来说:
- 当期望的y为1时,成本可计算为 -log(ŷ)。
- 当期望的y为0时,成本可计算为 -log(1 - ŷ)。


现在,我们可以将其代入总成本函数,并将其重写为以下函数:



J(θ) = - (1/m) * Σ [ y^(i) * log(ŷ^(i)) + (1 - y^(i)) * log(1 - ŷ^(i)) ]


这就是逻辑回归的成本函数。如你所见,它惩罚了类别为0而模型输出为1的情况,反之亦然。请记住,ŷ输出的不是类别,而是一个介于0和1之间的值,应被视为概率。

现在,我们可以轻松地使用此函数来找到模型的参数,以最小化成本。




梯度下降法 ⬇️


好的,让我们回顾一下我们所做的。我们的目标是找到一个能最好估计实际标签的模型。找到最佳模型意味着找到该模型的最佳参数θ。


第一个问题是:如何找到模型的最佳参数?通过找到并最小化模型的成本函数。换句话说,最小化我们刚刚定义的J(θ)。


下一个问题是:如何最小化成本函数?答案是使用优化方法。有不同的优化方法,但我们在这里使用最著名和最有效的方法之一:梯度下降。

那么,什么是梯度下降?一般来说,梯度下降是一种寻找函数最小值的迭代方法。具体到我们的情况,梯度下降是一种利用成本函数的导数来改变参数值以最小化成本或误差的技术。


梯度下降的主要目标是改变参数值以最小化成本。
梯度下降的工作原理 🧭

想象一下,我们模型中的参数或权重位于一个二维空间中。例如,对于两个特征集(年龄和收入),有θ1和θ2。



回想一下我们在前面幻灯片中讨论的成本函数J。我们需要最小化成本函数J,它是变量θ1和θ2的函数。


让我们为观察到的成本或误差J函数添加一个维度。假设我们根据θ1、θ2所有可能的值绘制成本函数,我们会看到类似这样的图形。它代表了不同参数值对应的误差值。这被称为误差曲线或成本函数的误差碗。


回想一下,我们想利用这个误差碗来找到能最小化成本值的最佳参数值。现在的问题是,误差曲线上的哪一点是最佳点?是的,你应该尝试最小化你在误差曲线上的位置。那么你应该怎么做?
你必须通过改变参数来找到成本的最小值,但是朝哪个方向改变?你是给权重加一些值还是减一些值,这个值应该是多少?
你可以选择随机的参数值,这些值在碗上定位一个点。你可以把我们的起点想象成黄点。你通过Δθ1和Δθ2改变参数,并在曲面上迈出一步。
假设我们在碗中向下走一步。只要我们向下走,我们就可以再走一步。坡度越陡,我们可以迈的步幅越大,我们可以继续迈步。当我们接近最低点时,坡度减小,因此我们可以迈更小的步,直到到达一个平坦的表面。这就是我们曲线的最小点,也是最优的θ1、θ2。
这些“步”究竟是什么?我的意思是,为了确保我们下降,我们应该朝哪个方向迈这些步,步长应该多大?
为了找到这些步的方向和大小,换句话说,为了找到如何更新参数,你应该计算该点成本函数的梯度。梯度是曲面上每一点的斜率,梯度的方向是最大上坡方向。
现在的问题是,我们如何计算某一点成本函数的梯度?如果你在曲面上选择一个随机点,例如黄点,并计算J(θ)在该点对每个参数的偏导数,它会给出该点每个参数的移动斜率。现在,如果我们沿着该斜率的相反方向移动,就能保证我们在误差曲线中下降。
例如,如果我们计算J对θ1的导数,发现它是一个正数。这表明随着θ1增加,函数在增加。因此,为了减小J,我们应该朝相反方向移动。这意味着沿着θ1的负导数(即斜率)方向移动。我们还必须在每一步为其他参数计算它。
梯度值也指示了步长的大小。如果斜率大,我们应该迈一大步,因为我们离最小值很远。如果斜率小,我们应该迈一小步。梯度下降在每次迭代中朝着最小值迈出越来越小的步。
成本函数J的偏导数使用以下表达式计算:
∂J/∂θ_j = (1/m) * Σ ( (ŷ^(i) - y^(i)) * x_j^(i) )
如果你想了解J函数的导数是如何计算的,你需要了解导数的概念,这超出了我们这里的范围。但老实说,你并不需要记住所有细节,因为你可以轻松地使用这个方程来计算梯度。
简而言之,这个方程返回该点的斜率,我们应该沿着斜率的相反方向更新参数。所有这些斜率的向量就是梯度向量,我们可以使用这个向量来改变或更新所有参数。
我们取参数的先前值并减去误差导数。这产生了新的θ参数,我们知道这将降低成本。此外,我们将梯度值乘以一个常数M,称为学习率。学习率让我们可以额外控制我们在曲面上移动的速度。
总之,我们可以简单地说,梯度下降就像沿着当前斜率方向迈步,而学习率就像你迈出的步长。
因此,这些将是我们的新参数:
θ_j(新) = θ_j(旧) - α * (∂J/∂θ_j)
注意,这是一个迭代操作,在每次迭代中,我们更新参数并最小化成本,直到算法收敛到一个可接受的最小值。
训练算法步骤回顾 🔄


让我们通过再次逐步回顾训练算法,来总结我们到目前为止所做的工作。


以下是训练逻辑回归模型的主要步骤:
- 初始化参数:用随机值初始化参数。
- 计算成本:将训练集输入成本函数并计算成本。由于参数是随机设置的,我们预期会有较高的错误率。
- 计算梯度:计算成本函数的梯度,记住我们需要使用偏导数。因此,为了计算梯度向量,我们需要所有的训练数据来为每个参数输入方程。当然,这是算法中计算量较大的部分,但有一些解决方案。
- 更新权重:用新的参数值更新权重。
- 迭代:回到步骤2,再次输入具有新参数的成本函数。如前所述,由于我们正在误差曲面上下降,我们预期误差会减小。我们继续这个循环,直到达到较低的成本值或达到有限的迭代次数。
- 完成训练:经过一些迭代后,参数应该大致找到。这意味着模型已准备就绪,我们可以用它来预测客户留下或离开的概率。
总结 📝
本节课中我们一起学习了逻辑回归模型的训练过程。我们了解到训练的核心目标是通过调整参数θ来最小化成本函数J(θ)。我们探讨了逻辑回归特有的成本函数形式,它使用负对数来处理二分类问题。为了找到最小化成本函数的参数,我们引入了梯度下降这一迭代优化算法。该算法通过计算成本函数对每个参数的梯度(偏导数),并沿梯度反方向更新参数,逐步逼近最优解。我们还简要介绍了学习率的作用以及训练算法的具体步骤。理解这些概念是应用逻辑回归模型解决实际分类问题的基础。
019:支持向量机 📊



在本节课中,我们将学习一种用于分类的机器学习方法——支持向量机(SVM)。我们将了解其工作原理、核心概念、优缺点以及适用场景。
概述

支持向量机是一种监督学习算法,用于分类任务。它通过寻找一个最优分隔超平面来区分不同类别的数据点。即使数据在原始空间中不是线性可分的,SVM也能通过将其映射到高维空间来实现有效分类。
什么是支持向量机?🤔
想象你获得了一个数据集,其中包含数千个从被认为有患癌风险的患者身上提取的人类细胞样本特征。原始数据分析显示,许多特征在良性样本和恶性样本之间存在显著差异。你可以使用这些细胞特征值以及其他患者的样本来预测一个新样本是良性还是恶性。支持向量机可以作为一个分类器,训练你的模型以识别数据中可能显示良性或恶性细胞的模式。模型训练完成后,可以用于以较高准确率预测新的或未知的细胞。
支持向量机的正式定义是:支持向量机是一种监督学习算法,它通过寻找一个分隔器来对案例进行分类。


SVM如何工作?⚙️


SVM首先将数据映射到一个高维特征空间,使得即使数据原本不是线性可分的,数据点也能被分类。然后,算法会为数据估计一个分隔器。数据应以一种能够将分隔器绘制为超平面的方式进行转换。



例如,考虑下图,它仅根据细胞大小和团块厚度展示了一小组细胞的分布。如图所示,数据点落入两个不同的类别。这两个类别可以用一条曲线分开,但不能用一条直线。这代表了一个线性不可分的数据集,这也是大多数现实世界数据集的情况。



我们可以将此数据转换到更高维的空间,例如将其映射到三维空间。转换后,两个类别之间的边界可以由一个超平面来定义。由于我们现在处于三维空间,分隔器显示为一个平面。这个平面可用于分类新的或未知的案例。


因此,SVM算法输出一个最优超平面,用于对新样本进行分类。


现在,有两个具有挑战性的问题需要考虑:
- 我们如何转换数据,使得分隔器可以绘制为超平面?
- 转换后,我们如何找到最佳或最优化的超平面分隔器?




数据转换与核函数 🔄


让我们先看看数据转换是如何工作的。为了简单起见,假设我们的数据集是一维数据;这意味着我们只有一个特征X。如图所示,它不是线性可分的。那么我们能做什么呢?




我们可以将其转换到二维空间。例如,你可以通过使用一个输出为x和x²的函数将x映射到一个新空间,从而增加数据的维度。现在数据是线性可分的了。请注意,由于我们处于二维空间,超平面是一条将平面分成两部分的线,每个类别位于其中一侧。现在我们可以用这条线来分类新案例。


基本上,将数据映射到更高维空间的过程称为核化。用于转换的数学函数称为核函数,它可以有不同的类型,例如:
- 线性核
- 多项式核
- 径向基函数核(RBF)
- Sigmoid核


这些函数各有其特点、优缺点和方程,但好消息是你不需要了解它们,因为它们中的大多数已经在数据科学编程语言的库中实现了。此外,由于没有简单的方法知道哪个函数在任何给定的数据集上表现最好,我们通常依次选择不同的函数并比较结果。





寻找最优分隔超平面 🎯


现在我们来讨论另一个问题:转换后,我们如何找到正确或最优的分隔器?


基本上,SVM基于寻找一个能最好地将数据集分成两类的超平面的思想。由于我们处于二维空间,你可以将超平面视为一条线性分隔蓝点和红点的线。作为最佳超平面的一个合理选择是代表两个类别之间最大分离或边界的那个。因此,目标是选择一个具有尽可能大边界的超平面。



最靠近超平面的样本称为支持向量。直观地说,只有支持向量对实现我们的目标很重要,因此可以忽略其他训练样本。我们试图以这样的方式找到超平面:它到支持向量的距离最大。



请注意,超平面和决策边界线都有自己的方程。因此,寻找最优超平面可以使用一个涉及更多数学的方程来形式化,这里不详细讨论。也就是说,超平面是通过使用最大化边界的优化过程从训练数据中学习得到的。像许多其他问题一样,这个优化问题也可以通过梯度下降法解决,这超出了本视频的范围。


因此,算法的输出是直线方程 W·X + b = 0 中的W和B的值。你可以使用这个估计的直线进行分类。只需将输入值代入直线方程,然后你就可以计算一个未知点是在直线上方还是下方。如果方程返回值大于0,则该点属于第一类(直线上方),反之亦然。




SVM的优缺点 ⚖️


支持向量机的两个主要优点是:
- 在高维空间中准确。
- 在决策函数中只使用训练点的一个子集(称为支持向量),因此内存效率高。



支持向量机的缺点包括:
- 如果特征数量远大于样本数量,该算法容易过拟合。
- SVM不直接提供概率估计,而概率估计在大多数分类问题中是需要的。
- 如果你的数据集非常大(例如超过1000行),SVM在计算上效率不高。






何时使用SVM?💡

那么,在什么情况下应该使用SVM呢?
- SVM适用于图像分析任务,如图像分类和手写数字识别。
- SVM在文本挖掘任务中非常有效,特别是因为它能有效处理高维数据。例如,它用于检测垃圾邮件、文本分类分配和情感分析。
- SVM的另一个应用是基因表达数据分类,同样是因为它在高维数据分类方面的强大能力。
- SVM也可用于其他类型的机器学习问题,如回归、异常值检测和聚类。你可以自行探索更多关于这些特定问题的信息。





总结



本节课我们一起学习了支持向量机(SVM)。我们了解到SVM是一种强大的分类算法,它通过将数据映射到高维空间并寻找最大边界超平面来工作。我们探讨了核函数的作用、支持向量的概念,以及SVM的优缺点和适用场景。掌握SVM将帮助你在处理复杂的分类问题时,尤其是在高维数据中,构建有效的预测模型。
020:聚类分析导论 🎯



在本节课中,我们将学习聚类分析的基本概念、应用场景以及不同类型的聚类算法。聚类是一种无监督学习方法,旨在发现数据中内在的分组结构。

什么是聚类?🔍
想象你有一个客户数据集,需要基于历史数据进行客户细分。客户细分是根据相似特征将客户群划分为不同组别的实践。这是一种重要策略,因为它允许企业针对特定客户群体,从而更有效地分配营销资源。
例如,一个群体可能包含高利润、低风险的客户,他们更有可能购买产品或订阅服务。了解这些信息有助于企业投入更多时间和精力来留住这些客户。另一个群体可能包含来自非营利组织的客户等。
对于大量多样化数据,通常无法进行通用的细分处理。因此,你需要一种分析方法从大数据集中推导出细分和群体。客户可以根据年龄、性别、兴趣、消费习惯等多个因素进行分组。关键要求是利用现有数据来理解和识别客户之间的相似性。
聚类与分类的区别 ⚖️
上一节我们介绍了聚类的概念,本节中我们来看看聚类与分类有何不同。


再次审视我们的客户数据集。分类算法预测的是分类标签。这意味着将实例分配到预定义的类别中,例如“违约”或“非违约”。举例来说,如果分析师想分析客户数据以了解哪些客户可能违约,她会使用带标签的数据集作为训练数据,并应用决策树、支持向量机或逻辑回归等分类方法来预测新客户或已知客户的违约情况。
一般来说,分类是一种监督学习,其中每个训练数据实例都属于一个特定的类别。
然而,在聚类中,数据是无标签的,过程是无监督的。例如,我们可以使用K均值等聚类算法,如前所述,根据客户是否共享相似属性(如年龄、教育程度等)将相似客户分组并分配到某个簇中。
聚类的应用领域 🌐

聚类分析在不同领域有许多应用。以下是几个例子:





- 零售业:用于根据人口统计特征发现客户之间的关联,并利用该信息识别不同客户群体的购买模式。此外,它还可用于推荐系统中,以找到一组相似的项目或相似用户,并利用协同过滤向客户推荐书籍或电影等。
- 银行业:分析师寻找正常交易的簇以发现欺诈性信用卡使用的模式;他们也使用聚类来识别客户群体,例如区分忠诚客户与流失客户。
- 保险业:用于理赔分析中的欺诈检测,或根据客户细分评估特定客户的保险风险。
- 出版媒体:用于根据内容自动对新闻进行分类或标记新闻,然后进行聚类,以便向读者推荐类似的新闻文章。
- 医学:可用于根据相似特征描述患者行为,从而为不同疾病确定成功的医疗方案;在生物学中,用于对具有相似表达模式的基因进行分组,或对遗传标记进行聚类以识别家族关系。
如果你留心观察,可以发现聚类的许多其他应用。但总的来说,聚类可用于以下目的之一:


以下是聚类的主要用途:
- 探索性数据分析
- 摘要生成或规模缩减
- 异常值检测(尤其用于欺诈检测或噪声去除)
- 在数据集中查找重复项
- 作为预测、其他数据挖掘任务的预处理步骤,或作为复杂系统的一部分




聚类算法类型 📊

让我们简要了解不同的聚类算法及其特点。





- 基于划分的聚类:这类算法产生类似球形的簇,例如K均值、K中值或模糊C均值。这些算法相对高效,适用于中型和大型数据库。
- 层次聚类:这类算法产生簇的树状结构,例如凝聚型和分裂型算法。这类算法非常直观,通常适用于小型数据集。
- 基于密度的聚类:这类算法产生任意形状的簇。在处理空间聚类或数据集中存在噪声时尤其有效,例如DBSCAN算法。




总结 📝
本节课中我们一起学习了聚类分析。我们了解到聚类是一种无监督学习方法,用于在数据中发现相似对象组成的群组(簇)。我们探讨了聚类与分类的区别,列举了聚类在零售、金融、医疗等多个领域的广泛应用,并简要介绍了基于划分、层次和基于密度等主要类型的聚类算法及其特点。掌握这些基础知识是后续深入学习具体聚类算法和应用的第一步。
021:K均值聚类入门 🎯

在本节课中,我们将要学习K均值聚类算法。这是一种无监督学习算法,常用于客户细分等场景,能够根据数据点之间的相似性将其分组。
概述
想象你有一个客户数据集,需要基于历史数据进行客户细分。客户细分是将客户群划分为具有相似特征的个体组的实践。K均值聚类是可用于此目的的算法之一。它能够基于客户之间的相似性,以无监督的方式对数据进行分组。


什么是K均值聚类?🤔
K均值是一种划分聚类算法。这意味着它将数据划分为K个不重叠的子集或簇,且这些簇内部没有结构或标签,因此它是一种无监督算法。
一个簇内的对象非常相似,而不同簇间的对象则非常不同或不相似。使用K均值时,我们需要找到相似的样本,例如相似的客户。
如何衡量相似性?📏
K均值的目标是形成这样的簇:相似样本进入同一个簇,不相似样本落入不同簇。为了实现这一点,我们通常使用不相似性度量,即样本之间的距离。

我们可以说,K均值试图最小化簇内距离,并最大化簇间距离。



那么,如何计算两个样本(如两个客户)之间的距离呢?
距离计算

假设我们有两个客户,客户1和客户2。最初,假设每个客户只有一个特征:年龄。我们可以使用闵可夫斯基距离的一种特定类型来计算这两个客户之间的距离,即欧几里得距离。



公式:
distance = sqrt((age1 - age2)^2)


如果特征不止一个呢?例如,每个客户有年龄和收入两个特征。我们仍然可以使用相同的公式,但这次是在二维空间中。


公式:
distance = sqrt((age1 - age2)^2 + (income1 - income2)^2)

对于多维向量,我们也可以使用相同的距离公式。当然,为了获得准确的不相似性度量,我们必须对特征集进行归一化。

除了欧几里得距离,还有其他不相似性度量,如余弦相似度、平均距离等。距离度量的选择高度依赖于数据类型和进行聚类的领域。相似性度量在很大程度上控制着簇的形成方式,因此建议理解数据集的领域知识和特征的数据类型,然后选择有意义的距离度量。

K均值聚类的工作原理 🔄


为了简单起见,假设我们的数据集只有两个特征:客户的年龄和收入。这是一个二维空间,我们可以用散点图展示客户的分布,Y轴表示年龄,X轴表示收入。
我们尝试基于这两个维度将客户数据聚类成不同的组或簇。


第一步:确定簇的数量(K值)
K均值算法的核心概念是它为每个簇随机选取一个中心点。这意味着我们必须初始化K,K代表簇的数量。

本质上,确定数据集中的簇数量(K值)是K均值中的一个难题,我们稍后会讨论。现在,让我们为示例数据集设K=3。这就像我们有三个代表簇的点。
这三个数据点称为簇的质心,其特征大小应与客户特征集相同。


选择这些质心有两种方法:
- 我们可以从数据中随机选择三个观测值,并将这些观测值作为初始均值。
- 我们可以创建三个随机点作为簇的质心,这是我们的选择,在图中用红色显示。
第二步:将每个点分配到最近的质心

在初始化步骤(定义每个簇的质心)之后,我们必须将每个客户分配到最近的中心。为此,我们必须计算每个数据点(在我们的例子中是每个客户)到质心点的距离。
如前所述,根据数据的性质和聚类的目的,可以使用不同的距离度量将项目分配到簇中。因此,你将形成一个矩阵,其中每一行代表一个客户到每个质心的距离,这称为距离矩阵。


K均值聚类的主要目标是最小化数据点与其所属簇质心的距离,并最大化与其他簇质心的距离。

所以,在这一步中,我们必须找到每个数据点最近的质心。我们可以使用距离矩阵来找到数据点最近的质心。找到每个数据点最近的质心后,我们将每个数据点分配到该簇;换句话说,所有客户将根据他们与质心的距离落入一个簇。
第三步:重新计算质心位置


我们可以轻易地说,这不会产生好的簇,因为质心最初是随机选择的。实际上,模型会有很高的误差。这里的误差是每个点与其质心的总距离,可以表示为簇内平方和误差。直观上,我们试图减少这个误差,这意味着我们应该以这样的方式塑造簇:使簇中所有成员与其质心的总距离最小化。
那么,如何将其转变为误差更小的更好簇呢?答案是:我们移动质心。
在下一步中,每个簇中心将更新为其簇内数据点的平均值。实际上,每个质心根据其簇成员移动。换句话说,三个簇中每个簇的质心变为新的均值。
示例:
如果点A的坐标是(7.4, 3.6),点B的特征是(7.8, 3.8),那么这个包含两个点的簇的新质心将是它们的平均值,即(7.6, 3.7)。
第四步:迭代直至收敛
现在我们有了新的质心。正如你所猜测的,我们将再次计算所有点到新质心的距离。点被重新分配,质心再次移动。
这个过程持续进行,直到质心不再移动。请注意,每当质心移动时,都需要重新测量每个点到质心的距离。
是的,K均值是一个迭代算法,我们必须重复步骤2到4,直到算法收敛。
在每次迭代中,它将移动质心,计算到新质心的距离,并将数据点分配到最近的质心。这会产生误差最小或最密集的簇。

算法特性与注意事项 ⚠️
然而,由于它是一种启发式算法,不能保证收敛到全局最优解,结果可能依赖于初始簇。这意味着该算法保证收敛到一个结果,但该结果可能是局部最优解(即不一定是最好的可能结果)。
为了解决这个问题,通常使用不同的起始条件(即随机化的起始质心)多次运行整个过程。由于算法通常非常快,多次运行不会有任何问题。
总结

本节课中,我们一起学习了K均值聚类算法。我们了解了它是一种无监督的划分聚类方法,通过计算数据点之间的距离来形成簇。其核心步骤包括:确定簇数K、初始化质心、分配点到最近质心、重新计算质心位置,并迭代直至收敛。我们还讨论了距离度量的选择、算法可能收敛到局部最优解的特性,以及通过多次运行来改善结果的常见做法。
022:K均值进阶 🔍



在本节课中,我们将学习K均值算法的准确性评估方法及其核心特性。我们将探讨如何衡量聚类效果,以及如何确定最佳的聚类数量K值。


算法回顾与准确性评估 🎯
上一节我们介绍了K均值的基本概念,本节中我们来看看如何评估其准确性。




K均值算法首先随机放置K个质心,每个质心代表一个簇。质心初始位置相距越远,效果通常越好。

接下来,计算每个数据点到各个质心的距离。通常使用欧几里得距离来度量,其公式为:
[
d(p, q) = \sqrt{\sum_{i=1}^{n} (q_i - p_i)^2}
]
但请注意,也可以使用其他类型的距离度量方法,欧几里得距离只是最常用的一种。
然后,将每个数据点分配给最近的质心,形成初始分组。接着,根据每个组内所有点的均值重新计算K个质心的位置。重复此过程,直到质心不再移动。
现在的问题是:如何评估K均值形成的聚类质量?换句话说,如何计算K均值聚类的准确性?



一种方法是与可用的真实标签进行比较。然而,由于K均值是无监督算法,在实际问题中通常没有真实标签可用。但仍有方法可以根据K均值的目标来评估每个聚类的“坏”程度。



评估指标与K值选择 📊
评估聚类质量的一个关键指标是簇内平均距离,即数据点与其所属簇质心之间距离的平均值。这个值可以作为聚类算法误差的度量标准。


确定数据集中的聚类数量(即K值)是数据聚类中的一个常见问题。K的正确选择往往不明确,因为它高度依赖于数据集中点的分布形状和尺度。


以下是解决此问题的一些常用方法:



一种常见技术是针对不同的K值运行聚类,并观察聚类的准确性指标。该指标可以是数据点与其簇质心之间的平均距离,它反映了簇的密度或聚类误差的减小程度。


然后,通过观察该指标的变化,我们可以找到最佳的K值。但问题是,随着聚类数量的增加,质心到数据点的距离总会减小。这意味着增加K总会降低误差。

因此,我们将该指标作为K的函数绘制成图,并确定拐点——即下降率发生急剧变化的点。这个点对应的K值就是最佳的聚类数量。



这种方法被称为肘部法则。



总结 📝

本节课中我们一起学习了K均值聚类算法的准确性评估与特性。
K均值是一种基于划分的聚类方法,对中型和大型数据集相对高效。它产生类球形的簇,因为簇是围绕质心形成的。其缺点是需要预先指定聚类数量,而这并非易事。





通过使用肘部法则等评估方法,我们可以更科学地确定最佳的K值,从而提升聚类效果。

浙公网安备 33010602011771号