当前课程知识点:R语言数据分析 >  下部:博术 >  第12章 既是世间法、自当有分别 >  12.10 人工神经网络(II)

返回《R语言数据分析》慕课在线视频课程列表

12.10 人工神经网络(II)在线视频

下一节:12.11 支持向量机

返回《R语言数据分析》慕课在线视频列表

12.10 人工神经网络(II)课程教案、知识点、字幕

大家好

欢迎来到《R语言数据分析》课程

在前面的课程里面

我们和大家简单交流了一下

神经网络的基本原理

今天我们看一看R里面如何实现它

说到人工神经网络

其实在R里面它有很多实现的包

包括我们现在最火的深度学习

深度神经网络

其实在它不同的框架在R里面都有实现

都有相应的接口

针对咱们这个问题情境呢

我们用一个相对比较简单的神经网络结构

所采用的包也是一个比较经典的

nnet的这个包

这个包它其实实现的是什么呢

是一个单隐藏层

只包含一个隐藏层的这么一种神经网络

当然我们说单个隐藏层

这并不表示这个神经网络就不怎么好

其实也已经有理论上证明

只有一个隐藏层的话

其实也可以拟合任意的函数

这个在具体实现的过程中

我们这需要简单说明一下

因为我们在前面讲算法的时候

都是讲那个经典的一个实现的过程

然后具体某些包来进行实现的话

它可能有一些

有一些差别

比如说我们这个nnet的话

它在优化这个方面

其实和我们前面讲的也稍微有一些差别

我们看看这个nnet的这个包

它其实真正要用到的

其实训练的函数 要学习模型的话

其实用的就是 nnet和它那个同名的一个函数

里面有很多的参数 这儿只列了其中一部分

比如说这个size

size是什么呢

我们刚才讲了它nnet只是什么

训练一个比较简单的神经网络

它是包含一个隐藏层

这个size就是表示

这个隐藏层里面结点的个数

再比如Wts

毫无疑问

这Wts其实表示什么

表示这个权值weights

就是说

初始的权值你可以自己设定

但我们前面在讲算法的时候

也提到了

其实初始权值一般都怎么样

随机生成的

千里之行 始于随机

假如是我们不设定的话

其实绝大部分情况之下我们都不设定

它就是什么

随机生成

当然随机生成的时候

它也有一个什么也有一个区间

这个区间是什么呢

一般来讲就是-0.5到0.5左右

就是相对还是比较小的一个区间里面

另外还有个参数

也是经常需要设置的这个decay

这个参数的话

它其实是用来什么

用来控制我这个

所训练的神经网络它的泛化能力的

再下一个参数是什么

maxit

它其实什么

它其实就是我这个什么迭代的次数

最多不超过多少

我们之前讲了

这个整个的神经网络

它在训练的过程中

它不断迭代不断迭代

直到找到什么比较好的那一个W对吧

它有两个终止条件

一种是什么

两次之间它的误差(变化)已经足够小了

就不需要再迭代了

另外一种什么呢

就是迭代次数太多了

我就走得太累了

我不想再迭代了

这里面就设置一个什么

最大迭代次数

下面这个参数

大部分情况之下也是不需要设置的

但是有某些情况之下可能是需要用到

比如说它指的什么呢

就我这里面那个权值的个数

就也说白了也是什么

就是我这个连接的连线有多少条

最多不能超过多少

就一旦我们的输入这个节点数太多

隐层节点数太多

我的输入太多

那毫无疑问

这个一旦超过这个的话

那其实我们的训练网络的时候它可能会报错

这个时候就得重新设置一下

这是我们的nnet这个函数里面

最基本的常用的一些参数的一个情况

咱们看看具体针对我们这个问题情境

通过nnet如何来训练我们相应的模型

调用这个nnet()的这个函数

当然它和我们通常的大部分的什么

大部分的模型训练过程都是一样的

是吧

先一个公式对吧

这个formula

就是这是因变量

然后后面是自变量

波浪号前面是因变量

波浪号后面自变量

然后将我们的相应的训练数据设定好

另外就是这个size

这个是必不可少的

几乎其他的所有参数都有默认值

但是这个size是没有的

size它是你必须指定

指定究竟包含几个隐藏节点

一旦训练好这个模型之后

我们可以看看这个模型究竟是什么

它包含哪些具体的组成部分

imodel它其实还是什么

本质上还是一个列表

假如我们调用这个函数叫typeof()

typeof(imodel)的话

这个时候我们会发现什么

它其实

它返回结果就是什么 就是一个list

也就是说它本质上就是一个列表

我们可以看到它有一些具体组成部分

比如说其中的这个什么

第一个组成部分

imodel$n 表示什么

10 7 1

毫无疑问这是每一个层的节点个数

输入层 隐藏层 输出层

然后这个imodel的这个训练好的模型

它有一个什么

wts表示什么

我训练好之后

因为我们前面讲了所谓的神经网络的训练

一旦你的结构设定好了

这个超参数相应的超参数

比如这个size都已经设定好了

那你最后训练出来的时候

其实就是这个相应的一些参数

也就是什么

也就是我这个连接的权值

是不是

也就是连接的权值

当然还有一个什么

比如说这里面imodel的一个什么

fitted.values

表示什么意思呢

就表示我具体的我的训练集

我每一个它相应的什么

拟合得到结果

一旦我们这个模型训练完之后

就可以用来做什么

来看看我们模型的性能指标

通过这个统一的接口函数predict()

看看这个模型针对什么

针对我一个新的数据

假如我是要看这个训练集的拟合效果的话

怎么样

我把这个newdata还是设成什么

还是设置成这个训练集

type="class"

这时候我们可以通过

这个Metrics里面这个ce()这个函数

可以看一下它目前的结果是多少

分类错误率0.19

假如是对这个测试集来讲

测试集 针对这个测试集的话

它的结果其实更好一点 是多少

分类错误率只有0.17

只有0.17

当然这里面我们是什么

是没有经过太多的参数设置的

我们刚刚讲了这里面

必不可少的参数至少是个size

另外设置比较多的

还有一个什么decay

这个用来用于控制这个模型的泛化能力的

那这两个参数设置的时候

刚才这个size等于7的话还是相对有点随意

decay的话它默认是为零

其实这两个参数都可以设置

那怎么设呢

我们一般来讲我们可以通过什么

通过这个自己写一个嵌套的循环是可以的

双重循环

不同的这个size不同的decay当然可以

当然更好的方法就是采用这个caret的这个包

通过caret的包我们来做什么

通过这个进行这个格子点搜索

它本质上其实还是嵌套的循环

我们还是调用

这个expand.grid()这么一个函数

当然我们经常说这个

caret里面的什么格子点搜索

并不表示这个函数是什么

并不表示这个函数是caret包里面的

这个函数

其实我们在你不加载这个包

就在我们基础包里面本身已经包含了 base::expand.grid

它最后生成的结果是什么

expand.grid

它其实最后生成的是一个data.frame

就是这个size

不同的size 不同的decay

它怎么样

它不同的组合

size等于1

然后decay等于0.03

size等于1 decay等于0.1

类似这样的 这么一个组合的过程

然后我们利用这个caret的包里面

我们来什么来进行一个什么优选

就将什么将我这个格子点我都交给他

刚才我生成的这个格子点对吧

就不同的那个参数的组合

交过来进行什么

相当于写了一个双重循环

一个双重循环进行什么

模型(参数)的寻优

这时我们发现

怎么样

最佳的这个参数这个size等于多少

size等于3

然后 decay等于0.6

当然我们可以通过这个plot

我们来直接将这个训练啊

这个优选的过程我们看一下

就是参数优选的过程看一下

这个时候我们看一下横轴的话是多少

这里面其实就是什么就是我这个size

就是我这里面隐藏层节点的个数

然后这个纵轴的话是什么

是我这个准确率

大家注意了

纵轴的准确率

然后不同的什么

不同的线条

不同的颜色代表什么

不同的decay

毫无疑问

我们都希望我们的线条这么一个形状

对吧

都希望这么条形状

然后在最高点的时候什么就是我想要的什么

相应的size

相应的decay

对不对

那这时我们可以看得出来

确实这个时候size等于3

然后decay等于多少

decay等于0.6的时候

它效果最好的也达到一个最高点

达到一个最高点

一旦我们将这个调优之后的(超)参数

我们设定好之后

我们来看一看

这个时候相应的

所训练的模型

它的性能指标怎么样

刚才我们随意设置这个size等于7的时候

它是0.19

对训练集来讲

现在稍微有所改进了

变成了0.18

然后在这个测试集上面

在训练集上面有所改进

然后测试集上应该说改进更大一点

刚才是0.17

现在变成多少 0.15了

这就是一个比较好的一个提升

这也就是我们看到的

通过这个格子点搜索的方法

进行相应的参数的一个调优的过程

我们在训练模型之后

我们再看看这个神经网络究竟长什么样子

我们来绘制一下我们这个神经网络

这个时候我们要加载一个新的包

叫NeuralNetTools

当然还是用刚才我们这个nnet

它来进行模型训练

相应的参数就是

将刚才我们什么

将刚才已经优选好的参数交给它

包括decay 包括size

一旦训练好这个

再次训练好一个nnet的这个模型之后怎么样

我可以通过这个plotnet

将这个模型绘制出来

将这张网络绘制出来

咱们看一下这个网络的具体

长什么样子

毫无疑问

这里面都是什么

以I开头都是什么都是input

也就是说这个输入的节点

然后这个中间的都是什么

都是这个H都是什么

都是我这个所谓的隐藏层节点

这个hidden

这个O就是output就是输出层的节点

我们这个时候可以看得出来它其实什么

其实这个网络结构就比较清晰了

这里面权值的大小也映射成什么

这个线条的粗细了

这就是我们网络的一个绘制的过程

接下来我们可以看一看

究竟我们整个这个

nnet

这么一个相对比较简单的神经网络

针对我们这个文理分科这份数据

它的模型性能指标

究竟在稳定在哪一个水平之上

也是通过我们什么这个k折交叉检验

来进行那个模型的评估

当然 这个整个的过程

和我们前面过程也是一样的

分成训练集测试集

然后怎么样进行模型的训练

然后在训练集上我进行预测

看看拟合的效果

并且交给什么

通过这个imetrics函数叠加到这个

我这个global_performance里面去

同样对测试集也是一样

当然这里面我们稍微提一下

就是我们前面讲编代码的时候

在讲函数的时候就提过一个什么

叫事不过三法则

其实我们这个k折交叉检验

已经反反复复使用了

那这个时候其实我们有必要考虑一下

将它包成一个函数

我们为了演示的

为了看得更加清晰

所以每次我们都显示出来了

在具体如何包成函数

我们在这个托管的GitHub代码里面

已经实现了

大家可以参考一下

咱们先看看目前我们这个nnet

K折交叉检验的一个结果

它的这个应该讲这个测试集的训练的

性能指标应该还是相当不错的

很多都是什么都是这个在20%以下的

就是应该都迈进了

准确率迈进了80%以上

所以讲这个神经网络的整个性能指标

对咱们这个数据来讲还是不错的

以上就是我们关于这个R语言里面

如何实现我们一个相对比较简单一个神经网络

本次课到此结束

谢谢大家

R语言数据分析课程列表:

上部:问道

-第1章 气象万千、数以等观

--第1章 气象万千、数以等观

--第1章 作业

-第2章 所谓学习、归类而已

--2.1 所谓学习、归类而已(I)

--2.2 所谓学习、归类而已(II)

--2.3 所谓学习、归类而已(III)

--2.4 所谓学习、归类而已(IV)

--第2章 作业

-第3章 格言联璧话学习

--第3章 格言联璧话学习

--第3章 作业

-第4章 源于数学、归于工程

--第4章 源于数学、归于工程

--第4章 作业

-讨论题

--如何发挥人工智能的头雁效应

中部:执具

-第5章 工欲善其事、必先利其器

--第5章 工欲善其事、必先利其器

--第5章 作业

-第6章 基础编程——用别人的包和函数讲述自己的故事

--6.1 编程环境

--6.2Mini案例

--6.3 站在巨人的肩膀上

--6.4 控制流

--6.5 函数(I)

--6.6 函数(II)

--第6章 作业

-第7章 数据对象——面向数据对象学习R语言

--7.1 向量与因子(I)

--7.2 向量与因子(II)

--7.3 矩阵与数组(I)

--7.4 矩阵与数组(II)

--7.5 列表与数据框(I)

--7.6 列表与数据框(II)

--第7章 作业

-第8章 人人都爱tidyverse

--第8章 人人都爱tidyverse

--第8章 作业

-第9章 最美不过数据框

--第9章 最美不过数据框

--第9章 作业

下部:博术

-第10章 观数以形

--10.1 一维数据空间(I)

--10.2 一维数据空间(II)

--10.3 二维数据空间

--10.4 高维数据空间

--第10章 作业

-第11章 相随相伴、谓之关联

--11.1 导引

--11.2 关联规则(I)

--11.3 关联规则(II)

--11.4 关联规则(III)

--第11章 作业

-第12章 既是世间法、自当有分别

--12.1 导引

--12.2 近邻法(I)

--12.3 近邻法(II)

--12.4 决策树(I)

--12.5 决策树(II)

--12.6 随机森林

--12.7 朴素贝叶斯

--12.8 逻辑斯蒂回归

--12.9 人工神经网络(I)

--12.10 人工神经网络(II)

--12.11 支持向量机

--第12章 作业

-第13章 方以类聚、物以群分

--13.1 导引

--13.2 划分方法

--13.3 层次方法

--第13章 作业

-第14章 庐山烟雨浙江潮

--第14章 庐山烟雨浙江潮

--第14章 作业

12.10 人工神经网络(II)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。