连猫都没见过,它怎么认出了猫?一篇啃透机器学习核心算法

手机在兜里震了一下,相册刚把十二张猫的照片收进了「宠物」一栏。你没下任何指令,是它自己干的。

电脑其实看不见猫。它接到的只是一串像素的明暗数字:黑是 0,亮是 255。可训练过后,它就能从数字里认出一只从没见过的猫。这,就是机器学习。

很多教程一上来就甩公式、甩术语,把人劝退。本文换一种讲法:用「认猫」串起整条主线,从两种学习方式,一路讲到深度学习、聚类与降维。读完你应该能回答两个问题------机器到底在"学"什么 ,以及常见的那些算法,各自解决哪类问题

一、两种学习方式:监督 vs 无监督

所有机器学习任务,几乎都能塞进这两个筐。

1. 监督学习(Supervised Learning) 你手里有一份数据集:既有输入特征(如房子的面积、位置、房龄),也有目标变量(真实成交价)。目标变量的真实结果已知,在分类问题里通常叫标签(label) 。 训练时算法拿「带答案的题」去练,练完再预测新的、没见过的数据。

  • 预测房价:特征是面积/位置/房龄,目标是连续价格。
  • 判断猫狗:特征是耳朵大小/眼睛颜色等,目标是「猫」或「狗」的标签。

2. 无监督学习(Unsupervised Learning) 这里没有提前给的正确答案,算法得自己从数据里淘出潜在规律和结构。典型例子:邮箱自动把来信分成几个尚未命名的类别,你事后查看,再决定哪堆是「账单」、哪堆是「订阅」。这种「机器自己决定怎么分」的类别,也叫簇(cluster)

二、监督学习的两大分支:回归与分类

类型 预测目标 例子
回归(Regression) 连续的数值 根据房屋特征预测房价
分类(Classification) 离散的类别标签 判断邮件是「垃圾」还是「正常」

分类不一定只有两类,很多邮箱会划成「主要」「社交」「推广」「更新」等多个类别。

三、经典监督算法逐个看

1. 线性回归(Linear Regression)------算法之母 监督学习本质是找一个函数把输入映射到输出。线性回归找输入与输出间的线性关系,让「真实值」和「预测值」的误差平方和最小(最小二乘)。很多复杂算法(包括神经网络)都能看作这一思想的延伸。

2. 逻辑回归(Logistic Regression)------名字带"回归",干的是分类 它先对输入做线性计算,再丢进 sigmoid 函数压进 0~1,当作「属于某类的概率」。例如身高 180cm 的成年人,被预测为男性的概率是 80%(示例数据,原理为真)。

3. KNN(k-近邻)------简单到有点不好意思 来一个新数据点,看离它最近的 k 个邻居:回归取邻居目标值的平均,分类听邻居里最多的类别。它不假设数据服从固定方程(非参数)。但有个绕不开的问题------k 取几?

  • k 太小(如 1、2):训练集贴合得死死的,一遇新数据就栽,这叫过拟合(overfitting)
  • k 太大(如 1000):又钝得学不到规律,这叫欠拟合(underfitting)
  • 合适的 k 靠交叉验证来挑。

4. SVM(支持向量机)------画一条"最宽"的边界 核心是在不同类别间找决策边界,并让边界两侧间隔尽可能大。位于间隔边缘的关键数据点叫支持向量(support vectors) 。它的绝活是核技巧(kernel trick) :不真的把特征两两组合算一遍,也能把数据映射到更复杂空间,画出弯弯曲曲的非线性分界。常用核:线性、多项式、RBF、sigmoid。

5. 朴素贝叶斯(Naive Bayes)------拦垃圾邮件的老将 用一批垃圾/非垃圾邮件训练,统计每个词在两类里出现的次数;新邮件来了,根据包含的词算它更可能归哪边。它大胆假设「在类别已定前提下各词相互独立」------粗得离谱,所以叫「朴素」。但算得飞快,文本分类真管用。

6. 决策树与集成学习------一棵太嫩,一群就凶 决策树是一串「是或否」的问题,把数据划成更纯的组。单棵太嫩,组合起来就强,这叫集成学习(ensemble)

  • Bagging :有放回抽样得多个子集,分别训练再投票。代表是随机森林(Random Forest)
  • Boosting :按顺序训练,每棵新树修正前一棵的错误。代表有 AdaBoost、梯度提升、XGBoost。精度常更高,但更易过拟合、须串行、更慢。

四、神经网络与深度学习:让机器自己"长"出特征

要理解神经网络,先回到逻辑回归:识别手写数字 0--9,特征是像素亮度,目标是判断是几。难点在于,不同的人写「1」并不完全相同------但它们有共同特征:都含一条占主要位置的竖线。

最早的办法是人工特征工程 :人手工去量「有没有竖线、横线、圆圈」再喂给模型。神经网络的厉害之处在于:不需要你逐个定义中间特征,它能在训练中自动学习 有用的表示。做法是在输入和输出之间加隐藏层(hidden layer)

  • 没有隐藏层 → 单层感知机,本质是个线性分类器。
  • 加了隐藏层 → 输入先在中间经过一串转换,这些中间结果就是「网络自己学出来的新特征」。

隐藏层越来越多,网络就能逐级组合出更复杂特征------这正是深度学习(Deep Learning) 的基本思路。我们通常并不清楚每个隐藏特征代表什么,只知道它们能帮模型预测得更准。

想动手感受一下?几行代码就能跑通线性回归:

ini 复制代码
from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)      # 用"带答案的题"去练
pred = model.predict(X_test)     # 预测没见过的数据

五、回到无监督:聚类与降维

1. 聚类(Clustering)------和分类不是一回事

分类(Classification) 聚类(Clustering)
是否知道类别 提前知道要分几类,且有带标签数据 完全不知道有几类、没有标签
做法 学一个映射函数 从数据结构里把未知的群"揪"出来

最著名的是 k-means,k 是超参数,表示想找几个簇。此外还有不需预先指定簇数的层次聚类、能发现任意形状簇的 DBSCAN。

2. 降维(Dimensionality Reduction)------少而精 降维就是减少特征数量、尽量保住重要信息。典型算法是 PCA(主成分分析) :找数据中「变化最猛」的方向当新特征,贡献小的就丢掉。比如鱼的体长和体高高度相关,留两个不如合成一个「形状」特征。

六、核心观点:机器"学"的到底是什么

回到开头那张自动归类「宠物」的相册。屏幕背后,没有谁真的爱猫、懂猫。所谓机器学习,不是让机器「理解」世界,而是让它在数字里找规律、自动长出能帮助预测的中间特征。监督学习靠标签指路,无监督学习自己淘结构;浅层模型靠人定特征,深层模型自己学特征。规律是冰冷的,特征是训出来的。

相关推荐
武子康1 小时前
CLAUDE.md 越写越长,哪些规则该放到子目录?
人工智能·llm·agent
米软科技1 小时前
高校信息化团队实践:利用AI低代码缩短零散业务交付周期
人工智能·科技·低代码·汽车·制造
径硕科技JINGdigital1 小时前
Amazon Bedrock能够为企业生成式AI应用提供哪些安全与合规支持?
大数据·人工智能
vortex51 小时前
Claude Code 高级使用教程:从 Worktree 并行到 Dynamic Workflows
人工智能
lie..1 小时前
30天从零开始学AI应用开发(Day 4):Python 极速入门(上):够用就行,别啃书
人工智能·python·大模型
勤劳X码农1 小时前
2026年TTS工具技术测评:7款方案实测,从免费额度到API集成全解析
人工智能·音视频·实时音视频
正经教主1 小时前
【FDE系列】阶段2:Day 38:Shell 脚本 — 把命令串起来自动跑
人工智能·python·fde
IamZJT_1 小时前
02|接入飞书:让 Demo 接收客户话题并回复查询结果
人工智能
高洁011 小时前
AI智能体:会自己张罗事的软件实体
人工智能·深度学习·transformer·知识图谱·tornado