第二章 机器学习基础回顾:监督学习、无监督学习、强化学习在环境领域的应用场景
各位同学好,我是老张。今天咱们聊聊机器学习的三大流派——监督学习、无监督学习、强化学习。说实话,很多教材把这三种方法讲得像三座孤岛,但在我做环境项目的这些年里,它们经常是混着用的。
你想想看,环境数据有多复杂?有带标签的(比如水质达标/不达标),有没标签的(比如一堆传感器读数),还有需要动态决策的(比如污水处理加药量)。这三种学习范式,正好对应了这三种需求。
2.1 监督学习:有老师带着学
监督学习,说白了就是给机器一堆「题目+答案」,让它学会预测。我在环境领域用得最多的就是它。
核心逻辑:输入特征 X → 模型 → 输出预测 Y,然后用真实 Y 去纠正模型。
2.1.1 回归任务:预测连续值
举个例子。我做过一个河流溶解氧预测项目。输入是水温、pH、氨氮浓度、流速,输出是溶解氧的数值。这就是典型的回归问题。
# 一个简单的随机森林回归示例
from sklearn.ensemble import RandomForestRegressor
# 特征:水温、pH、氨氮、流速
X = [[22.5, 7.2, 0.8, 0.3],
[18.3, 7.8, 0.5, 0.5],
[25.1, 6.9, 1.2, 0.2]]
# 目标:溶解氧 (mg/L)
y = [6.8, 7.5, 5.9]
model = RandomForestRegressor(n_estimators=100)
model.fit(X, y)
我个人习惯,拿到数据先跑个随机森林看看特征重要性。有一次在预测PM2.5时,发现「风速」的重要性远高于「湿度」,这跟常识有点出入。后来一查,原来是那个监测站周边有工地,风速大反而扬尘多。你看,模型帮你发现了数据里的猫腻。
2.1.2 分类任务:判断类别
分类更常见。比如判断水质是否达标、土壤是否污染、卫星图像里有没有违规排放。
| 应用场景 | 输入特征 | 输出类别 | 常用算法 |
|---|---|---|---|
| 水质预警 | pH、浊度、COD、氨氮 | 达标/超标 | 逻辑回归、XGBoost |
| 土壤污染识别 | 重金属浓度、有机质含量 | 污染等级 I/II/III | 随机森林、SVM |
| 噪声源分类 | 频谱特征、时间特征 | 交通/工业/生活噪声 | KNN、CNN |
避坑指南:我曾经在做一个土壤分类项目时,发现模型准确率高达98%。高兴没两天,发现是因为数据严重不平衡——98%的样本都是「无污染」。嗯,这里要注意,分类问题一定要看混淆矩阵,别被准确率骗了。
2.2 无监督学习:自己找规律
无监督学习没有标签,让机器自己发现数据的结构。为什么环境领域需要它?因为很多时候我们根本不知道数据里有什么模式。
2.2.1 聚类分析:物以类聚
我记得有个项目,要分析某工业园区的污染源。我们有几十个监测点的数据,但不知道这些点属于哪类污染源。用K-means一聚类,嘿,自动分成了三组:一组是化工排放特征,一组是燃煤特征,一组是扬尘特征。
from sklearn.cluster import KMeans
import numpy as np
# 假设有10个监测点,每个点有5种污染物浓度
data = np.random.rand(10, 5)
kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(data)
print("聚类结果:", labels)
# 输出:[0 1 2 0 1 2 0 1 2 0]
# 每个数字代表一类污染源
你想想看,如果没有无监督学习,我们只能凭经验去猜这些监测点属于哪类污染源。但数据自己会说话。
2.2.2 降维:化繁为简
环境数据经常是高维的。一个水质监测站可能有几十个传感器,但很多指标是相关的。PCA(主成分分析)是我常用的降维工具。
说实话,降维不只是为了可视化。有一次我做地下水水质评价,原始数据有30个指标。用PCA降到5个主成分后,模型效果反而更好了。为什么?因为去掉了噪声和冗余信息。
实用技巧:用PCA之前一定要标准化数据。我见过有人直接拿原始数据跑PCA,结果第一主成分完全被「总硬度」这个量级大的指标主导了,失去了意义。
2.3 强化学习:在试错中学习
强化学习跟前面两种完全不同。它没有现成的数据,而是让智能体跟环境交互,通过奖励信号学习最优策略。
在环境领域,强化学习的应用相对前沿,但潜力巨大。
2.3.1 污水处理过程控制
我参与过一个项目,用强化学习控制污水处理厂的曝气量。传统方法是PID控制,但水质波动大时效果不好。强化学习智能体通过不断调整曝气量,目标是「在达标的前提下能耗最低」。
# 伪代码:强化学习控制曝气
状态 = [进水COD, 进水氨氮, 溶解氧, 出水要求]
动作 = 调整曝气量 (0.5, 1.0, 1.5, 2.0) # 单位:m³/h
奖励 = 达标得分 - 能耗惩罚
# 智能体通过Q-learning学习最优策略
for episode in range(1000):
当前状态 = 环境.reset()
while not 结束:
动作 = 智能体.选择动作(当前状态)
下一状态, 奖励, 结束 = 环境.执行(动作)
智能体.更新(当前状态, 动作, 奖励, 下一状态)
嗯,这里要注意,强化学习在环境领域的落地难点在于「模拟环境」。你不能让智能体在真实污水厂里瞎试,万一搞砸了怎么办?所以通常先建一个数字孪生环境,在里面训练好了再部署。
2.3.2 其他应用场景
- 智能灌溉:根据土壤湿度、天气预报,决定何时浇多少水。目标是节水且作物健康。
- 垃圾焚烧优化:控制炉温、进料速度,让燃烧更充分,减少二噁英排放。
- 生态调度:水库放水策略,兼顾发电、防洪、生态流量。
警告:强化学习不是万能药。如果问题可以用监督学习解决,就别硬上强化学习。我曾经见过一个团队用强化学习做水质预测,折腾了三个月,效果还不如一个简单的LSTM。选对工具比用好工具更重要。
2.4 三种学习范式的对比与选择
说了这么多,到底什么时候用哪种?我画了一张图,帮你理清思路。
我个人经验是:80%的环境问题用监督学习就能解决。剩下15%用无监督学习做探索性分析。强化学习只占5%,但一旦用对地方,效果惊人。
我的建议:刚入门时,先把监督学习玩熟。逻辑回归、决策树、随机森林,这三个够你应付大部分环境预测问题。别一上来就整深度学习,数据量不够的话,效果还不如线性回归。
好了,这一章就到这里。三种学习范式各有各的脾气,关键是要根据你的数据情况和业务需求来选。下一章我们开始动手,用真实的环境数据跑一个完整的项目。
公众号:蓝海资料掘金营,微信deep3321