关键词:机器学习、深度学习、监督学习、无监督学习、神经网络、SVM、决策树、聚类、PCA、算法入门、线性回归、逻辑回归、KNN、朴素贝叶斯
手机相册会自动把猫的照片收进「宠物」一栏------计算机没看过猫,只接收像素明暗数字(黑 0、亮 255),训练后却认出了没见过的猫。这就是机器学习。
本文不只讲概念,每个算法都配一个可落地的示例,建议边读边在纸上算一遍,印象会深很多。(文中数值均为便于理解的虚构示例,非真实统计。)
一、两种学习方式:监督 vs 无监督
- 监督学习(Supervised Learning) :数据带标签(特征 + 目标),练完预测新数据。
- 示例:已知 5 套房子的「面积 / 房龄 / 成交价」,用前 4 套训练,第 5 套只给面积房龄,让模型预测成交价。
- 无监督学习(Unsupervised Learning) :无标签,算法自淘结构。
- 示例:把 1000 张动物图丢给算法,它没被告知"这是猫/那是狗",却按毛色、体型自动分成两堆------你事后才命名。这种机器自己定的类别叫簇(cluster)。
一句话区分:监督学习"有人打分",无监督学习"自己分组"。
二、回归与分类:监督的两大分支
区别只在预测目标的类型:
| 任务 | 预测目标 | 示例 |
|---|---|---|
| 回归(Regression) | 连续数值 | 面积 90㎡、房龄 5 年 → 预测房价 320 万 |
| 分类(Classification) | 离散标签 | 邮件含"免费""中奖" → 判为"垃圾邮件" |
分类也能是多类:邮箱常分成「主要 / 社交 / 推广 / 更新」。
三、六大经典监督算法(逐个配示例)
1. 线性回归(Linear Regression)------算法之母
目标是找一条直线 y = w·x + b,让"真实值 − 预测值"的平方和最小(最小二乘)。
- 示例:收集 4 个人的身高(cm)与鞋码:
| 身高 x | 鞋码 y |
|---|---|
| 160 | 38 |
| 170 | 40 |
| 180 | 42 |
| 190 | 44 |
显然近似 鞋码 ≈ 0.2×身高 − 4。训练后输入身高 175,模型预测鞋码约 39。很多复杂模型(含神经网络)都能看作这一思想的延伸。
2. 逻辑回归(Logistic Regression)------名字带"回归",干的是分类
先对输入做线性计算 z = w·x + b,再丢进 sigmoid:p = 1 / (1 + e^(-z)),把结果压进 0~1 当概率。
- 示例 :判断是否点击广告。
z = 2×年龄因子 + 1×活跃度 − 3。某用户算出z = 1.5,则p = 1/(1+e^-1.5) ≈ 0.82,即"点击概率 82%",超过 0.5 阈值就判为"会点击"。
3. KNN(k-近邻)------看邻居投票
来一个新点,找最近的 k 个邻居:回归取邻居目标值的平均,分类听邻居里最多的类别。
- 示例:判断新水果是"橙"还是"苹果"。已知 6 个样本(横轴甜度、纵轴脆度):橙(甜高、脆低)4 个,苹果(甜低、脆高)2 个。新水果坐标离它最近的 3 个邻居里有 2 个橙、1 个苹果 → 判为"橙"。
- k 怎么选 :k=1 死磕训练集易过拟合;k=1000 太钝易欠拟合;常用交叉验证在中间挑。
4. SVM(支持向量机)------画一条"最宽"的边界
在不同类别间找决策边界,并让边界两侧间隔尽可能大 ;落在间隔边缘的关键点叫支持向量。
- 示例 :二维平面上"猫"(圆形)和"狗"(方形)两类点,SVM 画一条直线把两边分开,并尽量拉宽到两边最近的点。若数据交叉分不开(线性不可分),用**核技巧(kernel trick)**把点映射到更高维空间------比如 RBF 核能把"弯月形"两类卷成可线性分开,无需真的两两组合算特征。
5. 朴素贝叶斯(Naive Bayes)------拦垃圾邮件的老将
统计每个词在"垃圾/正常"两类里出现的频率,新邮件按包含的词算更可能归哪边;它假设"词与词独立"(朴素但快)。
- 示例 :训练集 100 封垃圾、100 封正常。词"免费"在垃圾里出现 60 次、正常里 5 次;词"报告"在垃圾里 10 次、正常里 40 次。新邮件同时含"免费"和"报告":
- 偏垃圾的得分 ∝ (60/100)×(10/100) = 0.06
- 偏正常的得分 ∝ (5/100)×(40/100) = 0.02
- 0.06 > 0.02 → 判为垃圾邮件。(真实实现会加平滑与对数,避免乘零,原理一致。)
6. 决策树与集成学习------一棵太嫩,一群就凶
决策树是一串"是或否"问题,把数据划成更纯的组。
- 示例(单棵树) :判断是否批准贷款。
- Q1:月收入 > 1 万?否 → 拒绝(叶子纯)。
- Q2(是):负债比 > 50%?是 → 拒绝;否 → 批准。
每切一刀都让子树"更纯"(同一类更多)。
- 集成 :单棵易过拟合,组合更强。
- 随机森林(Bagging) :对数据有放回抽样训练多棵树,各自预测后多数投票。每棵树还随机只看部分特征,降低过拟合。
- XGBoost(Boosting) :按顺序训练,每棵新树专门修正前一棵的残差,叠成强模型;精度常更高,但须串行、更易过拟合。
四、神经网络与深度学习:让机器自己"长"出特征
逻辑回归只能画直线;在输入和输出之间加隐藏层(hidden layer) ,网络便在训练中自动学出中间特征 ,层数越深组合越复杂,即深度学习。
- 示例:识别手写数字"1"。不同人写的"1"像素不完全一致,但有共同特征------一条占主位的竖线。加隐藏层后,当相邻多个像素同时亮,网络可能逐渐学到一种"类似竖线"的中间特征(你从没命名过它,是训练长出来的)。层数加深后,某些特征或许对应"图中是否有人脸"。
- 动手跑通(sklearn 版线性回归,真实可用):
python
from sklearn.linear_model import LinearRegression
# X: 特征(如面积), y: 目标(如房价),以下为示意数据
X_train = [[60], [80], [100], [120]]
y_train = [180, 240, 300, 360]
model = LinearRegression()
model.fit(X_train, y_train) # 用"带答案的题"去练
print(model.predict([[90]])) # 预测 90㎡ 的房价
我们不必解释每个隐藏特征是什么,只要它提升预测即可------这正是深度学习的"黑箱"与魅力。
五、聚类与降维(无监督)
聚类(Clustering)------和分类不是一回事
| 分类(Classification) | 聚类(Clustering) | |
|---|---|---|
| 是否知道类别 | 提前知道几类 + 有标签 | 完全不知几类、无标签 |
| 做法 | 学映射函数 | 从结构里把未知群"揪"出 |
- k-means 示例 :平面上 6 个点,设 k=2。
- 随机选 2 个初始中心;
- 每个点归到离它近的中心,形成两堆;
- 重新算每堆的均值当新中心;
- 重复 2~3 直到中心不再动。
最终两堆可能自然对应"左上簇 / 右下簇"。此外还有不需预设簇数的层次聚类 、能发现任意形状簇的DBSCAN。
降维(Dimensionality Reduction)------少而精
减少特征数、尽量保住重要信息。**PCA(主成分分析)**取"变化最猛"的方向当主成分,丢小贡献维度。
- 示例:鱼的"体长"和"体高"高度相关(成正比)。原本 2 个特征,PCA 可合成 1 个"形状"主成分,丢掉贡献很小的第二主成分------信息基本不丢,后续模型更快更稳。降维也常作监督学习前的预处理。
六、核心结论
机器不「理解」世界,只在数字里找规律、自动长特征。监督靠标签指路,无监督自己淘结构;浅层模型(线性回归、KNN、朴素贝叶斯)靠人定特征,深层模型(神经网络)自己学特征。规律是冰冷的,特征是训出来的。