☰
机器学习算法怎么学?一张地图掌握监督、无监督与强化学习核心
2026/11/4 8:42:15 网站建设 项目流程

我经常在评论区看到这样的提问:“博主,机器学习算法到底怎么学?”“为什么教程翻了好几本,真做起项目来还是不知道选哪个算法?”“期末考试算法部分要怎么复习才不慌?”——这类困惑几乎每个接触人工智能的人都会遇到。很多人从《机器学习》教科书翻开算法章节的那一刻就开始卡壳,因为教材习惯用数学公式开门见山,而实际学习中最先需要建立的,其实是那张“算法地图”:这些算法各自解决什么问题、彼此是什么关系、遇到一个具体的业务场景该从哪个算法切入。这篇作为【人工智能】系列的第3篇,专门聊透机器学习算法篇。不堆公式、不走流程,用大白话把监督学习、无监督学习、强化学习的核心算法、适用场景、实现路径和常见坑位讲清楚。适合三种人:刚入门想建立算法体系的同学、正在期末复习的在校生、准备算法相关面试的求职者。

1. 算法这个词,在机器学习里到底指什么

1.1 一说算法就头疼?先分清两种“算法”

我注意到一个现象:很多人一搜“机器学习算法”,搜索引擎会连带冒出归并排序、KMP、冒泡排序、堆排序、A*算法、贪心算法这些词。于是有朋友跑来问:我是不是得先把这些算法全学会,才能学机器学习?至少我身边十个新手里,有八个都栽在这个坎上。

这是个非常要命的误会。数据结构与算法里的排序、搜索、字符串匹配,和目标检测、文本分类用到的机器学习算法,根本就是两套东西。传统算法的特点是有明确的“解题步骤”,给定输入、规定步骤,输出是确定的。比如你给冒泡排序一个乱序数组,它一定能排成有序数组,过程可复现,结论可验证。机器学习算法则完全不同,它不是人写死的规则,而是从大量样本中自动总结规律,最终得到的是一组模型参数,这组参数能对没见过的新样本给出预测。

那为什么两者经常被混在一起讨论?因为做完整的人工智能系统往往既需要机器学习算法,也需要传统算法做支撑。比如一个游戏AI要规划路径,底层的A*搜索负责找最短路径,上层的强化学习算法负责任务决策;又比如文本预处理中的关键词匹配,KMP算法能高效完成检索。可以这么理解:传统算法是“工具”,机器学习算法是“大脑”,它们在同一个系统里各司其职。学机器学习之前如果有数据结构基础,当然更好,但不代表你要先把所有排序算法刷一遍才能动模型。

1.2 机器学习算法到底在学什么东西

把花里胡哨的外壳全部剥掉,所有机器学习算法在做的事情高度统一:学习一个从特征到输出的映射。

用数学语言说,就是拟合一个函数f,使f(x)能尽量准确地输出y。其中x是样本的特征,比如用户年龄、浏览时长、消费金额;y是我们要预测的目标,比如他会不会购买商品。所谓“训练”,就是用大量带标签或者不带标签的数据,不断调整f内部的参数,让预测结果和真实情况越来越接近。

生活化的理解是做菜。传统菜谱是“盐3克、糖5克、大火炒3分钟”,每一步都写死;机器学习则像是你吃了几十次某道菜之后,自己慢慢琢磨出“大概这个色泽就是熟了、这个甜度大概是某几种调料的组合”,之后见了新食材也能凭经验推测怎么做。算法锻炼的,就是从过往数据里提取经验、并用于新情况的能力。

1.3 学习每个算法,盯住三个问题就够

面对五花八门的算法,我给学生最常说的话是:别试图一下子背下所有公式,每个算法只要抓住三个问题,你就真正入门了。

第一,它解决什么问题?是预测连续数值(回归)、判断类别(分类),还是把数据分组(聚类),又或者是做序列决策(强化学习)。第二,它的核心思想一句话是什么?逻辑回归是“在特征线性组合后套一个概率函数”,决策树是“不断问问题、每次切一刀”。一句话能说清楚,说明你理解了。第三,它的边界在哪?哪些场景好用、哪些场景硬套就翻车。这三点抓住了,剩下的是实现细节。很多人在算法上绕远路,就是因为一开始陷进了“参数更新公式怎么推”的细节里,反而把最有用的全局视图丢了。

2. 三大学习范式与算法选择地图

2.1 监督学习:有标准答案的学习

按“训练数据是否有正确答案”来分,机器学习算法被分成三大范式,监督学习是其中应用最广的一类。监督学习的训练集里,每个样本都带标签,就像学生做题时每道题都有标准答案。算法要做的是从“题目-答案”对中找到规律,之后看到新题目也能给出答案。

监督学习内部又分两支。一支是回归,预测连续数值,比如房价、气温、销售额,代表算法有线性回归、岭回归、支持向量回归;另一支是分类,预测离散类别,比如垃圾邮件识别、图片是不是猫、用户是否流失,代表算法有逻辑回归、决策树、随机森林、K近邻、朴素贝叶斯。实际业务中,80%以上被解决的机器学习问题都属于监督学习,这也是为什么各大教程第一个教的一定是它。

这里插一句热词里的“机器学习应用流程”,其实所有监督学习项目都逃不出“数据收集—清洗—特征工程—模型训练—评估—部署”这条链路,具体怎么跑通,我放第4章用一个案例完整演示。

2.2 无监督学习:没有标准答案的发现

无监督学习则相反,训练数据没有标签,算法要从一堆“没批改过的卷子”里自己发现结构。最典型的是聚类,代表算法是K-Means、层次聚类、DBSCAN。比如电商平台想给用户分群,没有现成的“你是哪类人”标签,就可以靠聚类算法根据消费行为把用户自然分成几类,再给每类人贴业务标签、做差异化运营。

无监督学习还有一个常见任务是降维,代表算法是PCA,它把几十个特征压缩成几个综合维度,同时尽量保留原始信息。降维常用于可视化——把高维数据画到二维平面,也用于数据预处理——减少计算量、去除特征间的相关性。在我做过的不少特征工程里,PCA都能帮模型提升训练速度,有些场景下还能顺带抑制过拟合。

2.3 强化学习:通过试错一步步学会决策

强化学习与前两者有本质区别:它没有一个离线数据集等着你去拟合,而是让Agent(智能体)在与环境不断交互中,靠奖励信号学会策略。

热词里那个“人工智能中agent指什么”,正好在这里解释。Agent就是具备感知环境、做出决策、采取行动能力的实体,可以是一个游戏里的角色、一台机器人,也可以是推荐系统里的策略模块。强化学习的核心循环是:Agent观察环境状态,做出动作,环境反馈下一状态和奖励,Agent根据奖励调整策略。训练时间一长,Agent会越来越倾向于选择累计奖励最大的动作序列。

代表算法有经典的Q-Learning、DQN和PPO。DQN用深度神经网络拟合Q值函数,把Q-Learning扩展到高维状态空间,当年在Atari游戏上表现惊艳;PPO则是策略梯度家族里最稳健的成员,OpenAI很多机器人控制实验都用它。热词里有“dqn算法matlab”“ppo算法matlab”,说明不少同学在课程设计里用MATLAB的强化学习工具箱做仿真,这条路完全走得通,而且MATLAB自带环境可视化界面,对理解Agent-环境交互很有帮助。

2.4 选算法其实是在选“数据的形状”

很多新手最痛苦的是“算法背了一堆,就是不知道什么时候用哪个”。我把选择的逻辑压缩成下面这张表,对号入座就能省掉大半纠结时间。

数据情况具体任务算法方向典型算法
有标签预测连续数值回归线性回归、岭回归、SVR
有标签预测离散类别分类逻辑回归、决策树、随机森林、KNN、SVM
无标签发现自然分组聚类K-Means、层次聚类、DBSCAN
无标签压缩特征维度降维PCA、t-SNE
与环境持续交互学习决策序列强化学习Q-Learning、DQN、PPO

还有一个常见混淆点:深度学习算法和机器学习算法是什么关系?答案是包含关系。深度学习(神经网络)是机器学习的一个子集,擅长处理图像、文本、语音这类非结构化数据。日常遇到结构化表格数据时,不必一上来就上深度模型,先用逻辑回归、随机森林这类经典算法往往又快又稳,这也是基层算法工程师的常用起手式。

3. 高频核心算法逐个拆解

3.1 线性回归与逻辑回归:一切模型的最短起点

线性回归是很多人的第一个算法。它的思想一句话:拟一条直线(或一个超平面),让所有样本点到这条线的距离平均最小。数学表达就是y=wx+b,训练过程就是找一组参数(w,b),使得预测值和真实值的均方误差最小。这个过程有解析解,也能用梯度下降迭代求解。

逻辑回归名字里带“回归”,实际干的是分类的活。它在线性组合外面套了一个sigmoid函数,把结果压缩到0到1之间,可以解释成样本属于正类的概率。它和线性回归的关系,最直白的说法是:线性回归预测温度,逻辑回归预测“明天会不会下雨”的概率。

为什么把这两个放在最前面?因为几乎所有模型本质上都在做类似的事情——从特征里找到某种有意义的组合来预测目标,区别只在组合方式复杂不复杂。逻辑回归至今依然是工业界使用频率最高的分类模型,原因很简单:可解释性强,每个特征的权重可以直接告诉业务方“这个因素影响多大”;训练速度快;效果稳定;上线部署成本低。新手用sklearn写这两个模型,代码都不到十行,却能把“特征到模型到评估”的整个流程先跑通,这是最好的起点。

3.2 决策树与随机森林:最被低估的组合拳

决策树大概是所有机器学习算法里最像人做决策的模型。它把判断过程拆成一层一层的“如果……那么……”规则:年龄小于30岁吗?是,进左子树;否,进右子树,继续问下一个问题。训练的本质是选择问什么问题和在哪个阈值切分,常用的纯度度量是信息熵或基尼系数。

热词里的“机器学习周志华”指的是周志华老师的《机器学习》,也就是大家口中的西瓜书,决策树那一章把ID3、C4.5、CART的思路讲得特别清楚,适合把原理彻底弄懂。实际写代码时我推荐直接上随机森林,它是很多棵决策树组成的“投票委员会”,每棵树在随机抽样的数据和随机抽样的特征上训练,最后汇总所有树的预测结果。单棵决策树如果不剪枝很容易过拟合——所以“剪枝算法”才会出现在热词里——随机森林通过“集体决策”天然缓解了这个问题,效果稳定、抗噪能力强,还能量化特征重要性,是我做表格型数据时的默认起手式。

3.3 K-Means和KNN:一对最容易被搞混的兄弟

面试和期末里最高频、又最容易混淆的组合,我赌是K-Means和KNN。名字都带K,但一个做无监督聚类,一个做有监督分类/回归。

K-Means的目标是把样本分成K簇,让簇内样本尽量近。流程很直观:先随机选K个中心点,每个样本归到离自己最近的中心,然后把每个簇的中心更新为所有成员的均值,反复迭代直到中心不再移动。这里最大的坑是:一定要先做标准化。不然年龄、收入这类不同量纲的特征会直接主导距离计算,聚类结果完全失去意义。K怎么定?常用肘部法则看簇内误差平方和的拐点。

KNN则是“看邻居投票”:新样本进来,找训练集里距离最近的K个样本,做分类就少数服从多数,做回归就取平均值。它没有显式训练过程,所以被称为“懒惰学习器”。K值的选择影响很大,K太小容易受噪声影响,K太大又会抹平边界。还有一点很多人忽略:KNN对特征缩放极其敏感,同一份数据,标准化和没标准化出来的准确率可能差出十几个点。当年我用K-Means给用户分群时,因为忘了标准化,分出来的群全是“收入”这个特征在主导,年龄、客单价完全没起作用,后来发现问题的那一刻恨不得抽自己。这类教训,等你实际操作时会遇到很多次。

3.4 从Q-Learning到DQN、PPO:强化学习的两座里程碑

强化学习如果只挑两个现代代表,就是DQN和PPO。DQN用神经网络拟合Q值函数,回答“在当前状态做某个动作有多好”,解决了传统Q表无法覆盖高维状态空间的问题。它有两个关键技巧:经验回放,把过去经历存起来随机抽样训练,打破数据相关性;目标网络,用一个延迟更新的网络参数帮助稳定训练。对初学者,我建议先用MATLAB或Python的Gym环境跑通CartPole这类小任务,再上DQN,否则一上来就是追逐游戏AI的大工程,很容易被训练几小时不收敛劝退。

PPO是策略梯度方法的代表,它不再预测Q值,而是直接优化“在某个状态选某个动作”的策略,并在更新时限制步长,防止一次更新太猛直接把策略练崩。PPO是当前强化学习落地性价比最高的算法之一,不少大厂的推荐系统、调度系统里都有它的影子。这两者的共同点是“从零开始靠奖励信号试错”,和前面的监督/无监督算法完全不是一种玩法。如果你在课程设计或大作业里选强化学习方向,记住一点:环境设计比算法实现更重要,奖励函数稍微给歪一点,模型再强也训不出正常行为。

3.5 朴素贝叶斯和SVM,值得知道的元老

朴素贝叶斯基于贝叶斯定理,加上特征之间条件独立的强假设,用后验概率做判断。虽然“朴素”这个假设在现实中几乎不成立,但它在垃圾邮件过滤、情感分析这类文本场景里依然表现惊艳,因为文本特征天然稀疏,“独立”的误差被数据量稀释了。它训练极快,几万条样本几秒钟就能训完,至今仍是不少推荐系统冷启动阶段的常驻选手。

SVM的核心思想是找一个最大间隔超平面把不同类别分开,线性不可分时通过核函数映射到高维空间,找到那个让间隔最大的边界。核函数可以理解成一种相似度度量,最常用的RBF核把样本映射到无穷维,听起来玄乎,但sklearn里一行代码就能用起来。它的理解成本比树模型高,但在小样本高维场景下有独特优势,比如基因表达数据、文本向量这类动辄上万维、样本只有几百条的任务,SVM依然能扛。现在工程里它不如树模型和神经网络常用,但面试中关于“什么是支持向量”“核函数的作用”“软间隔与硬间隔”依然高频,原理值得掌握。

4. 一个机器学习项目从数据到模型到底怎么跑

4.1 场景设定:预测电商用户是否复购

说一千道一万,算法要在项目里才算活。这一章我带大家走一遍完整的机器学习应用流程,场景选了一个很朴素但五脏俱全的“电商用户复购预测”:根据用户的历史行为特征(注册天数、近30天浏览次数、加购次数、累计消费金额、平均客单价等),预测他未来7天是否会再次购买。数据是典型的表格数据,问题属于二分类。

选择这个场景有三个理由:数据构造直观,不需要特殊领域背景;二分类问题几乎是所有机器学习教程的通用接口;它完整覆盖了从特征工程、模型训练到评估的全部环节,做完这一个,其他类似项目你都能举一反三。

4.2 七步流程逐段实操

第一步,探索数据。先看shape、describe、info,了解哪些列有缺失值、分布是什么样。缺失值过多又没业务意义的列直接删,少量缺失的用中位数或众数填充。第二步,特征工程。类别型字段做编码,数值型字段做标准化。第三步,切分数据。用train_test_split把数据按7:3切成训练集和测试集,二分类记得stratify=y保证两边的正负样本比例一致,random_state固定一个数,保证结果可复现。第四步,先跑基线模型,我一般直接用逻辑回归,它快、好解释、能快速暴露数据问题。第五步,用测试集评估,别只用准确率,更看重召回率、精确率、F1和ROC-AUC。第六步,换更强的模型,随机森林、XGBoost逐个试。第七步,调参验证,用交叉验证和网格搜索选最优参数,看是否真比基线有提升。

下面是我项目中实际用到的核心代码骨架(sklearn版本,可直接复制修改):

import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report, roc_auc_score df = pd.read_csv("user_purchase.csv") # 1. 探索 print(df.info(), df.describe()) # 2. 特征工程:填充缺失值 + 标准化 df = df.fillna(df.median()) X = df.drop("label_repurchase", axis=1) y = df["label_repurchase"] # 3. 切分,stratify保持正负比例 X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=42, stratify=y ) scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 4. 基线模型 lr = LogisticRegression(max_iter=1000) lr.fit(X_train, y_train) y_pred = lr.predict(X_test) print(classification_report(y_test, y_pred)) print("AUC:", roc_auc_score(y_test, lr.predict_proba(X_test)[:, 1])) # 5. 对比模型 rf = RandomForestClassifier(n_estimators=200, max_depth=8, random_state=42) rf.fit(X_train, y_train) print(classification_report(y_test, rf.predict(X_test))) print("AUC:", roc_auc_score(y_test, rf.predict_proba(X_test)[:, 1]))

几点解释:标准化要用训练集的scaler去transform测试集,千万不能对测试集重新fit,这是最容易犯的低级错误。逻辑回归的评估除了预测类别,还要看predict_proba输出的概率,AUC就是基于概率算出来的,它不受阈值选择影响,比准确率更能反映排序能力。如果特征比较多,可以用递归特征消除帮忙找重要特征,特征量不大时暂时不必上。

4.3 过拟合和特征泄露:两类最隐蔽的坑

项目里最常出问题的不是模型不work,而是训练时指标很好、上线后崩盘,背后多半是过拟合或特征泄露。

过拟合的表现是训练集准确率99%、测试集只有70%,本质是模型把训练数据里的噪声也背下来了,就像学生背题答案而不是学解题思路。缓解手段总结几条:增加数据量;降低模型复杂度,比如决策树限制max_depth;加正则化项;用交叉验证代替单次切分;以及使用集成方法。随机森林比逻辑回归更不容易过拟合,但如果n_estimators和max_depth配得冒进,一样会翻车。

特征泄露则是犯了一次就忘不了的教训。所谓泄露,指的是训练特征里包含了“未来才发生的信息”。举个例子:预测用户未来7天会不会复购,却把一个“7天后是否收到优惠券”的字段放进特征,模型在训练时发现这个字段和标签几乎一一对应,测试时该字段根本不存在,线上指标自然崩。所以,特征工程做完之后一定要逐列问一句:这一列在预测时点真的拿得到吗?拿不到就删掉。

4.4 让调试不再抓狂:Pipeline和报错排查

刚开始写机器学习代码,90%的时间都花在排错上。最常见的三类报错先说清楚:一是ValueError提示维度不一致,大概率是训练和测试特征数量不对齐,检查数据预处理步骤是否统一;二是模型收到包含NaN的数据报错,说明某个缺失值填充没跑到训练集;三是类别特征直接进了模型,sklearn的大部分算法不接受字符串,需要先做编码。

我的建议是别在脚本里裸奔地写一堆中间变量,尽早把流程封装成pipeline。Pipeline的好处是让每一步可复用可追踪,fit和transform的顺序也不容易搞错。如果你要反复调参,配合GridSearchCV会把整件事从“手工反复跑”变成“一次搜完”。这个习惯越早养成,后面做复杂项目的效率提升越明显。

5. 学习资料、期末复习与面试的实战策略

5.1 西瓜书、图解算法、官方文档怎么配合用

资料太多只会让人焦虑,我把口碑最好的三条线索的用法写清楚。

周志华《机器学习》(西瓜书)是教材级的,理论体系完整,适合当字典查。但我不建议零基础的人从第一章逐字啃到最后一章,第一次读只需要看每章开头“要解决什么问题”和算法流程部分,公式推导可以放到二刷三刷。与之互补的是《图解机器学习算法》,它用图把每个算法的步骤和直觉画出来了,适合在零碎时间建立整体感。当你有了一定代码基础,sklearn官方文档里的示例才是最实用的“字典”,每个算法的Examples都是可以直接改数据集跑的真代码。三者分工明确:西瓜书补原理、图解算法补直觉、官方文档补动手。把这套组合用起来,学习效率会比单刷一本书高出一大截。

5.2 期末复习:一份可以照做的速查框架

热词里出现“机器学习期末复习”“山东大学机器学习期末”“西电机器学习期末”,说明大家确实被复习折磨得不轻。这里给一份我辅导过不少学生的复习框架,按题型分四块。

  • 概念题:重点背监督/无监督/强化学习的区别、偏差与方差、过拟合与欠拟合、交叉验证的目的、什么是特征工程和特征选择。
  • 推导题:线性回归的最小二乘、逻辑回归的损失函数与梯度、朴素贝叶斯的后验概率计算、简单版本的SVM对偶推导,这是多数学校喜欢的拉分题。
  • 算法流程题:要求能默写ID3/C4.5/CART的构建流程、K-Means迭代步骤、KNN预测流程、层次聚类合并过程。
  • 代码应用题:一般给一个小数据集,让你手写或补全K-Means、梯度下降或决策树的核心循环。

时间紧的情况下,先把每个算法整理成“问题—思想—流程—超参数—优缺点”一条龙速查表,比刷十遍教材都管用。具体做法是把每个算法写在一张卡片上,左栏是问题描述,右栏是算法流程和关键公式,考前只看卡片,能默写流程才算过关。

5.3 面试中的算法考察:从手推到选择题

机器学习的算法面试和数据结构面试不一样。数据结构coding题,比如热词里的KMP、贪心、A*、堆排序,属于“编程基本功”范畴,主要看你会不会写代码;机器学习算法面更侧重三件事:能不能把算法原理讲清楚,有没有判断问题场景的能力,有没有踩过坑的实战手感。

常见问题我押几条:请手推逻辑回归的梯度更新公式;随机森林和GBDT有什么本质区别(一个并行投票、一个串行拟合残差);数据集类别严重不平衡你会怎么办(换评估指标、过采样/欠采样、改分类阈值);特征数值范围差异很大时为什么必须标准化;解释一下偏差-方差分解。这些问题没有标准答案可以背诵,但如果你真的跑过几个项目,回答起来自然有底气。我建议面试前自己对着镜子把每个机器学习算法当作“给完全不懂的人讲三分钟”,讲得出来才算真懂。

5.4 算法之外的新变量:偏见、模型检测与人工智能训练师

聊完学习和考试,还有三个正在变热的话题,值得从算法视角多看一眼。

第一个是人工智能偏见。很多人误以为“AI有立场”,真相往往是:数据本身有偏差,模型只是把数据里的偏见过滤并放大出来。比如用历史数据训练招聘筛选模型,历史上某类候选人的简历通过率本来就低,模型就会把这个规律学进去。技术侧能做的对策包括:在数据采集阶段保证样本均衡,在评估阶段加入公平性指标,上线前做专门的偏见审计。算法不是原罪,不经审视的数据才是。

第二个是机器学习检测。真实生产环境里,模型不是训练完就一劳永逸的。线上数据的分布会漂移,模型效果会随时间衰减,所以需要一套检测机制:监控输入特征的分布变化、监控预测置信度、定期用新标注数据重训模型。这也是为什么“模型上线”和“模型运维”被越来越多公司当成独立岗位。

第三个是人工智能训练师。这个职业已经有了明确的职业技能等级认定体系,核心工作是数据标注规范设计、数据质量控制、模型训练后的反馈优化。听上去偏“数据操作”,但真正的训练师非常需要理解机器学习算法基础——你不知道决策树怎么切分、不知道什么叫类别不平衡、不知道标注噪声如何影响模型,就根本做不好数据侧的决策。算法工程师和训练师,本质是同一枚硬币的两面,缺了谁模型都落不了地。

如果这篇“算法篇”只能留下一句话,我的体会是:学机器学习算法,最快路径不是从第一个公式推导到最后一个公式,而是先让脑子里有一张算法地图,然后动手把三五个经典模型跑通,再回头啃公式——到时你会发现,那些曾经让你头疼的下标符号突然有了具体含义。这篇就到这里,下一篇系列内容我会聊神经网络与深度学习,把今天这些算法放进真正的神经网络里重新看一遍。有同学在准备机器学习大作业不知道怎么选题的,也可以先拿这一章的电商复购案例改一改,换一批特征、换个业务目标,就是一个完整的新项目。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询