机器学习和生物信息学实验室联盟

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2956|回复: 8
打印 上一主题 下一主题

关于EML(Extreme learning machine )

[复制链接]
跳转到指定楼层
楼主
发表于 2016-7-20 09:23:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 guojiasheng 于 2016-8-8 23:12 编辑

            上来先发个官方参照链接:http://www.ntu.edu.sg/home/egbhuang/index.html#

             中文叫: 极限学习机。  理论性的东西就参照链接去看吧,我也就大概看了一下,我也解析不清楚。
               
             那还是大致说一下吧,错了请指正:
           (1)其实就是关于神经网络,目前DL这么流行,这个我个人理解其实也差不多。
                   Paper说:对于单隐层前馈神经网络(SLFNs),ELM比传统的学习算法速度更快。
                   神经网络里面训练模型需要调节参数,这个目前一般都是采用BP反馈调节(误差逆传播算法,调节的网络参数包括连接权,输出阈值),当隐层的结点很多的时候,这是一个很耗时间的过程。
                   ELM说,那我们不训练这些隐层结点参数。直接随机生成这些隐层结点,总可以了吧(据他们分析说,其实这样更好),之后他们就是
                   调节隐层和输出层的参数,然后一大堆公式,把这些要求的参数转化成矩阵公式,直接求逆了什么的,就给求出来了(单隐层)。速度就变快了。  所以我理解他们可以随机生成hidden,隐层结点个数,与输入的链接权重啊。那么后面只需呀要求解最后一层的权重参数即可。
           (2)我们数学不好,还是直接上代码吧,这边基于scikit-learn 以及他们的参考自己写了一个调用方法。
                   路径:
                            /Bioinformatics_Machine_Learning/Machine_Learning/classifier/ELM/Python-ELM
       
                          运行:python runElm.py -f sigmoid -h 10 -c EL heart_scale
                          输出:
  1. begin ELMClassifier init....
  2. elm init with hidden : 10 activation_func : sigmoid
  3. cross
  4. 10 cross validation result
  5. ACC:0.822222222222
  6. Auc:0.784603190927
  7. confusion_matrix
  8. [[132  18]
  9. [ 32  88]]
复制代码


           这边输出包括Auc,那么既然是AUC的话,就是说训练样本必须有正负两个样本,我们在交叉验证的时候,可能正好数据顺序取得,导致训练样本里面只有一个类,就会出错,可以看楼下同学的出错。
        我这边外加一个预处理函数,就是把样本随机打乱:
        例如:
                python preProceeingRandom.py heart_scale
        会在当前目录下生成一个heart_scale_random的文件,之后使用该文件运行ELM。


        包括:ACC 、AUC、混淆矩阵
        参数说明:
        -f :  激活函数,
sine
tanh
tribas
inv_tribas
sigmoid
hardlim
softlim
gaussian
multiquadric
inv_multiquadric

                                -c  elm的分类器,包括EL 、Gen
                                -h  隐层结点个数





来源: 关于EML(Extreme learning machine )
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

沙发
发表于 2016-8-5 16:52:40 | 只看该作者
本帖最后由 xingpengwei 于 2016-8-5 16:55 编辑

运行一个400D的libsvm文件,出现了错误,不知道为什么,188D的也是
我的特征文件样例:见附件


  1. xingpengwei@biosrv:/Bioinformatics_Machine_Learning/Machine_Learning/classifier/ELM/Python-ELM$ python runElm.py -f sigmoid -h 10 -c EL CPPsite3_peptides_formated_400D.libsvm > error.log
  2. Traceback (most recent call last):
  3.   File "runElm.py", line 121, in <module>
  4.     ELMClassiferM(dgx,dgy,hidden=int(h),fun=f)
  5.   File "runElm.py", line 75, in ELMClassiferM
  6.     cross_val(dgx,dgy,elmc)
  7.   File "runElm.py", line 51, in cross_val
  8.     auc =  cross_val_score(e,x,y,cv=cv,scoring = "roc_auc");
  9.   File "/usr/local/lib/python2.7/dist-packages/sklearn/cross_validation.py", line 1433, in cross_val_score
  10.     for train, test in cv)
  11.   File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", line 800, in __call__
  12.     while self.dispatch_one_batch(iterator):
  13.   File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", line 658, in dispatch_one_batch
  14.     self._dispatch(tasks)
  15.   File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", line 566, in _dispatch
  16.     job = ImmediateComputeBatch(batch)
  17.   File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", line 180, in __init__
  18.     self.results = batch()
  19.   File "/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.py", line 72, in __call__
  20.     return [func(*args, **kwargs) for func, args, kwargs in self.items]
  21.   File "/usr/local/lib/python2.7/dist-packages/sklearn/cross_validation.py", line 1550, in _fit_and_score
  22.     test_score = _score(estimator, X_test, y_test, scorer)
  23.   File "/usr/local/lib/python2.7/dist-packages/sklearn/cross_validation.py", line 1606, in _score
  24.     score = scorer(estimator, X_test, y_test)
  25.   File "/usr/local/lib/python2.7/dist-packages/sklearn/metrics/scorer.py", line 184, in __call__
  26.     return self._sign * self._score_func(y, y_pred, **self._kwargs)
  27.   File "/usr/local/lib/python2.7/dist-packages/sklearn/metrics/ranking.py", line 257, in roc_auc_score
  28.     sample_weight=sample_weight)
  29.   File "/usr/local/lib/python2.7/dist-packages/sklearn/metrics/base.py", line 79, in _average_binary_score
  30.     return binary_metric(y_true, y_score, sample_weight=sample_weight)
  31.   File "/usr/local/lib/python2.7/dist-packages/sklearn/metrics/ranking.py", line 248, in _binary_roc_auc_score
  32.     raise ValueError("Only one class present in y_true. ROC AUC score "
  33. ValueError: Only one class present in y_true. ROC AUC score is not defined in that case.
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

板凳
发表于 2016-8-5 22:10:05 | 只看该作者
xingpengwei 发表于 2016-8-5 16:52
运行一个400D的libsvm文件,出现了错误,不知道为什么,188D的也是
我的特征文件样例:见附件

是在99服务器出错了吗?可以给佳盛发邮件,或者发给我,我转给佳盛。
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2016-8-5 23:58:44 | 只看该作者
xingpengwei 发表于 2016-8-5 16:52
运行一个400D的libsvm文件,出现了错误,不知道为什么,188D的也是
我的特征文件样例:见附件

Only one class present in y_true. ROC AUC score. 看出错提示原因 。 你的训练集不对,计算auc时候,不能只有一个类别。
回复 支持 反对

使用道具 举报

5#
发表于 2016-8-7 00:32:35 | 只看该作者
guojiasheng 发表于 2016-8-5 23:58
Only one class present in y_true. ROC AUC score. 看出错提示原因 。 你的训练集不对,计算auc时候,不 ...

两个类别啊,正例负例都有,你可以看看我楼上的附件里的文件,和样例heart_scale一个格式,还请你帮我看看我的文件哪里有问题。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2016-8-7 09:57:03 | 只看该作者
xingpengwei 发表于 2016-8-7 00:32
两个类别啊,正例负例都有,你可以看看我楼上的附件里的文件,和样例heart_scale一个格式,还请你帮我看 ...

应该可能你数据没有随机,数据是按类别顺序来的,交叉验证的时候,可能就只是顺序取了前k个,k个正好都是+1的类别,你随机打乱一下数据,我稍微加个自动随机的函数。

点评

这就是你的问题了。用户哪里知道需要先随机?你应该改一下代码,使得不是取前n个当测试集。如果难修改的话,你就应该提供一个预处理的script,帮助用户先随机一下。  发表于 2016-8-7 19:59
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2016-8-8 23:14:01 | 只看该作者
guojiasheng 发表于 2016-8-7 09:57
应该可能你数据没有随机,数据是按类别顺序来的,交叉验证的时候,可能就只是顺序取了前k个,k个正好都是 ...

我已经放到服务器,并在上面做了说明。
(1)加了预处理步骤,随机打乱数据。
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2016-8-8 23:18:44 | 只看该作者
xingpengwei 发表于 2016-8-7 00:32
两个类别啊,正例负例都有,你可以看看我楼上的附件里的文件,和样例heart_scale一个格式,还请你帮我看 ...

python preProceeingRandom.py file。做一下预处理, 看上面更新的文字说明,就可以了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

机器学习和生物信息学实验室联盟  

GMT+8, 2024-11-23 13:08 , Processed in 0.075029 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表