R语言深度学习-6-模型优化与调试

本教程参考《RDeepLearningEssential》

这是本专栏的最后一篇文章,一路走来,大家应该都可以独立的建立一个自己的神经网络进行特征学习和预测了吧!


6.1 缺失值处理

 在我们使用大量数据进行建模的时候,缺失值对模型表现的影响非常大:

(1)对模型训练的影响:在训练神经网络时,如果输入数据中存在缺失值,那么这些值可能不会被模型正确地学习或解释。因为神经网络通常要求输入数据是完整且一致的,缺失值可能导致模型无法学习到数据的完整分布,从而影响其预测能力。此外,一些优化算法(如梯度下降)在计算过程中可能会遇到不稳定的数值,进而影响到模型参数更新的准确性。
(2)对模型评估的影响:在模型评估阶段,缺失值同样会带来问题。例如,在评估模型性能时使用诸如准确率等指标时,若测试集存在缺失值,则可能导致评估结果的偏差,使得模型的实际性能被高估或低估。
(3)对模型泛化能力的影响:缺失值的存在还可能降低模型的泛化能力,即模型在新数据上的应用效果。这是因为在实际应用中,新数据也可能会出现缺失值,如果模型没有很好地处理这种情况,那么其在实际应用中的表现可能会受到影响。

6.1.1 gridExtra和mgcv包的安装

install.packages('gridExtra')
install.packages('mgcv')

`gridExtra`是一个用于扩展`grid`图形系统的包,这个包特别适用于创建复杂的布局和组合多个图形对象。`mgcv`是“混合模型广义可加模型”的缩写,它是专门设计用来拟合广义可加模型(GAMs)及其扩展形式的包。广义可加模型是一种统计模型,它允许响应变量与一个或多个预测变量之间存在非线性关系。通过使用平滑函数,`mgcv`能够灵活地建模这种非线性关系,并且可以处理分类变量和连续变量的交互作用。这使得`mgcv`非常适合于那些数据中存在复杂关系的情况,比如生态学、流行病学和经济学等领域的研究。

6.1.2 使用H2O处理缺失数据

library('h2o')
cl <- h2o.init(max_mem_size = "20G",nthreads = 10,ip = "127.0.0.1", port = 54321)options(width = 70, digits = 2)

我们使用鸢尾花iris数据集进行演示,H2O包里有处理缺失值的函数,比如使用均值、中位数或者众数进行填补。 我们这里使用随机森林的机器学习方法来进行填补:

## random forest imputation
d.imputed <- d
## prediction model
for (v in missing.cols) {tmp.m <- h2o.randomForest(x = setdiff(colnames(h2o.dmiss), v),y = v,training_frame = h2o.dmiss)yhat <- as.data.frame(h2o.predict(tmp.m, newdata = h2o.dmiss))d.imputed[[v]] <- ifelse(is.na(d.imputed[[v]]), yhat$predict, d.imputed[[v]])
}

 我们通过散点图看一下效果:

一般来说,我们会发现用均值作为补充,会对离群值或者整体数据的极值产生影响。

6.2 低准确度模型解决 

 我们在建模过程中,非常有挑战性,也是最重要的,是选取超参数,如上之前教程中提到的:R语言深度学习-4-识别异常数据(无监督学习/自动编码器)-CSDN博客

而在实际运用中,我们很少能获得一个全局最优,我们来看一些方法:

6.2.1 网格搜索

我们除了使用手动试错的方法外,我们还可以使用网格搜索或者随机搜索:我们使用expand.grid生成随机的组合。

expand.grid(layers = c(1, 2, 4),epochs = c(50, 100),l1 = c(.001, .01, .05))

但是如果我们选取的超参数有十多个,那就是n的十多次方,如果分别训练的化,可能需要一两天才能完成。

6.2.2 随机搜索 

我们也可以使用随机搜索的方式进行超参数选择,下列代码画出了两个 beta 分布密度。通过在这些分布中抽样,我们能确保搜索,尽管是随机的,重点在于输入变量小比例的丢弃,而且在 0~0.50 的范围内对隐藏神经元来说,有一种趋势是从更接近 0.50 的值当中过抽样(oversample)

par(mfrow = c(2, 1))
plot(seq(0, .5, by = .001),dbeta(seq(0, .5, by = .001), 1, 12),type = "l", xlab = "x", ylab = "Density",main = "Density of a beta(1, 12)")
plot(seq(0, 1, by = .001)/2,dbeta(seq(0, 1, by = .001), 1.5, 1),type = "l", xlab = "x", ylab = "Density",main = "Density of a beta(1.5, 1) / 2")

 6.3 小结

原书中有更深入的讲解与例子,但是我觉得确实非常的难,不如在自己运用的过程中去体会运用。六篇教程学习完,应该是能轻松建立一个神经网络进行预测训练,如果还有其他问题,欢迎大家一起交流讨论,

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定位及解决OOM

一、定义 内存溢出&#xff1a;OutOfMemoryError&#xff0c;是指因内存不够&#xff0c;导致操作新对象没有剩余空间。会导致频繁fullgc出现STW从而导致性能下降。 内存泄漏&#xff1a;指用malloc或new申请了一块内存&#xff0c;但是没有通过free或delete将内存释放&#…

30.HarmonyOS App(JAVA)鸿蒙系统app多线程任务分发器

HarmonyOS App(JAVA)多线程任务分发器 打印时间&#xff0c;记录到编辑框textfield信息显示 同步分发&#xff0c;异步分发&#xff0c;异步延迟分发&#xff0c;分组任务分发&#xff0c;屏蔽任务分发&#xff0c;多次任务分发 参考代码注释 场景介绍 如果应用的业务逻辑比…

LLM之Alpaca:深入了解大模型Alpaca

博客首发地址&#xff1a;LLM之Alpaca&#xff1a;深入了解大模型Alpaca - 知乎 官方链接&#xff1a;https://crfm.stanford.edu/2023/03/13/alpaca.html官方Git&#xff1a;tatsu-lab/stanford_alpaca官方模型&#xff1a;https://huggingface.co/tatsu-lab/alpaca-7b-wdiff…

Android Studio 打包 Maker MV apk 详细步骤

一.使用RPG Make MV 部署项目&#xff0c;获取项目文件夹 这步基本都不会有问题&#xff1a; 二.安装Android Studio 安装过程参考教材就行了&#xff1a; https://blog.csdn.net/m0_62491877/article/details/126832118 但是有的版本面板没有Android的选项&#xff08;勾…

龙芯新世界系统(安同AOCS OS)安装Cinnamon桌面最新版6.0.4

龙芯的新世界系统安同AOCS OS是十分优秀的操作系统&#xff0c;处于纯社区方式运行&#xff0c;她的各组件更新得很及时&#xff0c;很多组件都处于最新的状态&#xff0c;给我们安装使用最新的开源软件提供了很好的基础。由于本人一直使用Cinnamon桌面环境&#xff0c;各方面都…

LM2903BIDR比较器芯片中文资料规格书PDF数据手册参数引脚图功能封装尺寸图

产品概述&#xff1a; M393B 和 LM2903B 器件是业界通用 LM393 和 LM2903 比较器系列的下一代版本。下一代 B 版本比较器具有更低的失调电压、更高的电源电压能力、更低的电源电流、更低的输入偏置电流和更低的传播延迟&#xff0c;并通过专用 ESD 钳位提高了 2kV ESD 性能和输…

【教学类-44-07】20240318 0-9数字描字帖 A4横版整页(宋体、黑体、文鼎虚线体、print dashed 德彪行书行楷)

背景需求: 前文制作了三种字体的A4横版数字描字帖 【教学类-44-06】20240318 0-9数字描字帖 A4横版整页&#xff08;宋体、黑体、文鼎虚线体&#xff09;-CSDN博客【教学类-44-06】20240318 0-9数字描字帖 A4横版整页&#xff08;宋体、黑体、文鼎虚线体&#xff09;https://…

stable diffusion webui 搭建和初步使用

官方repo: GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI 关于stable-diffusion的介绍&#xff1a;Stable Diffusion&#xff5c;图解稳定扩散原理 - 知乎 一、环境搭建和启动 准备在容器里面搞一下 以 ubuntu22.04 为基础镜像&#xff0c;新建…

UnityShader(十六)凹凸映射

前言&#xff1a; 纹理的一种常见应用就是凹凸映射&#xff08;bump mapping&#xff09;。凹凸映射目的就是用一张纹理图来修改模型表面的法线&#xff0c;让模型看起来更加细节&#xff0c;这种方法不会改变模型原本的顶点位置&#xff08;也就是不会修改模型的形状&#xf…

数据结构之顺序存储-顺序表的基本操作c/c++(创建、初始化、赋值、插入、删除、查询、替换、输出)

学习参考博文&#xff1a;http://t.csdnimg.cn/Qi8DD 学习总结&#xff0c;同时更正原博主在顺序表中插入元素的错误。 数据结构顺序表——基本代码实现&#xff08;使用工具&#xff1a;VS2022&#xff09;&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <stdi…

gitlab cicd问题整理

1、docker设置数据目录&#xff1a; 原数据目录磁盘空间不足&#xff0c;需要更换目录&#xff1a; /etc/docker/daemon.json //写入/etc/docker/daemon.json {"data-root": "/data/docker" } 2、Dockerfile中ADD指令不生效 因为要ADD的文件被.docker…

【计算机网络】什么是http?

​ 目录 前言 1. 什么是HTTP协议&#xff1f; 2. 为什么使用HTTP协议&#xff1f; 3. HTTP协议通信过程 4. 什么是url&#xff1f; 5. HTTP报文 5.1 请求报文 5.2 响应报文 6. HTTP请求方式 7. HTTP头部字段 8. HTTP状态码 9. 连接管理 长连接与短连接 管线化连接…

Gin 框架中实现路由的几种方式介绍

本文将为您详细讲解 Gin 框架中实现路由的几种方式&#xff0c;并给出相应的简单例子。Gin 是一个高性能的 Web 框架&#xff0c;用于构建后端服务。在 Web 应用程序中&#xff0c;路由是一种将客户端请求映射到特定处理程序的方法。以下是几种常见的路由实现方式&#xff1a; …

JavaScript | 检测文档在垂直方向已滚动的像素值用pageYOffset在webstorm上显示弃用了,是否应该继续使用?还是用其他替代?

在学习JavaScript的时候&#xff0c;深入学习时会遇到一些实际案例需要检测文档在垂直方向已滚动的像素值。 例如&#xff0c;当前页面内容很多&#xff0c;我想要滚动鼠标滑轮或者拖拽滚动条来浏览网页下面的内容。这时候一动滚动条&#xff0c;一些绝对固定的盒子却想要随着…

【Kubernetes】k8s删除master节点后重新加入集群

目录 前言一、思路二、实战1.安装etcdctl指令2.重置旧节点的k8s3.旧节点的的 etcd 从 etcd 集群删除4.在 master03 上&#xff0c;创建存放证书目录5.把其他控制节点的证书拷贝到 master01 上6.把 master03 加入到集群7.验证 master03 是否加入到 k8s 集群&#xff0c;检查业务…

Unity触发器的使用

1.首先建立两个静态精灵&#xff08;并给其中一个物体添加"jj"标签&#xff09; 2.添加触发器 3.给其中一个物体添加刚体组件&#xff08;如果这里是静态的碰撞的时候将不会触发效果&#xff0c;如果另一个物体有刚体可以将它移除&#xff0c;或者将它的刚体属性设置…

文件的基础

一、文件 什么是文件 文件流&#xff1a; 一、1、文件的相关操作 创建文件的三种方式&#xff1a; public class FileCreate {public static void main(String[] args) {}//方式1 new File(String pathname)Testpublic void create01() {String filePath "e:\\news1.…

C语言-memcpy(不重复地址拷贝 模拟实现)

memcpy&#xff08;不重复地址拷贝&#xff09; 语法格式 在C语言中&#xff0c;memcpy 是一个标准库函数&#xff0c;用于在内存之间复制数据。它的原型定义在 <string.h> 头文件中。memcpy 的语法格式如下&#xff1a; c void *memcpy(void *destination, const voi…

健身·健康行业Web3新尝试:MATCHI

随着区块链技术进入主流&#xff0c;web3 运动已经开始彻底改变互联网&#xff0c;改写从游戏到金融再到艺术的行业规则。现在&#xff0c;MATCHI的使命是颠覆健身行业。 MATCHI是全球首个基于Web3的在线舞蹈健身游戏和全球首个Web3舞蹈游戏的发起者&#xff0c;注册于新加坡&a…

【JVM】(内存区域划分 为什么要划分 具体如何分 类加载机制 类加载基本流程 双亲委派模型 类加载器 垃圾回收机制(GC))

文章目录 内存区域划分为什么要划分具体如何分 类加载机制类加载基本流程双亲委派模型类加载器 垃圾回收机制&#xff08;GC&#xff09; 内存区域划分 为什么要划分 JVM启动的时候会申请到一整个很大的内存区域,JVM是一个应用程序,要从操作系统这里申请内存,JVM就需要根据,把…