java - 提高 WEKA 多层感知器模型的准确性

标签 java machine-learning artificial-intelligence neural-network weka

我目前正在使用免费的 UCI 乳腺癌 .arff 文件练习 WEKA 建模,根据这里的各种帖子,我能够将其准确率调整到 63% 到 73%。我在 Windows 7 Starter 机器上使用 WEKA 3.7.10

  • 我使用属性选择来减少变量的数量,使用 InfoGainAttributeEvalRanker。我选择了前五名,结果如下:

    Evaluator:    weka.attributeSelection.InfoGainAttributeEval 
    Search:       weka.attributeSelection.Ranker -T -1.7976931348623157E308 -N -1
    Relation:     breast-cancer
    Instances:    286
    Attributes:   10
                 age
                 menopause
                 tumor-size
                 inv-nodes
                 node-caps
                 deg-malig
                 breast
                 breast-quad
                 irradiat
                 Class
    Evaluation mode:    10-fold cross-validation
    
    
    
    === Attribute selection 10 fold cross-validation (stratified), seed: 1 ===
    
    average merit      average rank  attribute
    0.078 +- 0.011     1.3 +- 0.64    6 deg-malig
    0.071 +- 0.01      1.9 +- 0.3     4 inv-nodes
    0.061 +- 0.008     3   +- 0.77    3 tumor-size
    0.051 +- 0.007     3.8 +- 0.4     5 node-caps
    0.026 +- 0.006     5   +- 0       9 irradiat
    0.012 +- 0.003     6.4 +- 0.49    1 age
    0.01  +- 0.003     6.6 +- 0.49    8 breast-quad
    0.003 +- 0.001     8.5 +- 0.5     7 breast
    0.003 +- 0.002     8.5 +- 0.5     2 menopause
    
  • 删除低排名变量后,我开始创建我的模型。我选择了多层感知器,因为它是我研究所依据的期刊所要求的算法。

suggestion of Bernhard Pfahringe 使用 0.1 作为 learning ratemomentum 以及指数因子 1, 2, 4, 8,对于隐藏节点epoch等。

尝试使用该方法几次后,我注意到隐藏层使用 2 和二进制数的十进制等价形式,即。 512, 1024, 2048, ... 导致准确性提高。例如,隐藏节点为 2,epoch 为 1024 等等。

我有一系列不同的结果,但到目前为止我得到的最高结果如下(使用 hidden node 2 和 epoch 16384:

    Scheme:       weka.classifiers.functions.MultilayerPerceptron -L 0.1 -M 0.1 -N 16384 -V 0 -S 0 -E 20 -H 2
    Relation:     breast-cancer-weka.filters.unsupervised.attribute.Remove-R1-2,7-8
    Instances:    286
    Attributes:   6
                  tumor-size
                  inv-nodes
                  node-caps
                  deg-malig
                  irradiat
                  Class
    Test mode:    10-fold cross-validation

    === Classifier model (full training set) ===

    Sigmoid Node 0
        Inputs    Weights
        Threshold    -2.4467109489840375
        Node 2    2.960926490700117
        Node 3    1.5276384018358489
    Sigmoid Node 1
        Inputs    Weights
        Threshold    2.446710948984037
        Node 2    -2.9609264907001167
        Node 3    -1.5276384018358493
    Sigmoid Node 2
        Inputs    Weights
        Threshold    0.8594931368555995
        Attrib tumor-size=0-4    -0.6809394102558067
        Attrib tumor-size=5-9    -0.7999278705976403
        Attrib tumor-size=10-14    -0.5139914771540879
        Attrib tumor-size=15-19    2.3071396030112834
        Attrib tumor-size=20-24    -6.316868254289899
        Attrib tumor-size=25-29    5.535754474315768
        Attrib tumor-size=30-34    -12.31495416708197
        Attrib tumor-size=35-39    2.165860489861981
        Attrib tumor-size=40-44    10.740913335424047
        Attrib tumor-size=45-49    9.102261927484186
        Attrib tumor-size=50-54    -17.072392893550735
        Attrib tumor-size=55-59    0.043056333044031
        Attrib inv-nodes=0-2    9.578867366884618
        Attrib inv-nodes=3-5    1.3248317047328586
        Attrib inv-nodes=6-8    -5.081199984305494
        Attrib inv-nodes=9-11    -8.604844224457239
        Attrib inv-nodes=12-14    2.2330604430275907
        Attrib inv-nodes=15-17    -2.8692154868988355
        Attrib inv-nodes=18-20    0.04225234708199947
        Attrib inv-nodes=21-23    0.017664071511846485
        Attrib inv-nodes=24-26    -0.9992481277256989
        Attrib inv-nodes=27-29    -0.02737484354173595
        Attrib inv-nodes=30-32    -0.04607516719307534
        Attrib inv-nodes=33-35    -0.038969156415242706
        Attrib inv-nodes=36-39    0.03338452826774849
        Attrib node-caps    6.764954936579671
        Attrib deg-malig=1    -5.037151186065571
        Attrib deg-malig=2    12.469858109768378
        Attrib deg-malig=3    -8.382625277311769
        Attrib irradiat    8.302010702287868
    Sigmoid Node 3
        Inputs    Weights
        Threshold    -0.7428771456532647
        Attrib tumor-size=0-4    3.5709673152321555
        Attrib tumor-size=5-9    3.563713261511895
        Attrib tumor-size=10-14    7.86118954430952
        Attrib tumor-size=15-19    2.8762105204084167
        Attrib tumor-size=20-24    4.60168522637948
        Attrib tumor-size=25-29    -5.849391383398816
        Attrib tumor-size=30-34    -1.6805815971562046
        Attrib tumor-size=35-39    -12.022394228003419
        Attrib tumor-size=40-44    11.922229608392747
        Attrib tumor-size=45-49    -1.9939414047194557
        Attrib tumor-size=50-54    -5.9801974214306215
        Attrib tumor-size=55-59    -0.04909236196295539
        Attrib inv-nodes=0-2    5.569516359775502
        Attrib inv-nodes=3-5    -7.871275549119543
        Attrib inv-nodes=6-8    3.405277467966008
        Attrib inv-nodes=9-11    -0.3253699778307026
        Attrib inv-nodes=12-14    1.244234346055825
        Attrib inv-nodes=15-17    1.179311225120216
        Attrib inv-nodes=18-20    0.03495291263409073
        Attrib inv-nodes=21-23    0.0043299366591334695
        Attrib inv-nodes=24-26    0.6595250300030937
        Attrib inv-nodes=27-29    -0.02503529326219822
        Attrib inv-nodes=30-32    0.041787638417097844
        Attrib inv-nodes=33-35    0.008416652090130837
        Attrib inv-nodes=36-39    -0.014551878794926747
        Attrib node-caps    4.7997880904143955
        Attrib deg-malig=1    1.6752746955482163
        Attrib deg-malig=2    6.130488722916935
        Attrib deg-malig=3    -6.989852429736567
        Attrib irradiat    8.716254786514295
    Class no-recurrence-events
        Input
        Node 0
    Class recurrence-events
        Input
        Node 1


    Time taken to build model: 27.05 seconds

    === Stratified cross-validation ===
    === Summary ===

    Correctly Classified Instances         210               73.4266 %
    Incorrectly Classified Instances        76               26.5734 %
    Kappa statistic                          0.2864
    Mean absolute error                      0.3312
    Root mean squared error                  0.4494
    Relative absolute error                 79.1456 %
    Root relative squared error             98.3197 %
    Coverage of cases (0.95 level)          98.951  %
    Mean rel. region size (0.95 level)      97.7273 %
    Total Number of Instances              286     

    === Detailed Accuracy By Class ===

                     TP Rate  FP Rate  Precision  Recall   F-Measure  MCC      ROC Area  PRC Area  Class
                     0.891    0.635    0.768      0.891    0.825      0.300    0.633     0.748     no-recurrence-events
                     0.365    0.109    0.585      0.365    0.449      0.300    0.633     0.510     recurrence-events
    Weighted Avg.    0.734    0.479    0.714      0.734    0.713      0.300    0.633     0.677     

    === Confusion Matrix ===

       a   b   <-- classified as
     179  22 |   a = no-recurrence-events
      54  31 |   b = recurrence-events

我的问题是如何才能将此数据的准确度至少提高到 90%? 我是否必须进行过滤,使用另一种 MLP 输入参数模式?

我计划在学习如何执行此操作后使用另一组数据(它有大约 50 个变量和 100,000 个实例)。

最佳答案

对于这样的问题显然没有好的答案,但我会给你一些或多或少的使用 MLP 的一般性提示:

  • 首先,为什么要在处理如此小的数据集时删除特征?特征选择在高维问题和/或计算量大的模型中很重要。乳腺癌和 MLP 都不是这样。
  • 迭代次数是 MLP 的最差停止标准,您应该在验证误差上升时停止训练,而不是在一些固定的迭代次数之后停止
  • 我不知道你使用什么成本函数,但最重要的部分是正则化,因为 MLP 容易过度拟合。一些吉洪诺夫正则化是最低要求。
  • 针对此类问题使用多个隐藏层是完全多余的。特别是,由于梯度消失现象,在 MLP 中训练多个隐藏层通常是不可能的。
  • 为了摆脱学习算法参数化的束缚,我还建议放弃朴素的算法并至少使用resillent propagation,事实证明它在许多应用中都非常有效。

关于java - 提高 WEKA 多层感知器模型的准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20320406/

相关文章:

python - 只是 reshape 和 reshape 和获得转置之间的区别?

python - Epoch 的步骤在 GPU 上花费的时间太长

python - 索引 1 超出了 python 中尺寸为 1 的轴 0 的范围

java - 使用泛型制作链表

java - Android开发/LibGDX运行时没有窗口打开

r - 分类任务中的所有二元预测器

python - 了解将密集层连接到 LSTM

构建正确英语句子的 C# 库

java - 请求头太大

java - 如何监控/分析在 Glassfish 上运行的 Web 项目