ESJIAN 引言:BOM姬对于导入表格数据的处理需要用到机器学习,故此涉入机器学习,为了更好的达成项目目的,并且感知现在机器学习的发展进程以及未突破的问题。 阅读背景:[[学习记录]]中为了先建立起对机器学习概念用 阅读目的: 知识目标: 理解机器学习的核心概念,例如监督学习、非监督学习、强化学习等,并能够区分它们的应用场景。 掌握常用的机器学习算法,例如线性回归、逻辑回归、决策树、支持向量机、神经网络等,并了解它们的原理和优缺点。 熟悉Scikit-Learn、Keras和TensorFlow等机器学习库的基本用法,能够使用它们构建简单的机器学习模型。 了解模型评估和选择的方法,例如交叉验证、准确率、精确率、召回率、F1值等,并能够根据实际问题选择合适的评估指标。 掌握模型调参的基本技巧,例如网格搜索、随机搜索等,并能够优化模型的性能。 技能目标: 能够独立完成简单的机器学习项目,例如分类、回归、聚类等。 能够根据实际问题选择合适的机器学习算法和模型。 能够使用Scikit-Learn、Keras和TensorFlow等机器学习库进行模型训练和评估。 能够对模型进行调参,提高模型的性能。 行动目标: 阅读完每一章节后,完成相应的练习题和项目。 将学到的知识应用到实际项目中,例如构建一个图像分类器或一个房价预测模型。 积极参与机器学习社区的讨论,与其他学习者交流经验 阅读方法: 阅读前: 思考问题: 这一小节的主题是什么?它与我设定的阅读目标有什么关系? 根据小节标题和目录,我能对这一小节的内容做出哪些假设? 在开始阅读之前,我已经掌握了哪些与本节内容相关的知识? 我希望通过阅读这一小节解决哪些疑问或学习哪些新技能? 要做的工作: 快速浏览本小节的标题、副标题、图表和代码示例,对内容有一个大致的了解。 明确本小节的学习目标,例如理解某个概念、掌握某个算法或学会使用某个函数。 记录下你对本小节内容的初步假设和疑问。 阅读中: 思考问题: 作者是如何解释这个概念或算法的?我是否理解了其中的原理? 代码示例是如何工作的?我是否能够理解每一行代码的含义? 作者提到了哪些我之前没有了解过的知识点? 这些知识点与我已有的知识体系有什么联系? 我是否能够将本小节的内容应用到实际项目中? 要做的工作: 仔细阅读本小节的内容,重点关注关键概念、算法原理和代码示例。 对重要的知识点进行标记、划线或做笔记。 尝试运行代码示例,并修改参数或输入,观察结果的变化。 查阅相关的资料,例如官方文档、博客文章或论坛帖子,以加深对知识点的理解。 记录下你的疑问和思考,以便在阅读后进行回顾和总结。 阅读后: 思考问题: 我是否达到了本小节的学习目标? 我是否解决了阅读前提出的疑问? 我是否掌握了本小节的关键概念和算法? 我是否能够用自己的话解释本小节的内容? 我是否能够将本小节的内容应用到实际项目中? 本小节的内容与其他章节有什么联系? 我还需要学习哪些相关的知识? 要做的工作: 回顾本小节的内容,整理笔记,并对知识点进行归纳和总结。 尝试回答阅读前提出的问题,并记录下你的答案。 完成本小节的练习题或项目,以检验你的学习效果。 将本小节的内容与其他章节的内容联系起来,构建完整的知识体系。 制定下一步的学习计划,例如阅读相关的书籍或文章,或尝试解决更复杂的实际问题。 阅读感悟: 机器学习能够被得以使用的巨大前提是,客观事件的发生不是随机的,是遵循一定机制的,当这个机制被以概率化的手段描述了出来,我们就能够用输入去预测输出。 AI提示词: 请你把上述文段进行分点描述,不要删改原文内容 1. 第一部分 机器学习的基础知识 引言: 1.1. 第1章 机器学习概览 1.1.1. 什么是机器学习 1. 定义 简单定义: 通用定义: 专业定义: egg: 2. 概念: 训练集: 训练样例: 模型: 精度: 1.1.2. 为什么使用机器学习 问题引入:考虑一下如何使用传统的编程技术编写垃圾邮件过滤器 1. 传统方案: 方案步骤: 首先,你会检查垃圾邮件通常是什么样子。你可能会注意到一些 词或短语(例如“4U”“信用卡”“免费”和“惊人的”)往往 会在主题行中出现很多次。也许你还会注意到发件人姓名、电子邮 件正文和电子邮件其他部分中的一些其他模式。 你会为你注意到的每个模式编写一个检测算法,如果检测到许多 这样的模式,你的程序会将电子邮件标记为垃圾邮件。 你会测试程序并重复步骤1和步骤2,直到它足够好可以发布。 方案不足:每次出现一种新的垃圾邮件话术时候你都需要重新研究问题编写规则,时间一长这样就变成了规则的堆砌了,这会给维护带来很大麻烦 2. 机器学习: 相比之下,基于机器学习技术的垃圾邮件过滤器会自动学习词和短语,这些词和短语是垃圾邮件的预测因素,通过与非垃圾邮件比较,检测垃圾邮件中反复出现的词语模式(见图1-2)。 优点:该程序更短,更易于维护,也更准确。 状况新增:如果垃圾邮件发送者注意到他们所有包含“4U”的电子邮件都被阻止了怎么办?他们可能会转而写“For U”。 传统编程技术的垃圾邮件过滤器需要更新来标记“For U”电子邮件。如果垃圾邮件发送者一直绕过你的垃圾邮件过滤器,你就需要不断编写新规则。 基于机器学习技术的垃圾邮件过滤器会自动注意到“For U”在用户标记的垃圾邮件中变得异常频繁,并且<label class="ob-comment" title="" style=""> 在没有人工干预的情况下自动标记垃圾邮件 <input type="checkbox"> <span style=""> 机器学习的优点一 </span></label>(见图1-3)。 总结:传统方法的局限性在与无法面对新的情况完成“自适应”动作,也就是说它不会根据用户标记这是一封垃圾邮件的动作而去学习这封垃圾邮件为什么垃圾的原因。而机器学习在用户标记完这是一封垃圾邮件后会学习这个邮件中的内容,然后下次遇到同样内容类型的垃圾邮件时会把它自动分类到垃圾邮件中。 机器学习的另一个亮点是<label class="ob-comment" title="" style=""> 擅于处理对于传统方法过于复杂或没有已知算法的问题 <input type="checkbox"> <span style=""> 机器学习优点二 </span></label>。 举例:考虑语音识别,假设你想编写一个能够区分单词“one”和“two”的简单程序。你可能会注意到单词“two”以高音(“T”)开头,因此你会对测量高音强度的算法进行硬编码并使用它来区分“one”和“two”,但显然这种技术不能扩展到所有的语音识别(人们所处环境不同、语言不同、使用的词汇不同)。最好的解决方案(至少在今天)是根据给定的大量单词录音示例,编写一个能够自我学习的算法。 <label class="ob-comment" title="" style=""> 最后,机器学习可以帮助人类进行学习 <input type="checkbox"> <span style=""> 机器学习优点三 </span></label>(见图1-4)。可以检查ML模型来查看它们学到了什么(尽管这对于某些模型来说可能很棘手)。 举例:一旦垃圾邮件过滤器接受了足够多的垃圾邮件训练,就可以用它列出垃圾邮件预测器的单词和单词组合。有时候这会揭示意想不到的相关性或新趋势,从而更好地理解问题。挖掘大量数据来发现隐藏的模式称为数据挖掘,机器学习擅长于此。() 3. 章节小节 根据前面的描述,我们可以发现机器学习在上述任务的完成过程中对比传传统方案具有以下特点。 现有解决方案需要有大量微调或一长串规则来解决的问题(机器学习模型通常可以简化代码并且比传统方法执行得更好)——高效性 使用传统方法无法解决的复杂问题(最好的机器学习技术可能会找到解决方案)——通用性 变化的环境(机器学习系统可以很容易地根据新数据重新训练,始终保持最新状态)——适应性 深入了解复杂问题和大量数据——分析性 1.1.3. 应用示例 分析产品图像以自动分类: 这是一项图像分类任务,通常使用卷积神经网络(CNN,见第14章)实现,有时也使用Transformer(见第16章)。 举例:假设你有一个在线服装商店,你希望自动对上传的产品图片进行分类,以便在网站上更好地组织和展示商品。 数据准备: 首先,你需要收集大量的服装图片,并为每张图片打上标签,例如“衬衫”、“裤子”、“裙子”、“鞋子”等。这些带标签的图片将作为训练数据。 模型选择: 选择一个合适的 CNN 模型,例如 ResNet、VGGNet 或 EfficientNet。这些模型已经在大型图像数据集上进行了预训练,可以直接用于你的任务,或者进行微调。 模型训练: 使用准备好的训练数据,对 CNN 模型进行训练。训练过程中,模型会学习图像的特征,并将其与相应的类别关联起来。 模型评估: 使用测试数据集评估模型的性能。测试数据集包含模型未见过的新图片,用于检验模型的泛化能力。常用的评估指标包括准确率、精确率、召回率和 F1 值。 模型部署: 将训练好的模型部署到你的在线商店的服务器上。当用户上传一张新的服装图片时,模型会自动对其进行分类,并将结果返回给网站。 结果展示: 网站根据模型返回的分类结果,将商品展示在相应的类别下。例如,如果模型将一张图片分类为“衬衫”,则该商品会显示在“衬衫”类别下。 通过脑部扫描发现肿瘤: 这属于语义图像分割,需要对图像中的每个像素进行分类以确定肿瘤的确切位置和形状,通常使用CNN或Transformer完成。 自动分类新闻文章: 这是==自然语言处理==(NLP)中的文本分类任务,可以使用循环神经网络(RNN)和CNN,但Transformer(见第16章)通常效果更优。 自动标记论坛中的不当评论: 这同样是==文本分类任务==,采用与新闻分类相同的NLP工具。 自动总结长文档: 这是NLP领域的一个分支,称为==文本摘要任务==,也使用上述NLP工具。 创建聊天机器人或个人助理: 这需要整合多个NLP组件,包括自然语言理解(NLU)和问答模块。 基于绩效指标预测公司年收入: 这是一项==回归任务==(预测数值),可以使用多种回归模型,如线性或多项式回归(见第4章)、支持向量机回归(见第5章)、随机森林回归(见第7章)或人工神经网络(见第10章)。若考虑历史绩效指标,可能需要RNN、CNN或Transformer(见第15章和第16章)。 让应用程序响应语音命令: 这是==语音识别任务==,需要处理长而复杂的音频样本序列,常用RNN、CNN或Transformer(见第15章和第16章)。 检测信用卡欺诈: 这属于==异常检测任务==,可以使用隔离森林、高斯混合模型(见第9章)或自动编码器(见第17章)等技术。 基于购买历史进行客户细分: 这是一项==聚类任务==,旨在将客户分组以便制定不同的营销策略,可以使用k均值、DBSCAN等算法(见第9章)。 可视化复杂高维数据集: 这是数==据可视化任务==,常涉及降维技术(见第8章),以便在清晰的图表中呈现数据。 基于购买历史推荐产品: 这属于==推荐系统任务==。一种方法是使用人工神经网络(见第10章),输入客户历史购买等信息,预测其下次可能购买的商品。这类网络通常基于所有客户的购买记录训练。 为游戏构建智能机器人: 这通常通过强化学习(RL;见第18章)实现。RL训练智能体在给定环境中选择能最大化长期奖励的动作。著名的AlphaGo程序就是用RL构建的。 1.1.4. 机器学习系统的类型 现有的机器学习系统类型繁多,为便于理解,我们根据以下标准将它们分为大类(主要有三个TAG类别) 训练方式TAG: 机器学习系统根据训练期间的监督程度进行分类,主要包括监督学习、无监督学习、半监督学习和自监督学习等。 监督学习: 在监督学习中,训练数据包含输入特征和对应的标签(或目标)。算法通过学习输入和输出之间的映射关系来进行预测。常见的监督学习任务包括分类和回归。 例子: 垃圾邮件过滤器(分类),房价预测(回归)。 无监督学习: 在无监督学习中,训练数据只有输入特征,没有标签。算法需要自行发现数据中的结构和模式。常见的无监督学习任务包括聚类、降维和关联规则挖掘。 例子: 客户细分(聚类),PCA 降维,购物篮分析。 半监督学习: 半监督学习的训练数据既包含有标签的样本,也包含无标签的样本。这种方法通常在获取标签成本较高时使用。算法可以利用有标签数据来提高模型性能,同时利用无标签数据来发现数据的潜在结构。 例子: 在图像分类中,只有部分图像有标签,其余图像没有标签。 自监督学习: 自监督学习是一种特殊的监督学习,其中标签是从输入数据本身生成的。算法通过解决一个预定义的任务来学习数据的表示,例如图像着色、图像修复或预测视频中的下一个帧。 例子: BERT 模型中的 Masked Language Model 任务。 学习方式TAG: 机器学习系统可以分为批量学习和在线学习。 批量学习: 批量学习(或离线学习)需要在所有数据准备就绪后进行一次性训练。模型在整个训练数据集上进行训练,然后部署到生产环境中。批量学习适用于数据量较小且相对静态的场景。 优点: 训练过程稳定,可以充分利用所有数据。 缺点: 无法适应新数据,需要重新训练模型。 例子: 图像识别,自然语言处理。 在线学习: 在线学习系统能够即时地从新数据中进行增量学习。每个新的数据样本都会被用来更新模型,然后该样本可以被丢弃。在线学习适用于数据流式输入或需要快速适应变化的环境。 优点: 能够适应新数据,节省存储空间。 缺点: 对噪声数据敏感,容易受到灾难性遗忘的影响。 例子: 股票价格预测,推荐系统。 工作原理TAG: 机器学习系统的工作方式可以分为基于实例的学习和基于模型的学习。 基于实例的学习: 基于实例的学习(或基于记忆的学习)通过比较新数据和已知数据进行预测。算法会存储训练数据,并在预测时找到与新数据最相似的样本,然后根据这些样本的标签进行预测。 优点: 简单易懂,易于实现。 缺点: 需要存储大量数据,预测速度慢,对特征缩放敏感。 例子: K 近邻算法。 基于模型的学习: 基于模型的学习则通过在训练数据中发现模式并构建预测模型来实现。算法会学习一个函数,该函数可以将输入特征映射到输出标签。 优点: 预测速度快,泛化能力强。 缺点: 模型复杂,需要大量的训练数据。 例子: 线性回归,逻辑回归,神经网络。 提示: 这些分类标准可以灵活组合使用,==例如一个垃圾邮件过滤器可以同时是一个在线的、基于模型的监督学习系统==。 (1)训练监督 特征监督学习 (Supervised Learning)无监督学习 (Unsupervised Learning)半监督学习 (Semi-supervised Learning)自监督学习 (Self-supervised Learning)强化学习 (Reinforcement Learning) 训练数据已标记的数据集 (输入特征 + 正确的输出/标签)未标记的数据集 (只有输入特征)部分标记,部分未标记的数据集未标记的数据集 (但会生成伪标签)与环境交互产生的经验 (状态、动作、奖励) 学习方式从标记数据中学习输入到输出的映射函数,目标是预测新数据的输出。从未标记数据中发现隐藏的结构、模式和关系。利用少量标记数据指导对大量未标记数据的学习。通过人为设计的预任务,从数据自身生成标签进行学习。通过与环境的交互,学习最大化累积奖励的策略。 主要任务分类 (将数据分到预定义的类别),回归 (预测连续数值)聚类 (发现数据中的分组),降维 (简化数据),异常检测,关联规则学习,可视化分类和回归 (利用少量标签提升性能)特征学习 (学习有用的数据表示,常用于后续监督任务的预训练)决策制定 (学习在不同状态下采取何种动作以获得最大回报) 标签需求高 (需要大量准确标记的数据)无 (不需要任何标签)中等 (需要少量标记数据)无 (但需要设计合适的预任务)间接 (通过奖励信号来指导学习) 模型评估通常使用准确率、精确率、召回率、F1分数 (分类);均方误差、R方 (回归)等指标通常使用内部评估指标 (如轮廓系数、DB指数) 或结合下游任务的性能进行评估通常结合监督和无监督的评估方法通常通过下游任务的性能来评估学习到的表示通常使用累积奖励、平均奖励等指标 典型应用垃圾邮件过滤,图像识别,疾病诊断,股票价格预测,信用评分等。客户细分,市场篮子分析,社交网络分析,基因表达分析,异常交易检测等。文本分类,图像识别,语音识别 (在标记数据稀疏时)图像修复,视频着色,自然语言处理中的掩码语言模型 (BERT) 等预训练任务。游戏AI (AlphaGo),机器人控制,自动驾驶,推荐系统,资源管理等。 学习难度相对直接 (基于已有的正确答案学习)更具挑战性 (需要算法自行发现结构)介于监督和无监督之间依赖于预任务的设计,可能需要大量计算资源复杂 (涉及探索与利用的平衡,以及信用分配问题) <center><b>表:五种机器学习方式的对比表</b></center> 1)监督学习 title:相关概念 - **相关概念:** - **“目标 (target)”** 和 **“标签 (label)”** 这两个词在监督学习中通常被视为同义词。 - “目标”在回归任务中更常见。 - “标签”在分类任务中更常见。 - **“特征 (feature)”** 有时也被称为“预测变量 (predictor)” 或 “属性 (attribute)”。 - **概念范围:** 这些术语(标签、目标、特征、预测变量、属性)==可以指代单个样本的属性==(例如,“这辆车的里程特征是等于15000”),==也可以指代所有样本的整体特性==(例如,“里程特征与价格密切相关”)。 title:**标签和特征不是同一个概念吗?** 你说得很对!在监督学习中,“目标 (target)” 和 “标签 (label)” 这**两个词确实经常被当作同义词使用,尤其是在非正式的语境中**。你观察到的用法倾向也是准确的: - 目标 (target) 更常用于回归 (regression) 任务中,因为我们预测的是一个连续的数值。这个数值就是我们想要达成的“目标”。 - 标签 (label) 更常用于分类 (classification) 任务中,因为我们预测的是一个离散的类别。这个类别就是我们给数据点贴上的“标签”。 至于你提到的“特征 (features)”、“预测变量 (predictors)” 和 “属性 (attributes)”,它们也常常指代同一个概念,即用来描述数据的输入变量,模型会利用这些变量来预测目标或标签。 现在来回答你的核心问题:“标签和特征不说的是同一个东西么?” 绝对不是!标签(或目标)和特征是监督学习中两个完全不同的概念: - 特征 (Features): - 描述输入数据的属性或特性。 - 是模型用来进行预测的依据。 - 通常是数据集的列(在表格数据中)。 - 对于一个给定的样本(例如,一封邮件),特征可以是邮件的长度、包含特定关键词的次数、发件人域名等等。 - 标签 (Labels) 或 目标 (Targets): - 是我们想要预测的输出变量。 - 是模型在训练过程中学习的“正确答案”。 - 对于一个给定的样本,标签是该样本的真实类别(在分类中,例如“垃圾邮件”或“非垃圾邮件”)或真实数值(在回归中,例如房价)。 用一个简单的例子来说明:假设我们想要构建一个模型来预测房价(回归任务)。 - 特征 (Features) 可能包括:房屋的面积、卧室的数量、地理位置、建造年份等等。 - 目标 (Target) 就是我们想要预测的房价(一个连续的数值)。 现在,假设我们想要构建一个模型来识别图片中的动物是猫还是狗(分类任务)。 - 特征 (Features) 可能包括:图片的像素值、提取的边缘信息、纹理特征等等。 - 标签 (Label) 就是图片中真实的动物类别(“猫”或“狗”)。 **总结一下**: - 特征是输入,是模型学习的原材料。 - 标签/目标是输出,是模型需要预测的答案。 它们在监督学习中扮演着截然不同的角色,模型通过学习特征和标签之间的关系来进行预测。你对这些术语的理解非常到位! 监督学习的定义: 在监督学习中,算法接收到的训练集包含所需的解决方案,==这些解决方案被称为标签==。 图1-5展示了一个用于垃圾邮件分类的已标记训练集,这是监督学习的一个典型例子。 监督学习的特点: 有标签数据: 监督学习使用带有标签的数据集进行训练,其中标签是正确的输出或目标值。 目标明确: 监督学习的目标是学习一个将输入映射到输出的函数,以便能够对新的、未见过的数据进行准确的预测。 反馈机制: 在训练过程中,模型会根据其预测结果与实际标签之间的差异获得反馈,并据此调整自身参数。 分类和回归: 监督学习主要解决两类问题:分类(将数据分到不同的类别)和回归(预测连续的数值)。 泛化能力: 监督学习的目标是训练出一个具有良好泛化能力的模型,即在未见过的数据上也能表现良好。 监督学习应用:分类 (Classification) 目标: 学习如何对新的、未见过的电子邮件进行分类。 方法: 算法通过学习邮件的特征(例如,关键词、发件人、主题)与对应类别之间的关系来进行分类。 示例: 垃圾邮件过滤器是一个典型的监督学习应用。 应用场景: 自动识别和过滤垃圾邮件,提高用户体验。 优点: 能够有效地区分不同类别的邮件,减少用户手动筛选的工作量。 能够自动识别垃圾邮件,减少用户手动筛选的工作量。 可以根据用户反馈不断学习,提高过滤准确率。 节省用户的时间和精力,提高工作效率。 监督学习应用:回归 (Regression) 目标: 在给定一组特征(例如,里程、年龄、品牌等)的情况下,预测汽车的价格。 方法: 算法通过学习汽车的特征与价格之间的关系来进行预测。 示例: 汽车价格预测。 图示参考: 图1-6展示了一个回归问题,即在给定输入特征的情况下预测数值(通常有多个输入特征,有时也有多个输出值)。 应用场景: 帮助消费者和销售商评估汽车的合理价格,提高交易效率。 优点: 能够根据市场行情和车辆状况,给出较为准确的价格评估。 可以帮助消费者更好地了解汽车的价值,避免被不合理报价所欺骗。 提高交易效率,减少交易双方的信息不对称。 title:**“回归”一词的有趣来源:** - “回归”这个术语由Francis Galton引入,最初用于描述高个子孩子往往比父母矮的统计现象。 - Galton将这种“孩子身高回归到人群平均身高”的现象称为“回归到均值”。 - 后来,他将这个术语应用于分析变量之间相关性的方法上。 注意:某些回归模型可以用于分类任务,反之亦然(将标签与具体的身份数值相联系)。例如,逻辑回归通常被用于分类,因为它能够预测属于特定类别的概率(例如,20%的概率是垃圾邮件)。 title:**怎么理解某些些回归模型可以用于分类任务,反之亦然?** **1. 回归模型用于分类任务:** 回归模型通常输出的是**连续的数值**,而分类任务的目标是预测**离散的类别标签**。那么,如何将一个输出连续值的回归模型应用于分类呢?主要有以下几种方式: - **设定阈值 (Thresholding):** - 回归模型预测出一个连续值。 - 我们人为地设定一个或多个阈值。 - 根据预测值落在哪个阈值区间内,将其映射到不同的类别。 - **例子:** 预测学生考试分数的回归模型,输出范围可能是0-100。我们可以设定一个阈值60分。如果模型预测分数大于等于60,则分类为“及格”;小于60,则分类为“不及格”。 - **概率输出 (Probability Interpretation):** - 某些回归模型,如**逻辑回归 (Logistic Regression)**,虽然名字里有“回归”,但其核心机制是通过一个Sigmoid函数将线性模型的输出转化为0到1之间的概率值。 - 这个概率值可以直接解释为属于某个类别的可能性。 - 通过设定一个概率阈值(通常是0.5),可以将概率值转化为二分类的预测结果。例如,概率大于0.5预测为类别A,小于0.5预测为类别B。 - **注意:** 逻辑回归虽然在数学形式上与线性回归有关,但其设计目标和输出解释使其成为一个标准的分类模型。这里提到它是为了说明“回归模型”这个名称有时会让人产生误解。 - **多输出回归 (Multi-output Regression):** - 一些回归模型可以同时预测多个连续值。 - 在分类任务中,每个输出值可以代表属于某个类别的置信度或得分。 - 通过比较这些输出值,选择具有最高置信度/得分的类别作为预测结果。 - **例子:** 一个预测图像属于猫、狗、鸟的回归模型,可能会输出三个值,分别代表属于这三个类别的“可能性得分”。我们可以选择得分最高的类别作为最终预测。 **2. 分类模型用于回归任务:** 分类模型通常输出的是**离散的类别标签**或属于每个类别的**概率**。如何将一个输出离散值的分类模型应用于回归呢?这通常不如回归模型用于分类常见,但也有一些方法: - **将类别标签映射为数值 (Label Encoding and Treating as Continuous):** - 如果分类的类别是有序的(例如,低、中、高),我们可以将这些类别标签映射为数值(例如,0、1、2)。 - 然后,我们可以将分类模型(例如,决策树分类器)的输出视为这些数值,从而进行“回归”。 - **缺点:** 这种方法假设类别之间存在均匀的数值间隔,这在实际情况中可能并不成立,会损失很多信息。 - **概率作为预测值 (Probability as Regression Target):** - 某些分类模型可以输出属于每个类别的概率。 - 在某些特定的场景下,我们可以将这些概率值本身作为回归的预测目标。 - **例子:** 预测用户对某个商品的购买意愿,分类模型可能输出“购买”和“不购买”的概率。我们可以将“购买”的概率值(例如,0到1之间)作为回归的预测值。 - **集成方法 (Ensemble Methods):** - 通过特定的集成方法,例如将多个分类器的输出进行某种形式的平均或加权,可以得到一个连续的预测值。 - 这种方法相对复杂,并且通常更侧重于提升分类性能,而不是直接将分类器作为回归器使用。 **总结:** 模型类型的划分并非绝对的,模型的底层机制和输出形式决定了其主要的应用领域。然而,通过一些巧妙的方法和解释,某些回归模型可以产生可用于分类的输出(例如,通过阈值或概率),而将分类模型应用于回归任务则相对更具挑战性,并且通常会引入一些假设和局限性。逻辑回归是一个很好的例子,它模糊了回归和分类之间的界限,专注于预测概率以进行分类。 基于监督学习的算法: 分类算法: 逻辑回归 (Logistic Regression): 模型: 使用 sigmoid 函数将线性模型的输出转换为概率值,即 , 其中 z 是线性模型的输出,p 是属于某个类别的概率。 适用场景: 适用于二分类问题,例如垃圾邮件过滤、疾病诊断等。 支持向量机 (Support Vector Machine, SVM): 模型: 通过找到一个最优的超平面来分隔不同类别的数据,或者通过核函数将数据映射到高维空间,使其线性可分。 适用场景: 适用于高维数据、非线性可分数据等复杂问题。 决策树 (Decision Tree): 模型: 基于树结构的分类算法,通过一系列的 if-then-else 规则来进行决策。 适用场景: 适用于数据量较小、特征维度较低的问题。 随机森林 (Random Forest): 模型: 集成学习算法,通过构建多个决策树并进行投票来进行预测。 适用场景: 适用于各种分类问题,具有较高的精度和鲁棒性。 神经网络 (Neural Network): 模型: 由多个神经元相互连接而成的复杂网络结构,可以学习复杂的非线性关系。 适用场景: 适用于各种分类问题,尤其在图像识别、自然语言处理等领域表现出色。 回归算法: 线性回归 (Linear Regression): 模型: 假设输入特征和输出之间存在线性关系,即 , 其中 y 是预测值,x 是输入特征,θ 是模型参数。 适用场景: 适用于回归问题,例如房价预测、销售额预测等。 多项式回归 (Polynomial Regression): 模型: 扩展了线性回归,允许输入特征的非线性组合,例如 适用场景: 适用于数据之间存在非线性关系的情况。 支持向量回归 (Support Vector Regression, SVR): 模型: 与 SVM 类似,但用于回归问题,通过找到一个函数,使得尽可能多的数据点落在该函数周围的一个管道内。 适用场景: 适用于高维数据、非线性回归问题。 决策树回归 (Decision Tree Regression): 模型: 与决策树类似,但用于回归问题,通过一系列的 if-then-else 规则来预测连续值。 适用场景: 适用于数据量较小、特征维度较低的回归问题。 随机森林回归 (Random Forest Regression): 模型: 与随机森林类似,但用于回归问题,通过构建多个决策树并进行平均来进行预测。 适用场景: 适用于各种回归问题,具有较高的精度和鲁棒性。 神经网络 (Neural Network): 模型: 由多个神经元相互连接而成的复杂网络结构,可以学习复杂的非线性关系。 适用场景: 适用于各种回归问题,尤其在时间序列预测等领域表现出色。 title:**其他说明** - 监督学习算法需要使用带有标签的数据集进行训练。 - 监督学习算法的目标是学习一个将输入特征映射到输出标签的函数。 - 监督学习算法可以用于解决分类和回归两类问题。 2)无监督学习 无监督学习的定义: 在无监督学习中,训练数据是未标记的,打比方就像系统试图在没有任何“老师”提供正确答案的情况下自行学习。 无监督学习的典型特点: 数据驱动的模式发现: 算法能够自主地从数据中发现隐藏的结构和模式,无需人工干预。 适用于探索性数据分析和知识发现。 对数据质量要求较低: 不需要标记数据,可以处理大量未标记的数据。 对数据中的噪声和异常值具有一定的鲁棒性。 结果解释性较差: 算法发现的模式可能难以解释或理解。 需要结合领域知识和可视化技术进行分析。 典型无监督学习应用:聚类 (Clustering) 示例场景: 分析大量博客访客数据。 目标: 使用聚类算法检测相似访客的分组(如图1-8所示)。 学习方式: 算法无需人为告知访客属于哪个组,而是自行发现数据中的内在关联。 聚类结果示例: 可能发现40%的访客是喜欢漫画书的青少年,通常在放学后阅读博客。 可能发现20%的访客是喜欢科幻小说的成年人,通常在周末访问。 层次聚类: 可以将每个大的分组进一步细分为更小的子组。 应用价值: 帮助根据不同的访客群体定制博客内容。 典型无监督学习应用:可视化算法 (Visualization Algorithms) 输入: 大量复杂且未标记的数据。 输出: 算法生成数据的2D或3D表示(如图1-9所示)。 学习目标: 在低维空间中尽可能保留原始数据中的结构,例如避免不同集群的重叠。 应用价值: 便于理解数据的组织方式,并可能发现未知的模式。 图1-9的示例说明: 动物与车辆在可视化图中可能距离较远,而马与鹿距离较近,但都与鸟的距离较远。 图的来源许可: 图1-9的使用获得了Richard Socher等人的许可,出自他们的论文。 相关无监督学习应用:降维 (Dimensionality Reduction) 目标: 在不丢失过多信息的前提下简化数据。 方法: 将几个相关的特征合并为一个。 示例: 合并行驶里程和车龄这两个强相关的特征,得到一个代表汽车磨损程度的新特征。 术语: 这种合并过程称为特征提取 (Feature Extraction)。 应用场景: 在将训练数据提供给其他机器学习算法(如监督学习算法)之前,进行降维通常是有益的。 优点: 加快算法运行速度。 减少数据占用的磁盘和内存空间。 在某些情况下,可以提升模型性能。 相关无监督学习应用:异常检测 (Anomaly Detection) 目标: 识别数据中不寻常或异常的实例。 应用示例: 检测欺诈性的信用卡交易。 发现制造过程中的缺陷。 在预处理阶段自动移除数据集中的异常值。 学习方式: 系统通过学习正常实例的模式来识别异常实例(如图1-10所示)。 检测过程: 当遇到新实例时,判断其是否符合已学习到的正常模式。 相关无监督学习应用:新颖性检测 (Novelty Detection) 目标: 检测与训练集中所有实例都显著不同的新实例。 关键要求: 训练集需要非常“干净”,不包含任何希望算法检测到的异常实例。 与异常检测的区别: 示例: 如果训练集中包含少量吉娃娃犬的照片(占1%),新颖性检测算法不应将新的吉娃娃犬照片视为新颖。 示例: 异常检测算法可能会将这些稀有的、与其他狗差异较大的吉娃娃犬标记为异常。 相关无监督学习应用:关联规则学习 (Association Rule Learning) 目标: 在大量数据中挖掘属性之间有趣的关联关系。 示例场景: 分析超市的销售日志。 发现的规则示例: 购买烧烤酱和薯片的顾客也倾向于购买牛排。 应用价值: 可以根据发现的关联性调整商品摆放策略。 3)半监督学习 半监督学习的定义: 由于标记数据通常既耗时又昂贵,因此你通常会有很多未标记的实例而很少有已标记的实例。一些算法可以处理一部分已标记的数据。这称为半监督学习(见图1-11)。打比方就像系统在少量老师的指导下,利用大量的自学材料进行学习。 核心思想: 学习过程: 半监督学习的典型特点: 具有两个类别(三角形和正方形)的半监督学习——未标记的样例(圆形)有助于将新实例(十字)分类到三角形而不是正方形,即使它更接近标记的正方形。==这就像虽然十字离标记的正方形更近,但周围大量未标记的圆形样本都靠近三角形,暗示十字也可能属于三角形==。 半监督学习应用:照片托管服务(例如Google相册) 无监督的初步识别: 一旦你将所有的家庭照片上传到该服务,它会自动识别出同一个人A出现在照片1、5和11中,而另一个人B出现在照片2、5和7中。这是算法(聚类)的无监督部分。这就像算法自己先将照片按照相似度分组,发现哪些照片里的人脸比较像。 监督的人工干预: 现在系统只需要你告诉它这些人是谁。你只需为每个人添加一个标签,系统就可以为每张照片中的每个人命名,这对于搜索照片非常有用。这就像你告诉系统“这个组里的人是爷爷”,系统就能自动标记所有包含爷爷的照片。 算法构成: 大多数半监督学习算法是无监督和监督算法的组合。例如,可以使用聚类算法将相似的实例分组在一起,然后每个未标记的实例都可以用其集群中最常见的标签进行标记。一旦标记了整个数据集,就可以使用任何监督学习算法。这好比先用无监督学习将数据大致分类,然后用少量的标签信息来指导这些类别的具体含义,最终就可以像监督学习一样进行更精确的预测。 实际挑战: 这就是系统运行良好的情况。在实践中,它通常会为每个人创建几个集群,有时会将两个看起来相似的人混合在一起,因此你可能需要为每个人提供一些标签并手动清理一些集群。这好比算法初步将照片分组,但有时会将长得很像的亲戚分到不同组,需要人工稍微纠正一下。 4)自监督学习 自监督学习的定义: 这种==通过自身数据生成标签进行学习的方法称为自监督学习==。 核心思想: 从完全未标记的数据集中生成完全标记的数据集。 学习过程: 一旦生成了标记数据集,就可以使用任何监督学习算法进行训练。 自监督学习应用:图像修复 数据准备: 拥有一个很大的未标记图像数据集。 标签生成: 随机屏蔽每个图像的一小部分,将屏蔽的图像作为输入,原始完整图像作为标签(如图1-12所示)。 模型训练: 训练一个模型来恢复被屏蔽掉的部分,使其尽可能接近原始图像。 自监督学习的潜在应用: 生成的模型本身可能很有用,例如用于修复损坏的图像或从图片中删除不想要的对象。 自监督学习的主要目标: 通常情况下,使用自监督学习训练的模型本身并不是最终目标。 更常见的是,针对稍微不同的、用户真正关心的任务来调整和微调模型。 自监督学习应用:宠物分类 目标任务: 构建一个宠物分类模型,能够识别照片中的宠物物种。 自监督预训练: 利用大量的未标记宠物照片数据集,先训练一个图像修复模型。 预训练的意义: 如果修复模型表现良好,它应该已经学习到区分不同宠物种类的能力(例如,修复猫脸时不会生成狗脸)。 迁移学习: 假设模型架构允许(大多数神经网络架构都允许),可以将预训练模型调整用于宠物种类预测任务。 微调: 最后一步是在已标记的宠物照片数据集上微调模型。由于模型已经具备了识别不同宠物特征的基础知识,微调过程只需要学习这些特征与物种标签之间的映射。 title:**自监督学习与与前面三种监督学习的关联** - 有些人认为自监督学习是无监督学习的一部分,因为它处理的是未标记的数据集。 - 然而,自监督学习在训练期间使用(生成的)标签,因此在这一点上更接近于监督学习。 - “无监督学习”通常用于指代聚类、降维或异常检测等任务。 - 自监督学习主要关注与监督学习相同的任务,即分类和回归。 > **结论:** 最好将自监督学习视为一个独立的机器学习类别。 迁移学习的重要性: 将从一项任务中学到的知识转移到另一项相关任务称为迁移学习。 迁移学习是当今机器学习中最重要的技术之一,尤其是在使用深度神经网络时。 将在第二部分详细讨论迁移学习。 5)强化学习 title:**相关概念** - **核心概念 - 智能体 (Agent):** 强化学习系统在上下文中被称为智能体。 - **与环境的交互:** 智能体通过观察环境,选择并执行动作来与环境互动。 - **奖励与惩罚 (Reward and Punishment):** 智能体在执行动作后会获得环境的反馈,这种反馈以奖励(正回报)或惩罚(负回报)的形式出现(见图1-13)。 - **学习目标 - 策略 (Policy):** 智能体的目标是自行学习最优的行为方式,即策略。策略定义了在给定情况下智能体应该选择哪个动作,以最大化其随时间累积的总回报。 强化学习的定义: 强化学习是一种与监督学习、无监督学习和半监督学习截然不同的机器学习方法。这个学习系统(在此上下文中称为智能体)可以观察环境,选择和执行动作,并获得回报(或负回报形式的惩罚,见图1-13)。然后它必须自行学习什么是最好的方法,称为策略,以便随着时间的推移获得最大的回报。策略定义了智能体在给定情况下应该选择的动作。 强化学习应用:机器人行走: 许多机器人利用强化学习算法来学习如何有效地行走。 强化学习应用: DeepMind的AlphaGo: AlphaGo程序是强化学习的一个杰出例子。 它在2017年5月的围棋比赛中击败了当时世界排名第一的围棋选手柯洁,引起了广泛关注。 AlphaGo的学习方式:通过分析数百万场围棋比赛的棋谱,然后让程序自己与自己进行无数次对弈,从而学习到了高超的围棋策略。 学习阶段与应用阶段的区别: 需要注意的是,在AlphaGo与人类冠军比赛时,其学习过程是关闭的。在比赛中,AlphaGo仅仅是在应用它在训练阶段学到的策略。 离线学习 (Offline Learning): 正如后续章节(1.4.2节)将介绍的那样,AlphaGo这种先学习策略再进行应用的模式被称为离线学习。 (2)离线、在线学习 引言:对机器学习系统进行分类的另一个标准是系统能否从输入数据流中进行增量学习,而增量学习主要有离线(批量)学习和在线(增量)学习两种方式。 1)离线学习 title:**相关概念** - **资源消耗与时间成本:** 批量学习通常需要大量的时间和计算资源。 - **训练方式:** 系统通常离线完成训练,即先训练好整个模型,然后部署到生产环境运行,之后不再进行学习。 批量学习的定义: 在批量学习中,系统无法进行增量学习,必须使用所有可用的数据进行训练,因此也称之为离线学习 批量学习的特点: 训练完成后,模型只是应用它所学到的知识,不再根据新数据进行调整。 模型性能衰退及原因 模型性能衰退 (模型腐烂/数据漂移): 模型的性能往往会随着时间的推移而逐渐下降,因为现实世界不断变化,而模型却保持不变。 模型性能衰退的原因: 世界的演进发展导致数据分布发生变化。 对于猫狗分类模型,性能衰减可能较慢。 对于预测金融市场等快速变化的系统,性能衰减可能较快。 即使是猫狗分类模型也可能需要定期重新训练,原因包括: 相机技术的变化(图像格式、清晰度、亮度、大小比例)。 用户偏好的变化(喜欢的宠物种类)。 出现新的数据模式(例如,给宠物戴帽子)。 应对新数据与自动化流程 应对新数据: 如果要让批量学习系统理解新数据(例如新型垃圾邮件),需要在完整数据集(包括新旧数据)上从头开始训练新版本的系统,然后替换旧模型。 自动化流程: 训练、评估和启动机器学习系统的整个过程可以相对容易地自动化(见图1-3),使得批量学习系统也能适应变化。 更新频率的权衡 解决方案是经常更新数据并从头开始训练新版本的系统。 更新频率取决于用例,例如可能每天或每周训练一次。 对于需要适应快速变化数据的系统(如预测股票价格),这种更新频率可能不够。 资源限制与替代方案 计算资源需求: 在完整的数据集上进行训练需要大量的计算资源(CPU、内存空间、磁盘空间、磁盘I/O、网络I/O等)。 经济成本: 如果数据量巨大且系统每天都从头开始训练,最终会产生高昂的成本。 大数据集的限制: 如果数据量非常庞大,可能无法使用批量学习算法。 资源受限场景的局限性: 对于需要自动学习且资源有限的系统(例如智能手机应用程序或火星上的漫游机器人),携带大量训练数据并占用大量资源进行长时间训练是不切实际的。 替代方案: 在上述情况下,更好的选择是使用能够进行增量学习的算法。 基于离线学习的算法 线性回归 (Linear Regression): 原理: 线性回归是一种经典的回归算法,它假设输入特征和输出之间存在线性关系。 训练方式: 线性回归通常使用最小二乘法或梯度下降法进行训练,需要在所有训练数据上进行一次性训练。 适用场景: 适用于数据量较小且相对静态的回归问题。 逻辑回归 (Logistic Regression): 原理: 逻辑回归是一种经典的分类算法,它使用 sigmoid 函数将线性模型的输出转换为概率值。 训练方式: 逻辑回归通常使用梯度下降法或拟牛顿法进行训练,需要在所有训练数据上进行一次性训练。 适用场景: 适用于二分类问题,如垃圾邮件过滤、疾病诊断等。 支持向量机 (Support Vector Machine, SVM): 原理: SVM 是一种强大的分类和回归算法,它通过找到一个最优的超平面来分隔不同类别的数据。 训练方式: SVM 的训练过程通常需要求解一个凸优化问题,需要在所有训练数据上进行一次性训练。 适用场景: 适用于高维数据、非线性可分数据等复杂问题。 决策树 (Decision Tree): 原理: 决策树是一种基于树结构的分类和回归算法,它通过一系列的 if-then-else 规则来进行决策。 训练方式: 决策树的训练过程通常采用贪心算法,如 CART 算法,需要在所有训练数据上进行一次性训练。 适用场景: 适用于数据量较小、特征维度较低的问题。 随机森林 (Random Forest): 原理: 随机森林是一种集成学习算法,它通过构建多个决策树并进行投票来进行预测。 训练方式: 随机森林的训练过程需要在所有训练数据上进行多次抽样和训练,属于离线学习。 适用场景: 适用于各种分类和回归问题,具有较高的精度和鲁棒性。 神经网络 (Neural Network): 原理: 神经网络是一种复杂的机器学习模型,它由多个神经元相互连接而成,可以学习复杂的非线性关系。 训练方式: 神经网络的训练过程通常使用反向传播算法,需要在所有训练数据上进行多次迭代,属于离线学习。 适用场景: 适用于各种分类、回归和模式识别问题,尤其在图像识别、自然语言处理等领域表现出色。 title:**其他说明** - 离线学习算法通常需要在所有数据准备就绪后进行一次性训练。 - 离线学习算法的训练过程可能需要大量的计算资源和时间。 - 离线学习算法无法适应新数据的变化,需要定期重新训练模型。 2)在线学习 title:**相关概念** - **核外学习:** “核外学习”通常是离线完成的,因此“在线学习”这个名字可能具有误导性。将其视为“增量学习”可能更恰当。 - **学习率:** 适应不断变化的数据的速度,如果设置的学习率很高,那么系统会快速适应新数据,但它也会很快忘记旧数据(并且你也不希望垃圾邮件过滤器只标记最新类型的垃圾邮件)。反之,如果设置的学习率很低,那么系统会有更多的惰性,也就是说,它会学习得更慢,但它对新数据中的噪声或非典型数据点(异常值)序列的敏感度也会降低。 在线学习的定义: 通过以单独的数据实例或小批量的数据组的方式,循序渐进地向系统提供数据来进行增量训练,因此也称之为增量学习 在线学习的特点: 学习效率高:每个学习步骤都快速且成本低廉,因此系统可以近乎实时地学习新数据(见图1-14)。 易受不良数据的影响: 如果将不良数据输入在线学习系统,系统的性能可能会迅速下降(==取决于数据质量和学习率==)。 对于实时系统,这种性能下降会被用户直接感知。 不良数据的来源可能包括机器人传感器故障或恶意刷屏等。 在线学习应用 :快速变化的数据: 在线学习对于需要快速适应数据变化的系统非常有用,例如检测股票市场的新模式。 在线学习应用 : 资源有限的环境: 如果计算资源有限(例如在移动设备上训练模型),在线学习是一个合适的选择。 在线学习应用 :超大数据集 (核外学习): 对于无法一次性加载到计算机主内存中的超大数据集,在线学习算法同样适用(称为核外学习)。 算法加载部分数据,在该部分数据上执行一个训练步骤,然后重复此过程,直到处理完所有数据(见图1-15)。 关键参数 - 学习率: 学习率是在线学习系统中一个重要的参数,决定了系统适应不断变化的数据的速度。 高学习率: 系统会快速适应新数据,但也可能很快忘记旧数据(例如,垃圾邮件过滤器可能只标记最新类型的垃圾邮件)。 低学习率: 系统学习速度较慢,但对旧数据的遗忘也较慢,具有更高的惰性。 风险缓解措施: 需要密切监控系统性能,并在检测到性能下降时立即停止学习(并尝试恢复到之前的良好状态)。 可能还需要监控输入数据,并对异常数据做出反应,例如使用异常检测算法(见第9章)。 基于在线学习的算法 随机梯度下降 (SGD): 虽然梯度下降本身是一种优化算法,但随机梯度下降 (SGD) 及其变体(如小批量梯度下降)常用于在线学习。 SGD 每次只使用一个训练样本来更新模型参数,使其能够快速适应新数据。 适用于线性回归、逻辑回归、神经网络等多种模型。 Passive-Aggressive 算法: Passive-Aggressive (PA) 算法是一类简单有效的在线学习算法,尤其适用于分类问题。 PA 算法对每个新样本进行预测,如果预测正确(即“passive”),则不更新模型;如果预测错误(即“aggressive”),则以最小的幅度调整模型参数,以纠正错误。 PA 算法有多个变体,如 PA-I、PA-II 等,它们在更新规则上略有不同。 Perceptron: 感知机是一种简单的线性分类算法,可以用于在线学习。 感知机对每个新样本进行预测,如果预测错误,则根据样本的特征向量更新模型参数。 感知机算法简单易懂,但只能处理线性可分的数据。 Hinge Loss 的线性模型: 可以使用 Hinge Loss 作为损失函数的线性模型进行在线学习。 Hinge Loss 常用于支持向量机 (SVM),但也可以与其他优化算法(如 SGD)结合使用,实现在线学习。 Online k-Means: k-Means 是一种常用的聚类算法,但也可以通过在线方式进行更新。 Online k-Means 算法每次只使用一个样本来更新聚类中心,使其能够适应数据分布的变化。 title:**其他说明** - 许多机器学习算法都可以通过在线方式进行修改和更新。 - 在线学习的关键在于如何有效地利用每个新样本来更新模型参数,同时避免过拟合和灾难性遗忘。 - 学习率是在线学习中一个重要的参数,需要仔细调整,以平衡学习速度和稳定性。 (3)实例、模型学习 引言:对机器学习系统进行分类的另一种方法是根据它们的泛化方式。大多数机器学习任务都与做出预测有关。==这意味着在给定大量训练样例的情况下,系统需要能够对它以前未见到过的样例做出良好的预测(泛化)==。在训练数据上有很好的性能是好的,但还不够,真正的目标是在新实例上表现良好。 泛化方法主要有两种:基于实例的学习和基于模型的学习。 1)实例学习 title:**相关概念** 实例学习的定义: 也称为基于记忆的学习(memory-based learning)或懒惰学习(lazy learning)