cito公司

项目状态:活跃-项目已达到稳定、可用的状态,正在积极开发中。 许可证:GPL v3 CRAN_状态_标签 R-CMD-检查

“cito”通过依赖标准R语法和来自统计包的熟悉方法,简化了(深层)神经网络的构建和训练。模型创建和培训可以用一行代码完成。此外,所有通用R方法(如打印或绘图)都可以用于拟合模型。同时,“cito”的计算效率很高,因为它基于深度学习框架“torch”(可选GPU支持)。“torch”包是R的原生包,因此此包不需要安装Python或其他API。

安装

安装“cito”之前,请确保已安装“torch”。如果您不确定如何检查,请参阅下面的代码块

#检查程序包
如果(!要求(“火炬”,安静地= 真的))安装.包(“火炬”)
图书馆(“火炬”)

#安装火炬
如果(!火炬_已安装())安装_管()

如果您在安装“火炬”时遇到问题,请访问“火炬”计划的网站或在上创建问题我们的github网站。我们很乐意帮助您。

CRAN的cito稳定版本可以通过以下方式安装:

安装.包(“cito”)

来自的开发版本github可以通过以下方式安装:

如果(!要求('开发工具',悄悄地= 真的))安装.包('开发工具')
开发工具::安装github('citoverse/cito')

例子

一旦安装,主要功能dnn()可以使用。请参见下面的示例。更深入的解释可以在小插曲或以下是文章.

  1. 用引导法拟合模型(以获得置信区间)。所有方法都可以使用引导和不使用引导
图书馆(引文)
nn.配合<- dnn(数字网络)(分隔长度~.,数据=数据集::虹膜,引导数据库=30升)
  1. 检查模型是否收敛(比较训练损失和基线损失(=仅拦截模型)):
分析_训练(nn.fit)
#乍一看,网络收敛了,因为损失低于基线损失,而训练损失在训练结束时处于平稳状态。
  1. 绘图模型体系结构
情节(nn.适合)

  1. “cito”支持许多高级功能,例如可用于推理(即解释模型)的通用可解释AI度量。变量重要性(类似于变量划分)和线性效果直接由总结功能:
总结(nn.适合)
##深度神经网络模型综述
##
##——功能重要性
##重要性标准错误Z值Pr(>|Z|)
##萼片。宽度→1.205 0.507 2.38 0.0175*
##花瓣。长度→27.720 10.575 2.62 0.0088**
##花瓣。宽度→0.677 0.637 1.06 0.2876
##物种→1.270 1.096 1.16 0.2465
## ---
##Signif(签名)。代码:0’***’0.001’**'0.01’*'0.05’0.1 ' ' 1
##
##——平均条件效应
##ACE标准错误Z值Pr(>|Z|)
##萼片。宽度→0.5283 0.0828 6.38 1.8e-10***
##花瓣。长度→0.7253 0.0649 11.18<2e-16***
##花瓣。宽度→-0.1924 0.1396-1.38 0.17
## ---
##Signif(签名)。代码:0’***’0.001’**'0.01’*'0.05’0.1 ' ' 1
##
##——条件效应的标准差
##ACE标准错误Z值Pr(>|Z|)
##萼片。宽度→0.1495 0.0409 3.66 0.00026***
##花瓣。长度→0.1291 0.0396 3.26 0.00111**
##花瓣。宽度→0.0529 0.0311 1.70 0.08878。
## ---
##Signif(签名)。代码:0’***’0.001’**'0.01’*'0.05’0.1 ' ' 1
  1. 预测(带置信区间):
昏暗的(预测(nn.fit,新数据=数据集::虹膜))
## [1] 150   1

超参数调谐

某些参数/参数,如架构、激活函数和学习速率,可以在交叉验证下自动调整(有关完整列表,请参阅?dnn(数字网络)). 可以使用函数标记应该调优的参数调谐()而不是超参数值:

nn.配合<- dnn(数字网络)(分隔长度~.,数据=数据集::虹膜,低压= 曲调(0.0001,0.1))
##正在启动超参数调整。。。
##正在拟合最终模型。。。
nn.配合$调谐
###A台:10×5
##步进试验列车模型lr
##<int><dbl><dbl><list>
##1 1信息0<列表[1]>0.0887
##2 2信息0<列表[1]>0.0264
##3 3 1.13 0<列表[1]>0.0416
##4 4 0.757 0<列表[1]>0.0373
##5 5信息0<列表[1]>0.0175
##6 6信息0<列表[1]>0.0581
##7 7 0.526 0<列表[1]>0.00348
##8 8 Inf 0<列表[1]>0.0179
##9 9信息0<列表[1]>0.0687
##10 10信息0<列表[1]>0.0497

调谐可以配置为调谐=配置_卸载()调整后,返回用最佳超参数训练的最终模型。未达到基线损失以下损失的超参数组合将提前中止,并且不会完全交叉验证。这些运行的测试损失为无穷大。

高级

我们可以将自定义损失函数传递给“cito”,也可以选择其他应拟合的参数。唯一的要求是必须使用“torch”包编写所有计算(cito自动将自定义参数的初始值转换为“torch“对象)。

我们使用多元正态分布作为似然函数,并且我们想要参数化/拟合多元正态分布的协方差矩阵:

  1. 我们需要一个助手函数,创建_覆盖()基于下三角矩阵和对角线(协方差矩阵的低秩近似)构建协方差矩阵

  2. 我们需要自定义似然函数,该函数使用distr_多变量_正常(…)火炬组件的功能:

创建cov= 功能(左,诊断){
  返回(火炬::焊炬_模板(左,左$t吨())+ 火炬::火炬_仪表(诊断$经验()+0.001))
}

自定义丢失_MVN= 功能(正确,pred){
西格玛= 创建cov(SigmaPar、SigmaDiag)
logLik(对数相似)= 火炬::分布_多变量_正常(之前,
                                            协方差矩阵=西格玛)$
    日志_抢劫(正确)
  返回(-logLik(对数相似)$意思是())
}
  1. 我们使用“SigmaPar”和“Sigma Diag”作为希望沿DNN优化的参数。我们将把一个带有起始值的命名列表传递给“cito”,“cito”将自动(基于R形状)推断参数的形状:
nn.配合<- dnn(数字网络)(cbind公司(萼片长度、萼片宽度、花瓣长度)~.,
             数据=数据集::虹膜,
             爱尔兰= 0.01,
             时代=200升,
             损失=custom_ loss_,
             冗长的= 错误的,
             绘图= 错误的,
             自定义参数=
               列表(西格玛诊断=  代表(0,),#我们的参数和起始值
                    SigmaPar公司= 矩阵(rnorm公司(6,标准偏差= 0.001),,2))#我们的参数和起始值
)

估计协方差矩阵:

作为矩阵(创建cov(nn.适合$损失$参数$SigmaPar,
nn.配合$损失$参数$西格玛诊断)
##            [,1]       [,2]       [,3]
## [1,] 0.29110381 0.06862528 0.13878071
## [2,] 0.06862528 0.10975803 0.04459281
## [3,] 0.13878071 0.04459281 0.16815922

经验协方差矩阵:

覆盖(cov)(预测(nn.适合)- nn.配合$数据$是)
##            [,1]       [,2]       [,3]
## [1,] 0.22410463 0.06030019 0.12087770
## [2,] 0.06030019 0.08968497 0.01781354
## [3,] 0.12087770 0.01781354 0.13009877