关于算法:SAS使用鸢尾花iris数据集训练人工神经网络ANN模型

原文链接:http://tecdat.cn/?p=20781 

什么是神经网络?

人工神经网络最后是由钻研人员开发的,他们试图模拟人脑的神经生理学。通过将许多简略的计算元素(神经元或单元)组合成高度互连的零碎,这些钻研人员心愿产生诸如智能之类的简单景象。神经网络是一类灵便的非线性回归,判断模型。通过检测数据中简单的非线性关系,神经网络能够帮忙做出无关理论问题的预测。

神经网络对于存在以下条件的预测问题特地有用:

  • 尚无将输出与输入相干的数学公式。
  • 预测模型比解释模型更重要。
  • 有很多训练数据。

神经网络的常见利用包含信用风险评估,营销和销售预测。

neuralNet 基于多层感知器(MLP),具备以下特色:

  • 有任意数量的输出
  • 在暗藏层和输入层中应用线性组合函数
  • 在暗藏层中应用S型激活函数
  • 具备一个或多个蕴含任意数量单位的暗藏层

应用神经网络函数

该  neuralNet 通过最小化的指标函数训练网络。

开发神经网络时,须要做出许多参数抉择:要应用的输出数量,要应用的根本网络体系结构,要应用的暗藏层数量,每个暗藏层的单位数量,要应用的激活函数应用等等。

您可能基本不须要任何暗藏层。线性模型和狭义线性模型可用于多种利用。而且,即便要学习的函数是轻微的非线性,如果数据太少或噪声太大而无奈精确预计非线性,应用简略的线性模型也可能会比应用简单的非线性模型取得更好的成果。最简略的办法是从没有暗藏单元的网络开始,而后一次增加一个暗藏单元。而后预计每个网络的误差。当误差减少时,进行增加暗藏的单位。

如果有足够的数据,足够多的暗藏单元和足够的训练工夫,则只有一个暗藏层的MLP能够学习到简直任何函数的准确性。

生成神经网络模型的独立SAS评分代码

训练和验证神经网络模型后,能够应用该模型对新数据进行评分。能够通过多种形式对新数据进行评分。一种办法是提交新数据,而后运行模型,通过SAS Enterprise Miner或SAS Visual Data Mining and Machine Learning应用数据挖掘来对数据进行评分,以生成评分输入。

本示例阐明如何应用  neuralNet操作为ANN模型生成独立的SAS评分代码。SAS评分代码能够在没有SAS Enterprise Miner许可证的SAS环境中运行。

创立和训练神经网络

annTrain 将创立并训练一个人工神经网络(ANN),用于分类,回归的函数。

本示例应用Iris 数据集创立多层感知器(MLP)神经网络。Fisher(1936)发表的Iris数据蕴含150个观测值。萼片长度,萼片宽度,花瓣长度和花瓣宽度以毫米为单位测量从各三个物种50个标本。四种测量类型成为输出变量。品种名称成为名义指标变量。目标是通过测量其花瓣和萼片尺寸来预测鸢尾花的品种。

您能够通过以下DATA步骤来将数据集加载到会话中。

 data mycas.iris;
    set sashelp.iris;
 run;

Iris数据中没有缺失值。这是很重要的,因为annTrain 操作将从模型训练中剔除蕴含缺失数据的察看值。如果要用于神经网络剖析的输出数据蕴含大量缺失值的观测值,则应在执行模型训练之前替换或估算缺失值。因为Iris数据不蕴含任何缺失值,所以该示例不执行变量替换。

该示例应用  annTrain 来创立和训练神经网络。神经网络依据其萼片和花瓣的长度和宽度(以毫米为单位)的输出来预测预测鸢尾花品种的函数。

 target="species"                                               
    inputs={"sepallength","sepalwidth","petallength","petalwidth"}  
    nominals={"species"}                                            
    hiddens={2}                                                     
    maxiter=1000                                                   
    seed=12345                                                 
    randDist="UNIFORM"                                            
    scaleInit=1                                                 
    combs={"LINEAR"}                                           
    targetAct="SOFTMAX"                                        
    errorFunc="ENTROPY"                                      
    std="MIDRANGE"                                             
    validTable=vldTable 

  1. 应用sampling.Stratified 操作Iris 按指标变量对输出数据进行分区 Species
  2. 将分区批示列增加  _Partind_ 到输出表。该_Partind_ 列蕴含映射到数据分区的整数值。
  3. 创立一个由30%的表察看值组成的采样分区  Species。残余的70%的表观测值形成第二个分区。
  4. 指定12345 要用于采样函数的随机种子值  。
  5. 命名sampling_stratified 操作创立的输出表  (带有新的分区信息列)  iris_partitioned。如果内存中存在具备该名称的表,则现有表将被新iris_partitioned 表内容笼罩  。
  6. 在源表中指定所有变量,将其传输到采样的表中。
  7. 应用新增加的分区列中的数据创立独自的表,以进行神经网络训练和验证。令训练表trnTable 为表  中所有察看iris_partitioned 值的子集,  其中列的整数值  _Partind_ 等于1。
  8. 应用新增加的分区列中的数据创立独自的表,进行神经网络训练和验证。假如验证表vldTable 是表  中所有察看iris_partitioned 值的子集,  其中列的整数值  _Partind_ 等于0。
  9. annTrain 通过应用trnTable 带有指标变量的表,来创立和训练MLP神经网络  Species
  10. 指定四个输出变量用作ANN剖析的剖析变量。
  11. 要求将指标变量  Species 视为剖析的名义变量。
  12. 为神经网络前馈模型中的每个暗藏层指定暗藏神经元的数量。例如,  hiddens={2} 用两个暗藏的神经元指定一个暗藏层。
  13. 指定在寻求指标函数收敛时要执行的最大迭代次数。
  14. 指定用于执行采样和分区工作的随机种子。
  15. 要求将UNIFORM散布用于随机生成初始神经网络连贯权重。
  16. 指定连贯权重的比例因子,该比例是绝对于上一层中的单位数的。scaleInit 参数的默认值为  1。将参数的值设置  scaleInit 为2会减少连贯权重的比例。
  17. 为每个暗藏层中的神经元指定LINEAR组合函数。
  18. 在输入层中为神经元指定激活函数。默认状况下,SOFTMAX函数用于名义变量。
  19. 指定误差函数来训练网络。ENTROPY是名义指标的默认设置。
  20. 指定要在区间变量上应用的标准化。当  std 参数的值为MIDRANGE时,变量将标准化到0和1。
  21. 指定要用于验证表的输出表名称。这样能够通过应用optmlOpt 参数来尽早进行迭代过程  。
  22. 指定  Nnet_train_model 作为输出表。
  23. 启用神经算法求解器优化工具。
  24. 指定250次最大迭代以进行优化,并指定1E–10作为指标函数的阈值进行值。
  25. 启用LBFGS算法。LBFGS是准牛顿办法族中的一种优化算法,它通过应用无限的计算机内存来近似Broyden-Fletcher-Goldfarb-Shanno(BFGS)算法。
  26. 应用频率参数来设置验证选项。当  frequency 参数的值为1时,将在每个期间进行验证。当  frequency 为0时,将不进行任何验证。

输入显示数据的概述。

输入:列信息

来自table.columnInfo的后果

如果在输出表上应用table.fetch 命令,则能够查看输入2中显示的示例数据行  。

输入2:已提取的行

来自table.fetch的后果

如果simple.freq 在输出表上应用命令,则能够验证三种品种中每种都有50个观测值,输出数据表中总共有150个观测值,如输入3所示。

输入 3:物种频率

来自simple.freq的后果

Iris 通过胜利实现输出表的neuralNet.annTrain训练过程后  ,后果将显示训练数据迭代历史记录,其中蕴含指标函数,损失和验证误差列,如  输入4中所示。

输入 4:优化迭代历史记录

来自NeuroNet.annTrain的后果

在“迭代历史记录”表下方,您应该看到“收敛状态”表。对于胜利的神经网络模型,“收敛状态”应报告“优化已收敛”,如  输入 5中所示。

输入 5:收敛状态

胜利的模型训练包含输入模型的摘要后果,如输入 6所示  。

输入 6:模型信息

这些后果重申了要害的模型构建因素,例如模型类型;指标变量 神经网络模型输出,暗藏和输入节点的摘要;权重和偏差参数;最终目标值;以及评分验证数据集的误分类误差。

在表格底部,您将看到由验证数据确定的最终误分类谬误百分比。如果将这个神经网络模型用作预测函数,并且您的数据来自与Iris 验证表具备雷同数据分布,则  能够预期93%–94%的物种预测是正确的。

应用神经网络模型对输出数据进行评分

训练和验证神经网络模型后,能够应用该模型对新数据进行评分。最常见的技术是通过SAS Enterprise Miner或SAS Visual Data Mining and Machine Learning应用数据挖掘环境来生成评分输入,从而提交新数据并运行模型以对新数据评分。

领有训练的神经网络后,能够应用该神经网络模型和  annScore 操作对新的输出数据进行评分,如下所示:

 table=vldTable
    modelTable="train_model"; 

  1. 辨认训练数据表。训练数据是iris_partitioned 表中的观测值,在分区批示符列(_partind_)中的值为0 。
  2. 确认验证数据表。验证数据是iris_partitioned 表中的察看值,在分区批示符列(_partind_)中的值为1 。
  3. 对训练数据进行评分。提交输出数据,该  数据将由经过训练的神经网络模型评分。因为在此代码块中要评分的数据是模型训练数据,所以您应该冀望评分代码读取所有105个察看值,并以0%谬误分类谬误预测指标变量值。模型训练数据蕴含已知的目标值,因而,在对模型训练数据进行评分时,应冀望其分类谬误为0%。
  4. 对验证数据评分。该操作将提交输出数据,在SAS数据挖掘环境中,由经过训练的神经网络模型对输出数据进行评分。验证数据蕴含已知目标值,但训练算法不会读取验证数据。算法预测验证数据中每个察看值的目标值,而后将预测值与已知值进行比拟。分类误差百分比是通过从1中减去正确预测的分类百分比来计算的。较低的分类误差百分比通常示意模型性能更好。

验证数据蕴含30%的原始输出数据察看值,并按指标变量Species分层  。原始数据蕴含每个品种的50个察看值;验证数据(30%)蕴含三种物种中每一种的比例15个观测值,总共45个观测值。如果验证数据中的45个察看值中有42个被正确分类,则该模型的谬误分类误差为6.67%。


最受欢迎的见解

1.r语言用神经网络改良nelson-siegel模型拟合收益率曲线剖析

2.r语言实现拟合神经网络预测和后果可视化

3.python用遗传算法-神经网络-含糊逻辑控制算法对乐透剖析

4.用于nlp的python:应用keras的多标签文本lstm神经网络分类

5.用r语言实现神经网络预测股票实例

6.R语言基于Keras的小数据集深度学习图像分类

7.用于NLP的seq2seq模型实例用Keras实现神经机器翻译

8.python中基于网格搜索算法优化的深度学习模型剖析糖

9.matlab应用贝叶斯优化的深度学习

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据