中国学生往往在学术道路上走得小心翼翼,不管是在国内读博还是国外读博,对导师的话总是奉若神明,仿佛踩在随时会裂开的薄冰上。他们看着国外学生在课堂上拍着桌子,语气坦然地对导师说:“你说的不对”那种自信和松弛仿佛一种奢侈品,让人心生羡慕又带着不解。中国学生的基础素养,动手能力和创造性并不比外国学生差,但为什么总是在课题组承担最辛苦,最艰难的研究方向?与很多欧洲,甚至是非洲学生相比,东亚背景的学生,为什么总是陷在“服从”的模式里?是文化的敬畏,是教育的规训,还是内心深处对权威的无法摆脱?在国内容易成功的“人情世故”,在国外反而是束缚你自由发展的枷锁。中国留学生,你有资格更自信!
那么在机器学习领域,要想更自信的展示结果,神经网络是一个不错的选择。神经网络是机器学习领域的关键方法之一,尤其在处理非线性问题时展现了强大的能力。今天的更新将带您从基础了解神经网络的概念,实现一个完整的建模与可视化流程。
什么是神经网络?
神经网络是一种受生物神经系统启发的计算模型,由多层人工神经元组成,包括输入层、隐藏层和输出层。其关键功能是通过调整连接权重和偏置,以最小化模型预测误差。下图展示了一个简单的神经网络结构:
graph TD
A[输入层] --> B1[隐藏层1]
A --> B2[隐藏层1]
B1 --> C[输出层]
B2 --> C[输出层]
常用激活函数包括 ReLU、Sigmoid 和 Tanh,而优化器如梯度下降(Gradient Descent)负责模型的权重调整。
神经网络的科研应用
生物信息学:预测蛋白质结构和基因表达模式。
医学影像:如癌症病灶检测、MRI图像分类。
经济预测:时间序列预测,如股票市场趋势分析。
自然语言处理:情感分析、机器翻译。
R 实现神经网络建模与可视化
我们以一个回归问题为例,使用 R 的 neuralnet
包创建并训练一个神经网络模型,并通过优化的可视化来展示实际值与预测值的对比关系。
代码实现:
# 加载所需包
library(neuralnet)
library(ggplot2)
library(scales)
# 生成示例数据
set.seed(123)
data <- data.frame(
x1 = runif(100, 0, 10),
x2 = runif(100, 0, 10)
)
data$y <- data$x1^2 + data$x2^2 + rnorm(100, sd = 5)
# 数据标准化
normalize <- function(x) (x - min(x)) / (max(x) - min(x))
data_normalized <- as.data.frame(lapply(data, normalize))
# 数据划分
train_data <- data_normalized[1:80, ]
test_data <- data_normalized[81:100, ]
# 构建神经网络模型
nn_model <- neuralnet(
y ~ x1 + x2,
data = train_data,
hidden = c(5, 3), # 两层隐藏层,分别有5和3个神经元
linear.output = TRUE,
lifesign = "minimal"
)
# 可视化神经网络结构
plot(nn_model)
# 模型预测
predictions <- compute(nn_model, test_data[, c("x1", "x2")])$net.result
results <- cbind(test_data["y"], Predicted = predictions)
# 反标准化(将预测值恢复原始范围)
results$Actual <- test_data$y * (max(data$y) - min(data$y)) + min(data$y)
results$Predicted <- results$Predicted * (max(data$y) - min(data$y)) + min(data$y)
# 高质量可视化
ggplot(results, aes(x = Actual, y = Predicted)) +
geom_point(color = "#1b9e77", size = 2.5, alpha = 0.8) +
geom_smooth(method = "lm", se = FALSE, color = "#d95f02", linetype = "dashed", size = 1) +
scale_x_continuous(name = "实际值 (Actual)", breaks = pretty_breaks(n = 5)) +
scale_y_continuous(name = "预测值 (Predicted)", breaks = pretty_breaks(n = 5)) +
labs(
title = "神经网络预测:实际值与预测值对比",
subtitle = "可视化展示回归效果",
caption = "数据来源:模拟生成 | 图表由 ggplot2 制作"
) +
theme_classic(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18, hjust = 0.5),
plot.subtitle = element_text(size = 14, hjust = 0.5),
axis.title = element_text(size = 14, face = "bold"),
axis.text = element_text(size = 12),
plot.caption = element_text(size = 10, hjust = 1, face = "italic")
)
通过训练的神经网络模型,我们得到了实际值与预测值之间的良好拟合效果,同时通过优化的可视化图表展示了回归结果的高质量信息表达。这种结合神经网络建模与可视化的方法,有助于提高科研结果的可解释性。
小结
本文通过 R 的 neuralnet
包实现了一个简单的神经网络回归模型,并展示了预测结果的高质量可视化。对于科研工作者来说,R 提供了强大的神经网络建模与可视化支持,在领域如医学、经济学、生物信息学中均能发挥重要作用。如果你希望获得更多可复制的R、Python代码,欢迎点击下方名片,关注我们!
感谢关注,你的支持是我不懈的动力!