15 Star 53 Fork 20

Jon. / hssvm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
svm
Loading...
README
MulanPSL-2.0
HSSVM用法说明文档


Update history:======================

1. 自该版本起,版本号规范化为hssvm1.0.1;
2. 删去以前版本中从ant运行参数搜索及run-all功能,相关配置文件一并删除,即:ant search-param
   ant run-all 两命令不再有效; 原ant打jar包功能保留。
3. 改由命令svm search conf, svm runall conf代替,在Linux下运行(windows下可用cygwin)



Usage:===========================

0. 概述
    该工具包主要用于解决SVM(支持向量机)多分类问题。利用该工具包,可以对特定格式的样本
    数据、使用SVM超球模型(Hyper-sphere)完成数据的训练与预测。目前本工具包仅支持C_SVC
    (C-Support Vector Classification),具体功能如下:
    
    1)可进行样本数据格式的转化,主要是index:value格式向value格式转换,及value格式向index:value
       格式转换;

    2)可对非index:value格式的样本数据进行归一化处理;

    3)可进行参数寻优操作,以使后续训练预测操作达到满意的精度要求;

    4)可根据输入参数及训练样本文件进行训练,建立超球SVM模型; 

    5)可根据已建立的超球训练模型,进行数据的分类预测;

    6)可通过命令进行归一化、参数寻优、训练、预测、結果报告等一站式操作。参数
       配置可xml文件里完成; 

    7)各关键操作可统计执行时间(如训练、预测、参数寻优、运行所有等时间);
    
    8)可进行数据检测是否满足程序处理要求

    9)带缓存机制,可进行大数据量的训练与预测(如样本数据中某最大类样本量超过3000以上)。


1. 安装与配置
    在使用该程序之前,需要安装Java环境(建议jdk、JRE1.6及以上版本)及配置相关环境变量。
  
      1.1 Linux平台     
        1)可从 http://java.sun.com/javase/downloads/widget/jdk6.jsp 下载Linux版本
            jdk的.bin包;
        2)将bin包解压,将解压后的整个目录拷到某用户目录(如下载jdk-6u17-linux-i586.bin包,
            一般jdk内包含了jre,解压然后拷贝整个目录(如拷贝jdk1.6.0_17 到  /usr/java/ 目录).
           同时将程序包解压(如解压到/home/john/hssvm1.0.1). 
        3)环境变量设置:
           在用户home目录下编辑.bashrc文件,键入: gedit .bashrc 
           在该文件最后加入下面语句:

                export JAVA_HOME=/usr/java/jdk1.6.0_17
                export HSSVM_HOME=/home/john/hssvm1.0.1
                export CLASSPATH=.:$JAVA_HOME/lib
                export PATH=$PATH:$JAVA_HOME/bin:$HSSVM_HOME/

           其中jdk1.6.0_17为所拷贝到/usr/java/目录下的jdk根目录,HSSVM_HOME配置为程序包解压后的根目录。
        4)保存.bashrc文件后登出系统,重新进入
        5)打开终端键入: java -version  , 回车后有正确版本信息出来,说明Java配置完成。
        
        若修改代码,建议安装Ant,以便编译代码及打包(一般使用可无需安装Ant)
        6)在http://ant.apache.org 下载Linux版本Ant二进制发布包,如apache-ant-1.*-bin.tar.gz
        7)同Java配置一样,将ant包解压后拷贝到某用户目录(如/usr/java/apache-ant-1.7.1),
            然后在.bashrc中加入如下变量:

            export ANT_HOME=/usr/java/apache-ant-1.7.1
            export PATH=$PATH:$JAVA_HOME/bin:$HSSVM_HOME:$ANT_HOME/bin

        8)保存文件,登出,重新进入系统,在终端键入: ant   回车后出现:
            Buildfile: build.xml does not exist!
            Build failed
           说明Ant工具已可以使用。
  
    1.1 Windows平台
        0) 在Windows下使用该程序需安装cygwin,下载地址:http://www.cygwin.com/。cygwin安装及用法
           说明请参考相关文档。 
        1)可从 http://java.sun.com/javase/downloads/widget/jdk6.jsp 下载windows版本
           jdk,并安装(安装jdk后一般会默认安装jre,如安装到 E:\java\jdk1.6)
        2)将程序包解压到某目录(如E:\program\hssvm1.0.1)
        3)配置环境变量
            右键单击“我的电脑”属性,进入“高级”, “环境变量”, “新建用户变量”,加入如下变量及值:
            
               变量名                  值            
            JAVA_HOME           E:\java\jdk1.6
            HSSVM_HOME          E:\program\hssvm1.0.1
            PATH                %JAVA_HOME%\bin;%HSSVM_HOME%\
            CLASSPATH           .;%JAVA_HOME%\lib

        4)以上完成后,点“确定”并关闭属性窗口。打开命令行窗口,键入:java -version ,应能看到
            正确的Java环境版本号,

        5) 若要修改代码,建议安装Ant。
           从http://ant.apache.org 下载 Windows版本二进制发布包(如apache-ant-1.*-bin.zip)
           解压后可放于与jdk相同目录(如E:\java\apache-ant-1.7.1),在环境变量中加入:
                    
                    ANT_HOME=E:\java\apache-ant-1.7.1
                    PATH=%JAVA_HOME%\bin;%HSSVM_HOME%\;%ANT_HOME%\bin
                             
           然后键入ant,出现
                Buildfile: build.xml does not exist!
                Build failed
            则说明Ant已可正常使用。


2. 工具包操作说明
    
    2.0 使用准备

     1) 对所有操作命令,当后面不带任何参数及选项执行时,将会出现命令用法说明。或命令后加 ? 可达到同样效果。
     2) 将hssvm1.0.1.zip包解压到相关工作目录(如/home/work/hssvm1.0),打开终端(windows平台下打开cygwin)
        切换到数据目录,如 cd /home/work/hssvm1.0.1/data,以下后续各操作都将在该目录下进行。
     3) 键入svm回车,查看可用命令。
          svm checkdata     检查样本数据的格式是否正确
          svm train         数据训练
          svm predict       数据预测
          svm scale         归一化数据
          svm convert       数据格式转换(从index:value到标准格式的互相转换)
          svm search        运行参数寻优
          svm runall        运行所有操作(包括归一化、参数寻优、训练、预测等)
            

    2.1 数据训练(Trainer)======================

    1)用法: svm train [options] train_file [model_file]
    Options:
       -m factor: which determines storing how many rows of kernel matrix in cache.
               It's available only if processing large amount samples(default 0.05)
       -k kernel_type : set type of kernel function (default RBF)
            1 -- polynomial(Unsupported temporaryly) 
            2 -- RBF(radial basis function) 
       -e epsilon : set tolerance of termination criterion (default 0.001)
       -C cost : set the penalty factor C (default 1)
       -g gamma : set gamma in kernel function (default 1)    
    
    2)参数及选项说明
    -m 该选项所设定值仅当多分类问题中某类样本量大于约2500时起作用.样本量大于2500条时,缓存(cache)
       中存储 NxN 核矩阵的行数为:rows = n*factor (n为某类样本量,即样本个数).当样本量小于
       约2500时,采用“上三角矩阵”存储核矩阵(预先存储核矩阵为了加快计算速度)
    -k 核函数类型。当前工具包中仅支持RBF-径向基核函数(此为超球模型中优先选用的核函数)
    -e 训练过程中用SMO算法求解二次规划的终止精度,该值越小,求解耗费时间将越多。

    train_file 
        为“非index:value格式”训练样本文件。文件格式请查看hssvm1.0\data\目录下数据文件示例。
        若您有“index:value格式”数据文件,则需要先将其用 DataTransfer 命令进行转换(命令用法
        见后续介绍); 一般,为达到更好的预测精度,需对训练数据进行归一化处理(后续介绍)。

    model_file
        训练后建立的超球模型将存入该文件里。该文件名可选,默认文件名为 train_file.model

    3)用法示例
        svm train -C 1.0 -g 2.5  winetrain  wine.model   
            --注意:-C 应为大写,其他参数均为默认。训练过程中,为提高最终预测精度,参数C,gamma
              的选择是关键。所以,实际训练前应考虑进行参数寻优操作(见后续介绍)

        svm train -m 0.1 -C 1.0 -g 4 adult_5000 adult.model
            --若adult_5000为大样本量文件(该样本里存在某类样本量大于约2500个),则此时选项-m将起作
               用。若假设此时其中某类样本有3000,则所建立的缓存将存储 3000*0.1=300 行的核
               矩阵数据。程序运行时存储这些数据需要内存约7.2M


    2.2 数据预测(Predictor)======================

    1)用法:svm predict test_file  model_file [output_file]

    2)参数及选项说明
    test_file
        同样,为得到更好预测精度,应考虑test_file与train_file一起进行归一化处理。
    
    model_file
        为训练过程中生成的模型文件

    output_file
        可选参数。默认文件名为 test_file.out

    3)用法示例:
        svm predict winetest winetrain.model wine.out    
    

    2.3 参数寻优(ParamOptimizer)======================

    1)用法:svm search  [options] train_file 
    Options: 
       -m factor: which determines storing how many rows of kernel matrix in cache.
               It's available only if processing large amount samples(default 0.05)
       -k kernel_type : set type of kernel function (default RBF)
            1 -- polynomial(Unsupported temporaryly) 
            2 -- RBF(radial basis function) 
       -e epsilon : set tolerance of termination criterion (default 0.001)
       -v way: the way of cross-validation(default k-fold cross)
            0 -- Random
            1 -- k-fold cross
            2 -- k-fold cross and random
       -t stype: determines how to choose optimal gamma-C pair (default Minimal C)
            0 -- Minimal C
            1 -- Minimal gamma
            2 -- Both C and gamma are minimal
       -f  fold: the fold number in cross-validation(default 5)
       -C  lower upper step :  set the scope of C(default [1.0 5.0]  step=1.0)
       -g  lower upper step :  set the scope of gamma(default [1.0 5.0]  step=1.0)
       -w  : write parameters searching result to file(no this option, not write)

    2)参数及选项说明
    train_file
        参数寻优过程中,该参数是必需的。通过特定算法,将该数据文件分割训练和预测两部分,由此找到
        合适的gamma-C参数对,作为后面真正训练预测的依据。

    -v 交叉验证方式选择,默认k-重交叉验证方式。目前程序支持三种方式:
       0.随机验证----对训练数据进行分类后,在每一类中选择(1/折数)的样本数,然后将各类所选择的样
         本数合起来作为预测数据,剩余作为训练数据; 
       1.k-重交叉验证----同样在训练数据分好类后,将每一类的样本都分成折数份(如5份),从每一类中
         选择第一个1/5并合起来作为预测数据,剩余作为训练数据。下一次选择每类的第二个1/5合起来作
         为预测数据, 以此循环,直到各类中的每一份数据都作为预测数据一次。
         此方式比前一种需多出折数次的循环,故需更多寻优时间。但得到的参数結果也更稳定,精度也较高。
       2.k-重交叉随机验证----此方式综合以上两种,所花时间与k-重交叉验证同。在样本数最大的一类中
         顺序选取一折(如1/5),而在其他类中随机选取一折,合起来作为预测数据。 

    -t 在寻优結果中,一般选取精度最高結果作为后续训练预测,因存在许多同样精度值的不同gamma-C对,所
       以需考虑使用何种策略来决定哪些参数对为最优,目前支持以下三种策略:
        0.最小C 
        1.最小gamma
        2.C、gamma均最小   

    -f 交叉验证折数,与-v选项配合使用。该值不建议小于3

    -C 寻优中的C的范围,由[上界,下界]及步长组成。 上下界间距越大及步长越小,耗费时间越多,但找到
       更优参数对的可能性更大。

    -g 类似C的范围选取。
    -w 寻优过程将产生“各种不同参数对”进行训练预测的結果,加上该选项,这些結果将被写入文件,可用于
       其他工具绘制等高线。 注,该选项后无需参数值。

    3)用法示例
        svm search -v 0 -t 2 -f 3 -C 0.5 5 0.5 -g 0.5 5 0.5 -w winetrain
        svm search  winetrain
            
      因该命令参数较多,而除train_file外,其他选项都有默认值。若要修改选项,推荐以:
        svm search conf  
      方式运行,后续将作介绍。
        
        

    2.4 归一化处理(Normalizer)======================

    1)用法: svm scale [option] train_file  test_file 
         option: -s lower upper (default[-1.0 1.0])

    2)选项及参数说明
       正式训练预测时,一般要求对训练样本文件和预测样本文件同时进行归一化,因而此时参数train_file,
       test_file都需要提供。但若只需对某单个样本文件进行(如参数寻优过程中只处理训练样本文件),
       此时可不提供test_file参数。

       -s lower upper:  归一化上下界

    3)用法示例
        svm scale -s 0.1 0.9 winetrain winetest 

        svm scale winetrain 


    2.5 数据格式转换(DataTransfer)======================

    1)用法: svm convert [option] src_file [dest_file] 
        -i : convert non-index format data to index format data(if no this option,
             convert the index format to non-index format)

    2)选项及参数说明
      index格式数据,形如: 
        -1 1:2.5  2:1.3  3:2.0       
        +1 1:2.5  2:1.3  3:3.0 

      non-index格式数据,形如:    
        -1  2.5  1.3  2.0       
        +1  2.5  1.3  3.0 

       本工具包只处理non-index格式数据,所以,若您的数据为index格式,则需要用此“数据格式转换”
      命令将其转成non-index格式,以便程序处理。

    -i 执行命令时,若无此选项,则程序将默认src_file为index格式数据文件,转换后将变成non-index
       格式文件,默认文件名为src_file.n。若加上此选项,则反之,将src_file由non-index格式转成
       index格式(该功能可为其他工具包提供处理数据)          

    3)用法示例
        svm convert winetrain.index  ----結果文件为winetrain.index.n, non-index格式
        svm convert -i winetrain     ----結果文件为winetrain.i,index格式


3. 批量处理及参数配置 
       
    3.0 运行参数寻优或runall时,通过hssvm-config.xml配置参数,为推荐方式。
 
    上述各操作(归一化、参数寻优、训练、预测等)逐一进行可能要经历一番繁琐复杂的过程,且当有的命令
    存在较多参数时,参数的输入、挑选、格式的正确与否等都会让操作变得复杂、易于出错。基于此,本程序提
    供了通过文件进行参数配置,可使所有操作较方便地一步完成。

    找到工作目录下的hssvm-config.xml文件,在该文件里配置了所有程序运行所需的参数。更改后保存该
    文件,运行search或runall即可。

   3.1 命令使用
    svm search conf

    svm runall conf    
    
    注: conf为一特定标识,表示通过hssvm-config.xml文件读取配置参数。若键入命令时无此一标识,
    则各参数仍然从命令行读取。


4. 其他
有任何问题或意见,请联系:
    关注公众号【次生物引擎】,实时了解作者更多动态。
    xjbean@qq.com  junn@kullu.cn
木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

基于Java的机器学习多分类问题HSSVM(超球支持向量机)算法求解工具包. 利用该工具包,可以对特定格式的样本数据、使用SVM超球模型(Hyper-sphere)完成数据的训练与预测。目前仅支持C_SVC(C-Support Vector Classification). 展开 收起
Java 等 4 种语言
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/dlooto/hssvm.git
git@gitee.com:dlooto/hssvm.git
dlooto
hssvm
hssvm
master

搜索帮助