尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

《机器学习导论》第一章:读懂引言,建立机器学习全局观

《机器学习导论》第一章:读懂引言,建立机器学习全局观 打开《机器学习导论》的第一章我建议大家把“引言”这两个字重新理解一下。它不是教材前面那页无关痛痒的序言而是一张藏宝图。很多人买回书之后直接从后面翻到算法章节结果学到一半开始恍惚怎么这么多模型它们之间什么关系到底先学哪个然后又在各个搜索框里输入“机器学习”、“李宏毅机器学习”、“机器学习期末复习”这类关键词重新找路。其实第 1 章早就把这些问题的答案铺在你面前了只是当时你还不认得它们。我因为工作关系每年都会接触不少刚开始学机器学习的同学也给一些企业做过内部培训。我发现大部分人在引言这一章停留的时间都不超过二十分钟这是个巨大的浪费。引言里通常包含了整门课的全局视图、概念框架、历史脉络甚至还有对“学习方法”本身的建议。可如果没有一个过来人帮你把那些骨架一样的术语逐个拆开引言读起来也确实干巴巴的。所以这一篇我想充当那个“伴读者”把《机器学习导论》第 1 章里真正重要的东西用大白话和实际案例讲给你听。这篇内容适合零基础、转专业、以及在非计算机行业做数据分析但想系统补课的人。读完你会清楚机器学习到底在解决问题、它由哪几个核心组成部分构成、你应该按什么顺序学下去。1. 为什么引言值得读三遍第一章在建立“看问题的方式”1.1 用三要素理解一切机器学习问题卡内基梅隆大学计算机科学学院院长汤姆·米切尔写过一句特别经典的机器学习定义如果计算机程序在任务 T 上的性能度量 P可以随着经验 E 的增加而提高那么我们就说这台机器在“学习”。这句话几乎在所有教材的第一章都会出现但很多人扫一眼就过去了。我劝你真的停下来把这句话拆开因为它是用几十年经验浓缩成的极简框架。我们拿一个每个人都能懂的例子来套垃圾邮件分类器。任务 T 是什么是“判断一封新邮件是不是垃圾”。经验 E 是什么是历史上用户已经标注好的那几万封邮件哪些是垃圾、哪些是正常邮件。性能度量 P 是什么是分类的准确率或者更讲究一点的精确率和召回率。你看只要把一个具体问题放进“任务、经验、性能度量”这个三角形里它就突然变得特别具体不再玄乎了。我见过很多刚入行的朋友卡在一个地方拿到业务问题之后脑子里只有“我要用机器学习做个模型”但说不清楚模型要优化什么指标。这时候我就会让他把米切尔的定义抄在纸上照着填空。填不出来的地方通常就是他落地时会踩坑的地方。所以读第一章第一遍的核心任务不是记忆而是“往这个框架里塞一个你自己关心的例子”。我在实际辅导中还会让学员做一个小练习把自己手头能拿到的数据、想解决的业务问题、以及业务方认可的考核指标分别写到三张便利贴上。如果三张便利贴没有逻辑关联说明问题还没被定义清楚。这一步做完整个学习的方向感会稳很多。1.2 数据、模型、算法三角关系除了米切尔三要素第一章通常还会讲另一个框架数据、模型、算法。刚接触这几个词时很多人觉得它们是三个并列的概念其实它们各司其职组合在一起才是完整的学习系统。你可以把机器学习过程想象成做一道菜。数据是食材你买到什么样的食材直接决定了菜的上限模型是菜谱它规定了“一批输入特征经过哪些变换最后变成预测结果”的结构算法是炒菜的手法是怎样根据当前炒出来的味道反过来修改菜谱里某一个调料的用量。在机器学习里这个“根据味道调配方”的过程有一个专有名词叫“优化”后面所有课程里你反复听到的梯度下降就是其中一种最常用的优化手法。第一章不会展开梯度公式但会告诉你存在这样一条线索训练模型本质上是在不断地修改模型里那些可调整的参数让预测结果越来越接近真实答案。为什么要在一开始就分清这三者因为我发现很多初学者在写代码的时候把数据和模型混在一起处理。比如有同学直接把 pandas 读进来的原始 DataFrame 塞进 sklearn 的 fit 函数里也不管里面有没有缺失值、有没有非数值列然后抱怨模型报错。这就是典型的“没有把数据当成独立环节”。如果从第一章就建立“先处理数据、再定义模型结构、最后用算法求解”这样的模块化思维后面学习 scikit-learn、TensorFlow、PyTorch 的时候会顺非常多。这个问题我会放在后面“常见问题”部分再展开因为它值得单独作为一个大坑来聊。2. 引言里没展开的算法地图经典模型速览2.1 监督学习从回归到分类的承诺第一章的正文未必会列全部算法但它一定会给你一个分类监督学习、无监督学习有时候还会提到强化学习。我建议你在读引言的时候就先建立一张地图把后面每一章要学的算法挂到正确的位置上这样学到后面你不会迷路。先看监督学习。它的核心设定是你有“正确答案”在手也就是标注好的数据。任务是让模型学会输入到输出之间的映射关系。监督学习又分成两大家族回归和分类。回归的目标是预测连续数值比如用波士顿房价数据集做预测输入是房间数、犯罪率、房龄这些特征输出是房价这个连续值。分类的目标是预测离散类别比如垃圾邮件/正常邮件、图片中的猫/狗。常见的分类器里逻辑回归虽然名字里带“回归”但它其实是分类算法决策树擅长处理表格型数据解释性很强支持向量机也就是 SVM通过构造一个最大间隔的超平面来分割类别是各类算法考试和期末复习里的常客K 近邻KNN则是“物以类聚”的朴素思路看看离新样本最近的 K 个样本是什么类别就把它判成什么类别。很多初学者在这里会犯一个选择题问“我应该先学哪个算法”。我的建议是先死磕线性回归和逻辑回归。原因很简单它们结构最简单又能把特征、参数、损失函数、梯度下降这些所有机器学习共用的基本概念都练到。你把这两个算法彻底弄明白再学决策树、SVM、神经网络会发现后面这些都是在这个底座上做变化。要是反过来一上来就啃 SVM 的核函数或者直接看梯度提升树GBDT的数学推导很容易被劝退。后面我列一个资源规划的时候也会提到这一点。2.2 无监督学习聚类与降维的一体两面无监督学习是另一种大思路没有“正确答案”只有一堆原始样本要让机器自己从数据里找出结构。最典型的任务有两个聚类和降维。聚类的目标是把相似样本分到一组让组内尽量紧凑、组间尽量疏远。你肯定听说过 K-means也叫 K 均值算法它是最经典的原型聚类方法思路是先随机挑几个“中心”然后不断迭代调整中心和样本的归属。头歌平台上有不少 K-means 相关的练习我在帮学生看作业时发现大家出错往往不是在算距离而是没搞懂聚类结果怎么评估。所以在看聚类这一部分时别只学算法本身还要顺带看一下聚类性能评估指标比如外部指标中的 Rand 指数内部指标中的轮廓系数。这些指标不是考试专用而是你在真实业务里判断“这组聚类到底有没有用”的依据。密度聚类 DBSCAN 和层次聚类 AGNES 也建议了解。DBSCAN 靠“密度相连”来发现任意形状的簇对人造圆形簇、带噪声的数据特别有用而且不需要预先指定簇的数量这一点比 K-means 灵活很多。层次聚类则是把样本一层一层合并或分裂最后画出一棵聚类树你可以根据需要的粒度选择切哪一层在生物分类、文档组织这些场景里很常用。降维的任务则是在尽量保留信息的前提下把高维特征压到低维空间。最基础的是主成分分析 PCA它把原始特征线性组合成少数几个“主成分”。热词里出现的“等度量映射”是一种非线性降维方法它通过测地线距离来展开流形结构。读第一章时你不需要掌握这些算法的细节但最好记住一句话降维不只是为了画图好看它还能去除噪声、压缩存储、加速训练。当你以后面临一个上千维的数据集模型训练特别慢时你会回来感谢这一段的。2.3 集成学习与概率模型把简单模型拼成强模型引言里经常会对“弱学习器”和“强学习器”做个预告这引出了集成学习。集成学习的直觉特别朴素一个模型判断可能不靠谱那我把一堆模型的结果合在一起总靠谱一些吧。第一章通常会把它当作提高精度的一种典型思路点一下。集成学习主要有两条技术路线。一条是 Bagging典型代表是随机森林并行训练很多棵决策树最后投票或取平均。另一条是 Boosting 系列Adaboost 就是其中最经典的一个它串行地训练多个弱分类器每一轮都更关注上一轮被分错的样本。后来出现的 GBDT梯度提升树则更进一步每一棵新树都在拟合前面所有树预测结果的“残差方向”。这些名字在热词榜单里反复出现不是没有原因的因为它们在实战里表现确实好。做结构化数据的比赛中GBDT 家族长期占据排行榜前排。概率模型里最大期望算法 EM 也很值得在早期混个脸熟。EM 处理的是“有些变量我们看不见”的问题比如一个混合高斯聚类场景中我们知道样本来自几个高斯分布的叠加但不知道每一个样本具体对应哪个高斯分量。EM 通过 E 步估计隐变量的期望M 步再更新模型参数反复迭代直到收敛。你不需要在第一周就把 EM 推导吃透但可以在心里留个印象它解决的是带隐变量的参数估计问题后面学到养个分时你会自然理解。3. 绕不开的三大假设与一条完整应用流程3.1 独立同分布假设为什么是基石你也许在搜索“机器学习三大假设”时刷到过不少答案不同教材的提法确实有些差异但最核心、也最容易被初学者忽略的是独立同分布假设简称 i.i.d.。它的意思是训练数据和测试数据是从同一个概率分布中独立抽取出来的。为什么这个假设这么重要因为机器学习的根本逻辑是“用过去预测未来”如果你假设训练集和未来真实场景不是同一个分布那模型学到的规律就没有资格推广到新数据上。现实中违反这个假设的例子比比皆是。比如你拿去年一整年的用户行为数据训练一个风控模型然后直接部署到今年结果今年用户的消费习惯变了、业务策略也变了训练时的旧分布和线上数据的新分布对不上模型效果迅速衰减。你以为是代码写错了其实问题出在假设前提不成立。另一个常见场景是数据采集偏差当年只采集了活跃用户的数据那么模型对沉默用户的判断就会很盲目。所以读第一章时我强烈建议你把这件事记进你的“业务常识库”每次建模之前先自问一句我的训练集和真实应用场景真的同分布吗顺着这个假设往下走你才能理解为什么我们总要把数据划分成训练集、验证集、测试集为什么调参要用交叉验证为什么线上模型要监控指标漂移。这三个为什么在引言里未必全写出来但它的种子是在这里种下的。这也就是我反复说的引言不是水话它是后面所有严谨操作的逻辑起点。3.2 从问题到部署七步应用流程热词里有一条“机器学习 应用流程”说明大家主动搜过这个问题。引言通常会讲一点机器学习的典型流程但受篇幅限制往往比较简略。我帮你把一套能直接落地的七步流程写出来你在学习任何一门课的时候都可以用这条主线把知识点串起来。第一步是定义问题。明确业务目标是什么是预测连续值还是分类成功标准是什么。第二步是数据采集与清洗。原始数据往往来自数据库、日志、外购数据集里面有缺失值、重复值、异常值这些都是要先处理的。第三步是数据预处理。用 pandas 能完成很大一部分工作比如缺失值填充、类别变量编码、数值特征标准化。这里提醒一句特征标准化要在划分训练集和测试集之后做很多人在这儿顺序搞反导致信息泄露评估结果虚高。第四步是特征工程。这一步比拼的是对业务的理解比如把时间戳拆成“星期几”“是否节假日”把用户 ID 转成用户历史行为统计量。第五步是模型选择与训练。从简单的线性模型开始建立基线再逐步尝试复杂的模型。第六步是模型评估与调参。用交叉验证看泛化能力关注你业务上最看重的指标而不是单纯看准确率。第七步是部署与监控。模型要上线服务真实流量同时定期监控效果发现分布漂移就重训。这套流程不只是一门课程的目录它是每个真实机器学习项目的地基。我在材料学科和电化学方向的一些合作项目里也看到大家用机器学习预测材料性能、对电化学阻抗谱做分类同样要遵守这条七步流程。学科背景千差万别但做事情的骨架高度一致。4. 学习路线与资源盘点课程、书籍、平台怎么选4.1 视频课怎么选李宏毅还是吴恩达热词里出现了“李宏毅机器学习”和“吴恩达机器学习”这两门课是中文互联网上被讨论最多的两个入门视频资源也被称为“机器学习免费公开数据集”之外最值得花时间的免费内容之一。经常有人问到底选哪个我的回答是别做单选题两门课承担的教学任务不一样。吴恩达的机器学习课程更偏系统性框架和数学直觉从线性回归、逻辑回归讲到神经网络每一步都会给你讲清楚代价函数长什么样、梯度下降怎么迭代。优点是逻辑严密配套练习也经典很多人把它当作第一门课。李宏毅的机器学习课程则更贴近当下年更内容会加入一些前沿话题讲课风格随和喜欢用生活化的例子把复杂原理讲出画面感。他在讲梯度下降的时候会用“在山谷里滚球”来帮助建立想象对新手特别友好。两者不冲突先用吴恩达建立严格的概念框架再用李宏毅补直觉和最新的模型视角是我最推荐的方式。无论选哪个我都建议你边看边做随堂笔记笔记不是抄公式而是用一句话回答“这个模型想解决什么问题、它跟上一个模型有什么区别”。如果你能坚持每节课后写出这两句话那么期末复习的时候你根本不需要临时抱佛脚。热词里还有不少“机器学习期末复习”相关的搜索说句实话平时积累比考前突击省力太多了。4.2 书籍选择与实战平台从西瓜书到头歌关于“机器学习书买谁的”这个问题也是隔三差五就有人问。受认可度最高的是周志华老师的《机器学习》因为封面是西瓜江湖人称“西瓜书”。它胜在理论体系完整把机器学习领域最核心的问题讲得非常透彻适合想系统打理论基础的人。缺点是对数学底子有一定要求零基础读者如果直接硬啃容易在泛化误差和推导部分卡住。这时候我会推荐搭配一本实战型的书比如《机器学习实战》它偏代码落地能让你快速把想法跑起来。还有一种组合是先看视频入门再啃西瓜书再拿实战书补代码练习这样理论和实操就都能覆盖到。实践平台方面头歌这类在线实训平台很适合做练习因为任务都配好了数据集和评测你只需要集中精力写核心代码。我见过不少学生把“头歌机器学习决策树”“头歌机器学习支持向量机”“头歌机器学习k-means”这些实验认真做完之后动手能力明显上台阶。数据集则可以找公开来源比如波士顿房价数据集、UCI 机器学习库或者 Kaggle 上的免费公开数据集。初期不要求用大数据集小而干净的数据反而更能帮助你理解算法原理因为问题出在哪里一眼就能定位。这里分享一个我常用的 30 天入门节奏前两周集中学线性回归和逻辑回归吃透损失函数与梯度下降第三周学决策树和集成学习第四周学聚类和简单神经网络。每天不用多保证一到两小时但一定要边学边写代码边记录笔记。这样 30 天下来你对后面热词里的更多高频词比如“机器学习中的梯度”“分类器”“树模型”“GBDT”等等都有了实际接触再回头读课本章节会轻松很多。5. 新手最容易踩的五个坑与排查指南5.1 只跑通代码不懂原理很多人在初学阶段选择了“调包侠”路线用 scikit-learn几行代码就能训练一个模型于是误以为自己已经会机器学习了。直到面试或者被人追问一句“你这个梯度到底是怎么算的”时才意识到自己只会 fit 和 predict。这是我看到最多的第一坑。破解办法不是让你手推所有公式而是对最核心的算法做到“能画会算”。比如线性回归你能不能解释梯度下降每一步是怎么更新参数的比如 K-means你能不能手算两轮迭代的中心点变化你不需要证明收敛性但至少要能把计算过程在纸上走一遍。我面试候选人的时候最看重他是否能用 5 分钟讲明白一个简单模型的训练流程这比背十个算法名字有用得多。5.2 数据划分与数据泄露第二个高频坑是数据处理顺序不对。许多教程为了省事会先做标准化再做数据集切分但严格来说这是有风险的你在切分之前就用整个数据集计算了均值和方差测试集的信息已经间接渗入了预处理环节这叫“数据泄露”会让你的评估结果虚高。正确做法是先把数据划分成训练集和测试集再在训练集上计算均值和方差然后把这个均值和方差同样应用到测试集上。从代码实现上看正确答案是用 sklearn 的 StandardScaler 先 fit 在训练集上然后用同一个 scaler 去 transform 测试集而不是对全量数据一次性 fit。很多同学在这个细节上栽过跟头因为模型在测试集上表现非常好一上线就不行最后排查半天发现是数据泄露。要是在读第一章时就对“训练/测试分布一致性”这个概念足够敏感后面犯这个错的概率会低很多。5.3 忽略数据预处理与特征工程第三个坑是拿到数据直接开跑。真实数据里充斥着缺失值、异常值、文本字段、类别字段你必须先做预处理。用 pandas 做预处理是基础中的基础我在带新人时要求他们必须熟练完成这几件事查看缺失值比例、选择填充或删除策略、把类别特征做 one-hot 编码或 LabelEncoder、对数值特征做标准化或归一化。这一套流程看着琐碎但它决定了模型效果的上限。特征工程更是如此一个有业务含义的特征提高的效果可能远超换一个高级模型。有时候你会发现同样是做同一个数据集的分类任务别人准确率比你高很多差距往往不在模型而在特征处理。比如日期字段新手直接把它当数值喂进去老手则会拆出“今天是周几”“是不是月末”“距离上一个节日的天数”模型的表现立刻就不一样了。这就是经验也是刚开始学机器学习最值得投入时间的隐藏技能。5.4 选错评估指标与过度追求复杂模型第四个坑是盲目用准确率衡量一切。遇到类别不平衡的数据比如 95% 是负样本、5% 是正样本就算你每次都预测负样本准确率也有 95%但这样的模型毫无意义。这时候需要看精确率、召回率、F1、ROC/AUC 这些指标。第一章对评估讲得相对简单但你在做练习时要主动养成“先想找指标、再调模型”的习惯。做回归任务时则关注 MSE、RMSE、MAE它们反映的误差含义也不一样。跟这个坑相伴的是一上来就追求深度神经网络、XGBoost 这种复杂模型。复杂模型确实精度高但调参门槛也高一旦表现不好你根本分不清是数据问题、特征问题还是模型参数问题。合理做法永远是先跑一个简单基线比如线性回归或逻辑回归确认数据流程没问题、指标能跑通再逐步替换成复杂模型。这样每一步的变化都可控出问题也好排查。5.5 不看训练过程盲目调参最后一个非常常见的坑是不看训练过程的曲线蒙着头调参数。在深度学习或者梯度提升类模型里损失函数的收敛曲线是判断训练是否正常的硬指标。曲线不下降说明学习率可能太大或者在梯度方向上有问题曲线下降过头然后震荡说明学习率偏大训练损失降了但验证损失上升说明过拟合已经开始。这些判断方法都不是靠感觉而是靠画图把每次迭代的损失记录下载画一条横轴为迭代次数、纵轴为损失值的曲线一切都会很直观。说到梯度热词里也有“机器学习中的梯度”和“机器学习模型中的树模型是假设独立同分布的吗”。树模型本身处理非线性关系时不强依赖特征尺度但它依然假设训练样本与预测样本来自同一分布所以独立同分布假设也一样适用。你在调参时偶尔会听说“梯度消失”“梯度爆炸”那主要出现在深层神经网络中前一层参数更新过慢或骤变导致网络学不进去。排查方法之一是检查不同层权重的梯度数值范围如果相差几个数量级就要考虑调整网络结构或初始化策略。这些内容虽然第一章不会细讲但你在入门阶段有了“遇到异常先看曲线、再分析梯度”的意识后面踩坑的概率会小很多。我个人在实际操作中的体会是引言这个章节最值得做的不是背下名词而是建立两个自我提问清单。第一个清单关于问题定义我在解决哪类任务我的数据从哪来我拿什么指标判断好坏第二个清单关于流程管理数据有没有做清洗和预处理训练集和测试集是不是严格分开了模型再复杂这两个清单没走完效果都不可能稳。如果你正处在从零开始的状态建议把开头那部分讲到的三要素和这五个坑抄在一张纸上贴在你的屏幕旁边。等你把后面的章节学完再回头来看会发现引言里那些“废话”其实每句都在替你把重要的路标提前埋好了。
返回列表