首页 / 资讯中心 / 文章详情

零基础机器学习入门:从三次浪潮到首个训练案例

零基础机器学习入门:从三次浪潮到首个训练案例 ★ FEATURED ARTICLE
简介这份PPT课件面向初学机器学习的人工智能专业学生与自学者围绕“为什么学、是什么、怎么学”三条主线梳理课程入门框架帮助读者在正式进入算法学习前建立整体认知。包内共1个pptx文件约10.28MB以幻灯片形式组织图文与案例便于课堂讲授、自学浏览和复习串联。内容从人工智能的定义与三次发展浪潮切入延伸到机器学习在人工智能研究领域中的位置并归纳数据、模型、优化三个核心要素及先修课程与后续学习路径。已有165人学习适合用作第一章导论、课程预习或知识框架搭建快速把握机器学习的基本概念、发展脉络与学习方向。1. 先别急着看公式一份把机器学习讲成地图的讲义第一次打开这份讲义的人十个里有八个会被「三次浪潮」「假设空间」「条件概率分布」这些词劝退然后默默关掉。其实你把它当成一张地图就好——机器学习这门学科太大零基础的人最需要的不是马上会推导而是先知道自己站在哪、前面有几条路、哪条路适合现在走。这份讲义就是那张地图。它不讲公式推导它只回答三个最朴素的问题为什么要学、它到底是什么、接下来该怎么学。下面我按新手能跟得上的顺序把它重新捋一遍每讲完一个概念就告诉你下一步手该往哪放。2. 为什么值得学从三次浪潮看懂机器学习的来路2.1 先搞清楚它在你整条学习路线上的位置很多人以为机器学习是一门孤零零的课学完就完事。其实它卡在正中间前面有一堆先修课垫底后面有一堆方向从它身上长出去。讲义里把人工智能的研究领域列了十项——机器学习、专家系统、自然语言处理、智能决策系统、自动定理证明、人工神经网络、推荐系统、智能识别、机器人学、人工生命。你会发现机器学习排在第一个而且后面十有八九都要用到它。手机相册自动认出人脸、输入法猜你下一句要打什么词、购物软件推给你一件「你可能喜欢」的东西背后都是这套东西在工作。打个比方学人工智能有点像学做菜。高等数学、线性代数、概率论是刀工和火候机器学习是炒出第一道能吃的菜深度学习是操办一桌宴席再往后才是各种专项应用。跳过刀工直接开宴席大概率是油溅一脸。所以这门课的意义不在于它本身多高深而在于它是你从「会写代码」走到「能做出智能的东西」之间那道必须跨过去的门槛。先修要求讲义里写得很清楚高等数学、线性代数、概率论、Python、C。后续课程是深度学习、嵌入式人工智能、创新创业实践。看清楚这个箭头你就知道自己不是在做无用功——现在补的每一块基础后面都会直接换成能力。2.2 第一次浪潮让机器学会推理然后撞了墙上世纪五十年代中期一场在高校里办的夏季研讨会被后来的人当成起点。当时的核心想法特别直觉只要给机器推理能力机器就能有智能。于是大家一窝蜂去做自动定理证明做会自己改进的下棋程序做专门处理符号的编程语言。成果确实有——有程序把一本数学名著里的定理一条条证了出来这在当年是很震撼的事。但这条路很快就走不下去了。最直接的原因是算力不够机器跑不动那么复杂的推理。有个流传很广的例子把一句英文来回翻译几次意思就歪成了「酒是好的肉变质了」。更致命的是理论上的打击——有研究者在一本小册子里指出当时最热的一种模型连「异或」这种最基本的问题都解决不了。什么是异或问题你可以自己在纸上试一下画四个点两个画三角、两个画圆圈位置摆成一个正方形让同类点落在对角线上。现在请你画一条直线把三角和圆圈分开。你会发现不管怎么画都分不开。这就是线性模型的死穴——它只能画直线在高维空间里叫超平面遇到这种「对角分布」就彻底没辙。注意这个「画不出直线」的小实验值得你亲手试一次。后面你学到的很多模型升级本质上都是在想办法把这条「画不出来的直线」变成能画出来的曲线。2.3 第二次浪潮把专家脑子里的知识搬进机器到了八十年代思路换了一个方向。既然通用推理走不通那就把领域专家脑子里的经验一条条写成规则塞进计算机里——这就是「知识工程」最出名的产物叫专家系统。某一类设备的故障诊断、某一类配置方案的生成都被做成了这种系统。同一时期神经网络方面的研究和反向传播算法也开始冒头为后来的爆发埋了伏笔。这一波的问题出在「人肉搬知识」这件事本身的成本上。请一个专家把经验讲清楚就已经很贵了把经验翻译成规则更贵规则写进系统之后还要不断维护。更麻烦的是知识一多就开始打架这条规则说往左那条规则说往右系统自己也不知道该听谁的。企业投了很大代价效果却对不上预期于是又一次进入低谷。站在新手视角这一段历史最值得记住的教训是靠人手工把知识喂给机器天花板很低。这个教训直接催生了第三次浪潮。2.4 第三次浪潮换个思路让机器自己从数据里找规律第三次浪潮的关键转变一句话就能说完不再由人把知识总结好再教给机器而是让机器自己从数据里把规律学出来。这个转变能成立靠的是四件事同时到位算法有了演进理论基础更扎实数据量起来了算力也跟上了。四者缺一不可——只有算法没有数据模型学不到东西只有数据没有算力跑一次要等一个月。今天你能在手机上看到会写诗的虚拟助手、会下棋的程序、能自动分类的照片库都是这四件事凑齐之后的结果。讲到这里我想强调一句这三次浪潮不是简单的技术进步史而是三次「换思路」。第一次相信推理能解决问题第二次相信知识能解决问题第三次相信数据能解决问题。你现在要学的机器学习就是第三次思路的产物——所以它的核心对象是数据不是逻辑也不是规则。记住这句话后面所有概念都会顺很多。2.5 该先补什么给零基础的先修清单讲义里列了五门先修课但没告诉你每门课到底要会到什么程度。按新手最容易上手的路径我把它拆细一点科目具体要会的东西学到什么程度够用高等数学导数、偏导、链式法则、梯度的直觉知道「往哪个方向调整能让误差变小」就行线性代数向量、矩阵乘法、转置、矩阵形状能看懂数据在计算机里就是一个矩阵概率论条件概率、贝叶斯公式、期望与方差、常见分布能理解「模型输出的是一个概率」Python变量、循环、函数、列表与字典能读写文件、能调用别人的库工具库numpy、pandas、matplotlib能加载数据、看一眼数据长什么样入门的话建议别按顺序死磕。我第一次学的时候就是想把高数从头看一遍看了两周就放弃了。后来改成「先跑通一个例子遇到不懂的数学再回头补那一小块」效率高了不止一倍。线代和概率论可以边用边补Python 则建议先花三五天把基础语法过一遍不然你看不懂代码在干什么。3. 到底什么是机器学习一个公式拆成三块3.1 把定义拆开数据、模型、优化讲义里给的定义是机器学习的核心对象是数据目标是提取数据特征通过迭代抽象出数据的模型发现数据中的知识规律最终做到对数据的分析或预测。这段话读起来拗口但拆开就三块。我把它写成一行机器学习 数据 模型 优化还是用做菜打比方。数据是你手里的食材模型是你照着做的那道菜谱优化是你尝一口觉得咸了、下次少放半勺盐的那个过程。三样缺一样都做不出菜没好食材菜谱再牛也白搭没菜谱食材只能烂在冰箱里不尝味道你永远不知道下次该改哪。讲义里还提了一句「数据的多元化」数字、文字、图像、视频、音频以及它们的组合。这句话的意思是不同类型的数据要用不同的模型去处理别指望一套方法打天下。表格数据用树模型和线性模型往往就够图像视频通常得上神经网络文本又有自己的一套玩法。新手最容易犯的错就是拿着一把锤子看什么都像钉子。3.2 数据口粮也是新手最容易敷衍的一环数据这块你至少要建立三个概念。第一是样本和特征。一行数据叫一个样本一列叫一个特征。比如你要预测房价每个样本是一套房特征是面积、房龄、楼层、离地铁多远标签是它卖了多少钱。特征是模型看到的标签是模型要猜的。第二是离散和连续。连续数据是可以切细的比如身高 175.3 厘米离散数据是一个个格子比如「一线/二线/三线」这种分类。讲义里说「不同的数据类型对应不同的算法模型」说的就是这件事——你喂给模型的东西长什么样直接决定了你能用哪些模型。第三是数据质量比模型选择重要。这句话在入门阶段听起来像鸡汤但它会反复验证。同一个模型喂干净数据和喂脏数据效果能差出一大截。所以新手的第一课不是调参是学会打开数据看一眼有多少行多少列、有没有空值、数值范围是不是离谱、类别是不是严重不平衡。这个习惯越早养成越好我自己就是踩过坑才记住的。3.3 模型从一堆散点里抽象出来的那根线想象你在纸上画了一堆点横轴是面积纵轴是价格。点散得到处都是但你能隐约看出「面积越大价格越高」的趋势。现在你要画一条线穿过这堆点让它尽量贴近每一个点——这条线就是模型。讲义里提到了模型的几种常见形态条件概率分布、决策函数、线性函数。名字吓人意思很朴素。线性函数就是那条直线决策函数是「给我一个输入我告诉你是哪一类」条件概率分布是「给我一个输入我告诉你它属于每一类的可能性分别是多少」。三者说的其实是同一件事的不同侧面。还有一个词叫假设空间。它的意思是你先规定好「我要找的模型长什么样」比如规定只能找直线那所有可能的直线就构成了你的假设空间。优化就是在这个空间里挑一条最像样的。这个概念的用处是让你明白一件事——如果你的假设空间里根本没有「正确答案」那再怎么优化也是白优化。这就是为什么选模型之前要先看数据。3.4 优化怎么知道哪根线更合适线画出来之后怎么判断画得好不好得有一把尺子。这把尺子叫损失函数它算的是「模型猜的」和「真实答案」差了多少。差得越小说明这根线越贴合数据。优化的过程就是不断调整模型参数让这个差值变小。放到散点图上就是那条线一点点挪位置、转角度直到它看起来最贴合。这里有个新手常踩的坑必须提前说训练误差小不代表模型好。如果你让线穿过每一个点训练误差确实变成零了但这条线一定弯弯曲曲、奇形怪状来一个新点它照样猜错。这个现象叫过拟合。正确的做法是留一部分数据不参与训练专门用来考试——模型在没见过的数据上表现好才说明它真的学到了规律而不是把答案背下来了。这个「考试」的动作专业的说法叫泛化能力评估。提示入门阶段先建立一个直觉就够了——模型的目标不是「把已知的答对」而是「把没见过的答对」。所有评估方法、正则化、交叉验证都是在为这句话服务。3.5 用「教小孩认猫」走一遍完整流程概念讲完我们用一件生活里的事把它们串起来。你教一个三岁小孩认猫不会给他讲「猫是哺乳动物属于猫科」。你会指着照片说这是猫。看多了他自己就形成了判断。这个过程拆开正好四步第一步给照片。几十张、几百张猫的照片各种角度、各种花色。这就是数据照片是特征「猫」这个答案是标签。第二步形成判断。小孩脑子里逐渐拼出一个模糊的印象有尖耳朵、圆眼睛、胡须、毛茸茸。这个印象就是模型虽然他自己说不清楚。第三步纠正错误。他把一只小老虎认成猫你说「不是」。下次他就不那么认了。这个纠正的过程就是优化。第四步认新猫。邻居家一只他从没见过的猫他看一眼就说是猫。这就是泛化。整个流程走完你会发现机器学习一点都不玄学。它做的事就是把人类小孩学认猫的过程用数据和计算模拟了一遍。区别只在于机器需要看得更多、算得更狠而且它不会自己问「为什么」。4. 第一个例子怎么跑二十行代码走完一次完整训练4.1 动手前环境准备只要三步看再多概念不跑一次代码你心里始终没底。这一节我们把第一个例子跑通全程二十来行。第一步装 Python。版本建议 3.10 以上装的时候记得勾上「加入环境变量」那个选项不然后面命令行找不到它。第二步装需要的库。打开命令行Windows 上是 cmd 或 PowerShellmacOS 上是终端敲这一行# 一次装齐四个库数值计算、表格处理、机器学习算法、画图 pip install numpy pandas scikit-learn matplotlib这里解释一下这四个东西分别干什么。numpy 管数组和矩阵运算是后面一切的地基pandas 管表格数据的读写和清洗你以后八成时间都在跟它打交道scikit-learn 是算法库常见的模型里面都有现成的matplotlib 负责画图让你能看见数据长什么样。装的时候如果下载慢换个时间再试不用折腾别的。第三步验证一下装没装上# 能打印出版本号就说明装好了 import sklearn print(sklearn.__version__)注意强烈建议给这个项目单独建一个虚拟环境别把系统自带的 Python 环境搞乱。新手最常见的翻车方式之一就是装了一堆库之后发现另一个项目跑不起来了。4.2 第一个能跑的例子二十行代码走完一次完整训练我们要做的是鸢尾花分类。这份数据是现成的一共 150 朵花每朵花量了四个尺寸花萼长度、花萼宽度、花瓣长度、花瓣宽度。花分三个品种。任务就是看着这四个尺寸判断它属于哪个品种。为什么选这个例子因为它小、干净、结果好理解而且完整走完了「数据 → 模型 → 训练 → 评估」全流程。你第一次跑通的东西最好是能一眼看到结果的不然容易失去信心。# 第一步把要用的工具搬进来 from sklearn.datasets import load_iris # 现成的鸢尾花数据 from sklearn.model_selection import train_test_split # 切分训练集和测试集 from sklearn.tree import DecisionTreeClassifier # 决策树模型 from sklearn.metrics import accuracy_score, confusion_matrix # 评估工具 # 第二步拿数据 iris load_iris() X iris.data # 特征150 行 4 列每行是一朵花的四个测量值 y iris.target # 标签0、1、2代表三个品种 # 第三步切一刀留三成当考卷 X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, # 三成拿去考试七成用来学习 random_state42 # 固定随机种子保证每次切出来的一样 ) # 第四步选一个模型开始训练 model DecisionTreeClassifier(random_state42) model.fit(X_train, y_train) # 这一步就是「学习」模型在找规律 # 第五步拿考卷考试 pred model.predict(X_test) # 注意这里用的是没参与训练的 X_test # 第六步对答案 print(准确率, accuracy_score(y_test, pred)) print(混淆矩阵) print(confusion_matrix(y_test, pred))跑完你会看到准确率大概率在 0.93 以上跑到 1.0 也不用惊讶——这份数据太干净了属于入门福利。混淆矩阵是一个表格行是真实类别、列是预测类别对角线上的数字越大越好非对角线上有数字就说明模型把某一类认成了另一类。4.3 逐行拆开看每一步到底做了什么代码跑通了但如果你不知道每一行在干嘛等于白跑。我们一行一行过。load_iris()是直接读现成的数据。真实项目里这一步会换成读 CSV 文件、读数据库、读图片文件夹但接下来的流程是一模一样的。X是大写习惯上表示特征矩阵形状是 150 行 4 列y是小写表示标签向量长度 150。train_test_split是整段代码里最关键的一步。它的作用是把数据切成两份一份给模型学一份留着考。参数说明如下参数作用新手怎么设test_size测试集占多大比例0.2 到 0.3 都合理数据少就设 0.2random_state随机种子随便填个整数填了才能复现结果shuffle切之前是否打乱默认就是打乱通常不用改DecisionTreeClassifier是决策树。你可以把它想成一连串的判断题「花瓣长度小于 2.45 吗是的话往左走不是往右走。」一路问下去最后落到一个品种上。它最大的好处是可解释——训练完可以把这棵树画出来你能看见它到底在问哪些问题。fit就是训练也就是「学习」这个动作。predict是拿新数据去猜。这两个方法名你以后会见到无数次几乎所有模型都叫这两个名字记住它们等于拿到了一把万能钥匙。最后accuracy_score算的是「猜对了多少个占总数的多少」。这是最直观的评估指标但它不是万能的——如果三类里有一类占了九成模型全猜这一类也能有九成准确率实际上啥也没学到。所以后面还要学精确率、召回率、F1 这些指标。4.4 跑通之后该改什么、看什么第一个例子跑通不算完真正的学习从「改一改」开始。以下四件事建议你今晚就动手试一遍。第一把test_size从 0.3 改成 0.1再改成 0.5看准确率怎么变。你会发现数据少的时候波动很大这就是为什么小数据集上的评估结果不能太当真。第二换一个模型。把决策树换成 K 近邻只改两行from sklearn.neighbors import KNeighborsClassifier # n_neighbors 的意思是「参考最近的几个邻居来投票」 model KNeighborsClassifier(n_neighbors3) model.fit(X_train, y_train) pred model.predict(X_test) print(KNN 准确率, accuracy_score(y_test, pred))跑完对比一下两个模型的准确率。你会发现同一份数据不同模型效果不一样——这正是「没有最好的模型只有最合适的模型」这句话的来源。第三给决策树加个深度限制DecisionTreeClassifier(max_depth2)。深度越小模型越简单越不容易过拟合但可能学得不够。这个参数你在调参时会反复用到。第四故意搞点破坏。把某几行数据的特征改成特别离谱的值或者把标签打乱再跑一次看准确率掉成什么样。做完这一步你会对「数据质量决定上限」这句话有切身体会。提示跑例子的时候别怕报错。新手阶段遇到的报错八成是三类库没装、包没导入、数据形状对不上。读报错的最后一行通常就能找到答案。5. 新手避坑五个最容易翻车的地方5.1 坑一把机器学习当成写 if-else现象拿到任务第一反应是「我来分析一下规则然后写成判断语句」写了一百行 if-else发现规则越加越多加到最后自己都理不清。原因这种思路还停留在第二次浪潮的「知识工程」阶段——靠人把知识总结出来再教给机器。它的问题在历史上已经验证过了成本高、规则会打架、维护不下去。解决换个问法。不要问「我该怎么判断」要问「我手上有没有历史数据能不能让模型自己去找规律」。如果实在没有数据那这个问题可能压根不适合用机器学习做用规则反而更省事。判断标准很简单数据量大、规律复杂、人说不清楚但能举出例子——这三条满足两条以上才值得上模型。5.2 坑二数据不看一眼就开始调模型现象拿到数据直接fit准确率不好就换模型、调参数折腾一整天从 0.71 调到 0.73累得半死。原因把「模型选择」当成了主要矛盾。实际上大部分项目的天花板是数据定的不是模型定的。数据里有大量空值、异常值、重复行再好的模型也救不回来。解决强制自己做一遍「数据体检」就四件事——看形状多少行多少列、看空值哪些列缺、看分布数值范围是不是离谱、看标签类别是不是均衡。这四步花不了十分钟但能省下你半天时间。我第一次学的时候就是跳过这步直接调参血泪经验。5.3 坑三拿训练集当考卷现象训练完直接在原数据上评估准确率 0.99兴奋地以为自己做出了一个神模型。换个新数据一跑掉到 0.6。原因模型把训练数据的答案背下来了包括里面的噪声。这就是过拟合。训练集上的高分是假象因为模型已经见过答案了。解决从第一天起就养成切分数据的习惯train_test_split那行代码永远别省。数据量够的话切三份训练集学、验证集调参、测试集最后考一次。测试集在最后评估之前绝对不许碰碰了就不准了。这条纪律比任何调参技巧都重要。5.4 坑四一上来就啃深度学习现象刚学完几个概念就去找深度学习的教程装框架、跑模型结果环境配了三天报错看不懂最后放弃。原因跳过了中间的台阶。深度学习是机器学习的下游它依赖的那些概念——损失函数、梯度下降、过拟合、训练集验证集——全在机器学习这门课里。地基没打就去盖三楼摔下来是必然的。解决老老实实按顺序走。先把线性回归、逻辑回归、决策树这三个模型吃透能说清楚它们在干什么、什么时候用哪个再把评估方法搞明白然后才碰神经网络。这个顺序看起来慢实际上是快的。5.5 坑五只看代码不看结果现象代码跑通了看到输出了一个数字就直接进入下一节。问他这个数字意味着什么、好在哪、差在哪答不上来。原因把「跑通」当成了目标。但跑通只是起点真正的信息在结果里——哪些样本被分错了、错在什么地方、是不是某一类特别差。解决每次跑完都多问三句这个指标是什么水平跟瞎猜比、跟简单规则比错的是哪些样本看混淆矩阵如果我要改进最该动的是数据还是模型养成这个习惯你的进步速度会比只看教程的人快好几倍。6. 下一步学什么从这份讲义往后走的路线图讲义看完了例子也跑通了接下来最怕的就是「不知道往哪走」然后开始漫无目的地刷视频。给你一条我验证过、新手能走得通的路线按顺序来。第一站把三个基础模型吃透线性回归、逻辑回归、决策树。不要贪多就这三个。每个都问自己四个问题它解决什么问题、它的输出长什么样、它有什么参数可调、它什么时候会失效。这一站大概花两到三周。第二站把评估方法学明白。交叉验证、混淆矩阵、精确率与召回率、ROC 曲线。这一站很多人跳过但它决定了你后面能不能判断自己做的到底有没有用。一周足够。第三站无监督学习入门聚类和降维。KMeans 和 PCA 各跑一个例子就行知道它们能干什么。第四站才是神经网络和深度学习。到这一步你会发现前面三站积累的概念几乎全都能直接搬过来用——损失函数还是那个损失函数过拟合还是那个过拟合只是模型复杂了。给一个更具体的周节奏参考阶段时间要做完的事第 1 周5 到 7 天补 Python 基础跑通第 4 章的例子改参数看变化第 2 到 3 周两周线性回归 逻辑回归各找一个真实小数据集练手第 4 周一周决策树 评估方法学会看混淆矩阵第 5 周一周聚类和降维各跑一个例子第 6 周起视情况再决定是往深度学习走还是往某个应用方向走另外补一句关于数学的建议。不要一上来就抱着教材从头啃那样大概率半途而废。正确的姿势是「用到哪补哪」学线性回归的时候遇到梯度就回头把导数和偏导看一遍学逻辑回归的时候遇到 Sigmoid 和概率就把条件概率补一补。带着问题去补吸收率完全不一样。还有个小技巧每学一个模型试着用一句大白话把它讲给完全不懂的人听。讲得出来说明你真懂了讲不出来说明你只是记住了代码。这个方法我用到现在每次卡壳的地方往往就是我没真懂的地方。我第一次系统地学这套东西的时候最大的教训是太急着看结果数据不看、评估不做模型跑出一个高分就以为大功告成。后来在一个真实项目上栽了个大跟头才发现那些被我省掉的步骤恰恰是决定成败的部分。从那以后我每跑一个模型都强制先看一眼数据长什么样、再检查一遍测试集有没有被污染最后才敢看指标。这个笨办法救过我很多次。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站