加入收藏 | 设为首页 | 会员中心 | 我要投稿 揭阳站长网 (https://www.0663zz.cn/)- 机器学习、行业智能、决策智能、云计算、AI应用!
当前位置: 首页 > 大数据 > 正文

如何用机器研究模型,为十几亿数据预测性别

发布时间:2021-06-05 09:48:47 所属栏目:大数据 来源:互联网
导读:基于用户画像进行广告投放,是优化投放效果、实现精准营销的基础;而人口属性中的性别、年龄等标签,又是用户画像中的基础信息。那该如何尽量准确的为数据打上这些标签? 这时候机器学习就派上用场了。本文将以性别标签为例,介绍人口属性标签预测的机器学习模
基于用户画像进行广告投放,是优化投放效果、实现精准营销的基础;而人口属性中的性别、年龄等标签,又是用户画像中的基础信息。那该如何尽量准确的为数据打上这些标签?
这时候机器学习就派上用场了。本文将以性别标签为例,介绍人口属性标签预测的机器学习模型构建与优化。
性别标签预测流程
通常情况下,无监督学习不仅很难学习到有用信息,而且对于学习到的效果较难评估。所以,如果可以,我们会尽可能地把问题转化成有监督学习。
对于性别标签也是如此,我们可以使用可信的性别样本数据,加上从TalkingData收集的原始数据中提取出来的有用信息,将性别标签的生产任务转化成有监督机器学习任务。更具体来说,男/女分别作为1/0标签(Label,也就是常说的Y值,为了方便表达,我们标记男/女分别为1/0标签),这样性别标签的任务就转化成了二分类任务。
性别标签的生产流程图如下:
如何用机器学习模型,为十几亿数据预测性别
简单来说,输入为具有可信性别信息的样本数据,以及从近期活跃的原始数据中提取出有用特征;
将两者join之后,得到可以直接用于建模的数据集;
基于该数据集进行建模,学习出性别预测模型;
再用该模型对全部样本进行预测,从而得到所有样本的性别打分。至此,模型部分的工作基本完成;
最后一步是确定阈值,输出男/女标签。这里我们不依赖模型确定阈值,而是借助比较可信的第三方工具,保证在期望准确度(precision)下,召回尽可能多的样本。
另外,面对TalkingData十几亿的数据体量,在标签生产的过程中,为了加速运算,除了必须用单机的情况下,我们都会优先采用Spark分布式来加速运算。
特征与模型方法的版本迭代
为了优化模型的效果,我们又对该性别标签预测模型进行了多次迭代。
01性别预测模型V1
模型最初使用的特征包括4个维度:设备应用信息、嵌入SDK的应用包名、嵌入SDK的应用内自定义事件日志以及设备机型信息。
模型采用Xgboost(版本为0.5),基于每个维度的特征分别训练模型,得到4个子模型。每个子模型会输出基于该特征维度的设备男/女倾向的打分,分值区间从0到1,分值高代表设备为男性倾向,反之则为女性倾向。模型代码示例如下:
<左右滑动查看完整代码>
import com.talkingdata.utils.LibSVM 
 import ml.dmlc.xgboost4j.scala.DMatrix 
 import ml.dmlc.xgboost4j.scala.spark.XGBoost//version 0.5 
 
 //train stage 
 val trainRDD = LibSVM.loadLibSVMFile(sc, trainPath)// sc为SparkContext 
 val model = XGBoost.train(trainRDD, paramMap, numRound, nWorkers = workers) 
 
 
 //predict stage 
 val testSet = LibSVM.loadLibSVMFilePred(sc,testPath,-1,sc.defaultMinPartitions) 
 val pred = testSet.map(_._2).mapPartitions{ iter => 
         model.value.predict(new DMatrix(iter)).map(_.head).toIterator 
     }.zip(testSet).map{case(pred, (tdid, feauture)) => 
         s"$tdidt$pred" 
     } 
缺点及优化方向:
模型为四个子模型的融合,结构较复杂,运行效率较低,考虑改为使用单一模型;
嵌入SDK的应用内自定义事件日志特征覆盖率低,且ETL处理资源消耗大,需重新评估该字段对模型的贡献程度;
发现设备名称字段看上去有男/女区分度——部分用户群体会以名字或者昵称命名设备名(例如带有“哥”“军”等字段的倾向为男性,带有“妹”“兰” 等字段的倾向为女性),验证效果并考虑是否加入该字段。
02性别预测模型V2
对模型使用特征的4个维度进行了调整,改为:嵌入SDK的应用包名、嵌入SDK的应用AppKey、设备机型信息以及设备名称。
其中,对嵌入SDK的应用包名和设备名称做分词处理。再使用CountVectorizer将以上4类特征处理成稀疏向量(Vector),同时用ChiSqSelector进行特征筛选。
模型采用LR(Logistic Regression)

(编辑:揭阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读