数据挖掘应用之weka的二次开发与使用

来源:互联网 发布:淘宝西装原单 编辑:程序博客网 时间:2024/06/05 22:33

    在之前的博文中,已讲过“数据挖掘常用工具库介绍”篇章,本次将重点讲解weka api的使用方法和应用实践效果。

如之前所讲,weka是小而美的数据挖掘工具,当维度特别高时,如达到千维及以上,训练样本数达到万级以上时候,其可用性是极差的。

但当维度为适当维度,如百维及以内,训练样本在万级以内的时候,其挖掘的应用和效果都是可圈可点的。

下边以用户画像之性别预测的应用场景为例,说明weka的使用全过程。

     weka的使用方法,主要分为以下7步,语料集准备、特征选择及特征空间生成、特征权重计算、arff/sparse arff的生成、训练集和测试集划分、模型训练与测试、线上应用。

    1、语料集准备

          语料是通过每个视频用户的观影行为的日志和预先打好某些剧集的性别偏好交集生成(其具体实现方法,请参考之前的博文“通过观影兴趣预测用户画像之性别属性 ").

          本次因为weka在高维度上的表现太差,故只选取观影的频道标签(如电影、电视剧等)、剧集的类型(都市、偶像、育儿等)标签两大类标签。形成的集合如下图:

           

    2、特征选择及特征空间生成

          特征选择有多种经典方法,TF/IDF是最经典一种。加上最小文档出现数量这一支持度后,效果会更好。

          特征空间生成结果如下

        

 3、特征权重计算

       本例中以IDF作为特征权重值,自己实现或是用现成工具集均可以,其结果如下:

       

4、arff/sparse arff的生成

        以上两种格式为weka的输入语料的指定格式,还是有点窄和不自由,不如liblinear或是libsvm之类的简单些。

       其区别是一个是完全稠密的格式,一个是稀疏的格式。个人更喜欢用arff,此种更易于观看和查看错误情况。故以下均为arff为例。 
      本案例是基于weka-3.6版本的java api,自定义封装的生成arff的api,并不复杂,但细节还是相当的多,后续会在开源代码中体现出来。
      其格式为:

    可见样本的特征还是相当稀疏的,这也是视频网站用户的显著特点。


5、训练集和测试集划分
     训练集和测试集的划分有两种方法,一种是提前划分出训练集和测试集,典型比例为9:1或是8:2均可。
     第二种就是交叉验证时候,随机划分出N:1的训练和测试集即可。
     如果样本集合充全,建议采用第一种,否则采用第二种。没有实质性的区别,依个人习惯而定。我个人更倾向于使用第二种。

6、模型训练与测试
     weka的优点之一就是分类和聚类的算法集合非常多,方便更改各种算法来构建相应的模型,并及时得到封闭和测试的结果。
     如下图,多个不同算法系下的分类,包括贝叶期、逻辑回归、决策权、libsvm等,只需要改变下new的对象,即可实现算法的更新。

  以NaiveBayes为例 ,其封闭测试结果如下:


其开放测试的结果如下,此只为基础的结果,有很多可以再特征优化的地方。我们线上采用的是如前两专讲的基于liblinear的用户画像的性别预测、年龄预测的情况,准确率和召回率均可达到90%以上。


模型训练测试后为线上应用,对于weka来讲,要产生以下4个文件,分别为输出模型文件(Model)、特征与索引值对应关系(feature to index relation)、特征与权重对应关系(feature and  weight relation)、数据集的头信息(dataset header metadata)。如下图所示:


7、线上应用
      线上应用一般是结合hadoop/spark之类的分布式环境,基于hive的udf函数集成之前产生的4个模型训练的输出文件,也会在后续的开源程序中体现出来。


更多学习讨论,      请加入官方QQ技术群320349384,
                                 官方天亮论坛:http://bbs.yuqing36524.com/
                                 天亮教育视频链接:http://pan.baidu.com/s/1pJJrcqJ


0 0
原创粉丝点击