机器学习说到底,不就三件事:
-
预测一个数 ------ 回归
-
判断归属哪个类 ------ 分类
-
自动把数据分组 ------ 聚类
别背术语,别管定义,先看问题怎么解决。
一、回归(Regression)
干嘛的?
模型输出一个连续数值。你丢个样本进去,它告诉你大概是多少。
应用场景:
-
房价预测
-
股票波动估计
-
广告点击率预估
-
医疗中的风险评分
代码风格示例:
python
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
注意点:
-
特征别有太强的共线性(会影响权重估计)
-
数据别有太多离群值(容易拉偏模型)
模型选择建议:
-
数据线性关系明显 → 线性回归
-
数据维度不大但噪音多 → 决策树回归
-
数据量大 / 精度要求高 → XGBoost、LightGBM
-
想搞深一点 / 多变量复杂依赖 → 神经网络回归(Keras / PyTorch)
二、分类(Classification)
干嘛的?
模型判断输入属于哪个"类",就像做选择题一样,A、B、C三选一。
应用场景:
-
是否信用违约(0/1)
-
邮件是否垃圾
-
图像识别(猫狗车人)
-
医疗诊断分类
代码风格示例:
python
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
注意点:
-
类别不均衡要处理,比如加权或采样
-
二分类别做One-Hot?不用,直接0/1即可
-
多分类别需换 loss(如 softmax)
模型选择建议:
-
简单快速:逻辑回归
-
可解释性强:决策树 / RandomForest
-
对精度要求高:XGBoost / CatBoost
-
有深度需求:CNN / Transformer
三、聚类(Clustering)
干嘛的?
模型自己发现数据结构,把相似的放一堆,没标签也能干。
应用场景:
-
用户分群
-
异常检测(异常就是被分到边角落的那类)
-
文本聚类(比如舆情分析)
代码风格示例:
python
from sklearn.cluster import KMeans
model = KMeans(n_clusters=3)
model.fit(X)
labels = model.labels_
注意点:
-
特征归一化很重要(不然按维度权重大错特错)
-
K 值别瞎定,用肘部法则或者 silhouette score 找
模型选择建议:
-
快速尝试:KMeans(80%的场景够用)
-
空间不规则:DBSCAN
-
层级结构:Agglomerative Clustering
工程建议(务实路线)
任务 | 类型 | 模型建议 |
---|---|---|
价格预测 | 回归 | XGBoost / LGBM |
风控审核 | 分类 | Logistic / RF / XGB |
用户打标签 | 聚类 | KMeans / DBSCAN |
图片识别 | 分类 | CNN |
文本相似度分类 | 分类 | BERT / SVM |
别学偏了:
学机器学习不是看你会几个模型,而是看你知道什么时候用哪个模型,用什么数据喂进去。
下一篇我接着写《模型评估指标怎么选?怎么解释?》,这一步你要是乱选,模型再准也白搭。