近年来,人工智能特别是深度学习的热潮,让不少人误以为机器学习是个“无所不能”的工具。一些初学者甚至以为,只要有数据和模型,就能解决所有问题。因此,现在科研界的潮流是把深度学习的概念大规模套用在任何学科,只要数据多,一篇论文塞进去3-5个模型,就可以了。但要说这些模型到底有没有必要,有没有解决科研问题?那就先不管了。这种套路本来是起源于欧美学术圈的恶习,没想到现在在国内学术圈大放异彩,也许是国产大模型也崛起了的原因吧。
可实际上,机器学习的正确理解和应用需要更深层次的洞察,而一些常见的误解可能导致错误的方向和不理想的结果。作为一名数据科学家,我今天想挑选一个有争议的误解,通过实例和 Python 代码演示,告诉大家,在使用数据科学的模型时,没有必要追求复杂的深度学习模型,简洁高效才是科研的本质追求。
误解:深度学习的结果好于机器学习
随着深度学习的大红大紫,很多人误以为算法越复杂越好,越能显得高大上。甚至有些论文,只要用了分类任务,就直接冠上“深度学习”的名号,仿佛别的方法就“不够高端”。
真相
深度学习是机器学习的一个子领域,适合处理非结构化数据(如图像、语音、文本)。然而,传统的机器学习算法(如随机森林、支持向量机)在许多任务中依然表现出色。特别是当数据量有限或特征明确时,传统算法往往更高效、更容易解释。盲目使用深度学习,不仅可能增加计算成本,还会导致不必要的复杂性。
Python 代码演示
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# 生成二分类数据集
X, y = make_classification(
n_samples=500, # 样本数量
n_features=10, # 特征数量
n_informative=8, # 有用特征数量
n_redundant=2, # 冗余特征数量
random_state=42, # 固定随机种子
class_sep=1.5 # 类别间隔
)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 1. 传统机器学习(随机森林)
rf_model = RandomForestClassifier(random_state=123)
rf_model.fit(X_train, y_train)
rf_pred = rf_model.predict(X_test)
rf_accuracy = accuracy_score(y_test, rf_pred)
print(f"随机森林准确率: {rf_accuracy:.2f}")
## 随机森林准确率: 0.93
# 2. 深度学习(多层感知机)
dl_model = MLPClassifier(hidden_layer_sizes=(8,), max_iter=500, random_state=123)
dl_model.fit(X_train, y_train)
MLPClassifier(hidden_layer_sizes=(8,), max_iter=500, random_state=123)
dl_pred = dl_model.predict(X_test)
dl_accuracy = accuracy_score(y_test, dl_pred)
print(f"深度学习准确率: {dl_accuracy:.2f}")
## 深度学习准确率: 0.94
通过以上代码,我们可以看到,对于小数据集,随机森林(机器学习)的结果与多层感知机(深度学习)的结果没有区别。盲目追求深度学习是不明智的。
小结
机器学习看似简单,背后却隐藏着许多陷阱。盲目追求热点技术可能让项目偏离正确的方向。大道至简,后续继续更新机器学习中的常见误解。欢迎持续关注!
感谢关注,你的支持是我不懈的动力!