1.一种spark下的机器学习快速大规模样本签名方法,其特征在于,包括以下步骤:
1)读入样本数据,将样本数据转换成改进的样本格式,主要是为了将features经过hash后保存在Long类型的Buffer中并留出int类型的ids空列方便对其进行后面转换;
2)对样本数据中的高频特征进行划分,得到FeatureMap(高频特征被划分成多行后的存储格式);
3)设置最大广播数量,根据最大广播数量计算FeatureMap的分区partition;
4)根据FeatureMap的分区partition数量进行循环迭代,分片广播大量特征,让样本一开始转换为设定格式的样本数据,根据FeatureMap去索引对应特征的编码进行替换;
5)最后对完成替换的样本进行格式转换,得到libsvm格式的数据。
2.根据权利要求1所述的一种spark下的机器学习快速大规模样本签名方法,其特征在于,所述步骤1)读入样本数据,将样本数据转换成改进的样本格式,具体格式为:其中features是明文的特征,经过hash后保存在Long类型的Buffer中;ids(初始为空)是特征编码后的Buffer,类型为Int;在编码转换的过程中,不断的将查找到的feature转换成id,同时在features的buffer里删除掉已经转换后的feature,并将编码的id写入到ids这个buffer中。
3.根据权利要求2所述的一种spark下的机器学习快速大规模样本签名方法,其特征在于,所述步骤2))对样本数据中的高频特征进行划分,得到FeatureMap具体包括:对样本数据中的features进行划分,由一行变多行,同时进行murmurhash,将String数据hash到64位的空间中,MurmurHash算法是一种非加密hash算法,这里是将分开后的每一个特征进行hash,并同时统计特征频次,对低频特征进行过滤,对剩余的特征进行编号,产生FeatureMap,格式为[feature:Long,id:Int]。
4.根据权利要求3所述的一种spark下的机器学习快速大规模样本签名方法,其特征在于,所述3)设置最大广播数量,根据最大广播数量计算FeatureMap的分区partition,具体包括步骤:设置最大广播数量,然后根据最大广播数量,设置最大不超过这个最大广播数量的分区大小,并计算得到FeatureMap的分区partition,其格式如下:[feature:Long,id:Int,part:int]。
5.根据权利要求4所述的一种spark下的机器学习快速大规模样本签名方法,其特征在于,所述步骤4)根据FeatureMap的分区partition数量进行循环迭代,分片广播大量特征,具体包括:在每一轮的广播中,样本根据该FeatureMap去索引对应特征的编码,然后进行替换,具体操作为,遍历FeatureMap,每个特征都有其对应的一开始编好的哈希值,样本根据这个哈希值查找到对应样本位置,在该列进行操作,删除样本中features中对应的特征,并将编码插入到ids中;每一轮遍历FeatureMap后,结束当前广播并释放该FeatureMap,然后进入下一轮广播,直到所有FeatureMap遍历结束,以此通过一次数据扫描,即可完成ID化写入磁盘的操作。