一种搭建个性化推荐引擎的人工智能算法模型的制作方法

文档序号:11276544阅读:215来源:国知局
本发明属于互联网
技术领域
:,尤其涉及一种搭建个性化推荐引擎的人工智能算法模型.
背景技术
::目前有些渠道广告位数量很多,而且其中大部分的广告位数据量很稀疏。对这些长尾的广告进行模型学习,实际效果不稳定的问题。参考优库渠道的合并广告位方式,我们可以考虑一种“聚合”广告位的方式,对于相似广告位可以聚合统计数据和共享模型参数,对于有差异的广告位又可以区分数据进行训练。参考mixturegaussian(混合高斯分布)和topicmodel(主题模型)的一些概念,我们可以构建多个逻辑回归模型,并引入隐变量z服从多项分布,指定样本隶属于哪个逻辑回归模型。技术实现要素:本发明的目的在于提供一种搭建个性化推荐引擎的人工智能算法模型,以解决上述
背景技术
:中提出的问题。本发明的目的是通过下述技术方案予以实现:一种搭建个性化引擎推荐的人工智能算法模型,所述搭建个性化推荐引擎的人工智能算法模型的逻辑回归通过线性加权和sigmoid变换预估目标事件的发生概率,搭建个性化推荐引擎的人工智能算法模型的特征的聚合方式和训练数据的生成方法,包括以下步骤:1)特征的聚合方式特征聚合的方法为基于绝对值的聚合的方法,我们设定一些绝对值区间,根据点击率或注册率把特征聚合到相应的区间;考虑到特征的点击率或注册率的分布,我们设定在值较小的区域;考虑对点击率或者注册率作指数变换也能达到“在值较小的区域,划分区间也较小”的效果,指数变换描述如下:x_i是特征i的点击率或者注册率,y_i是变换结果,考虑基于排序的方法,设定y_i为排序比率:rank_i/n;我们计算alpha的值:以10008渠道的数据为例,对点击率特征计算alpha=0.22,对注册率特征计算alpha=0.5;我们对变换后y_i进行整数化,实现特征聚合:由于alpha是基于排序估计出来的,y_i在[0,1]之间的分布较为均匀,因此m的设定也和聚合后的特征数也比较接近;我们设定点击率模型的m=1000,注册率模型的m=500;2)代码流程get_alpha.py计算和测试上述的指数变换参数alpha,输入:行分割的0~1之间的浮点数,输出:输入数据经过指数变换后在100个分桶的计数分布,以及alpha值,ctr_feature_stat.sh修改analysis_cross_features任务使用脚本为analysis_cross_features_alpha.py或analysis_cross_features_share_param.py,以及相关的配置,例如:analysis_ctr.10008.confrun_all.sh/run_rgr_all.sh指定online标志位(第二个参数)即进行模型增量更新:ctr_features_stat.sh读入配置文件ctr_online_features指定的增量训练数据(保证负样本采样率和原来数据一致),并生成新的mappingtablecal_features.sh读入上述的增量训练数据,并生成增量训练样本;train_model.local.sh读入增量训练样本和目前的模型参数,并作增量训练,生成新的ctrmappingtable等。进一步的,所述的搭建个性化引擎的智能算法模型的线上样品特征缺失的处理方式,包括以下几种:解决方案1:最初使用的方案,通过复制一定比例的样品,然后将特征值设为-1,来作为没有特征时该特征的参数,可以较好地解决这个问题;解决方案2:在初始化模型时,将模型的常数项直接取对应样品统计平均值的参数,使得模型的基准值变为更合理的统计平均值,这样在缺失特征时,模型也就是回归到统计平均值,同样可以解决这个问题;解决方案3:使用解决方案2确定常数项,同时复制样品并且随机抛弃特征或者使用解决方案1设-1值。本发明的有益效果是:1、快速统计分析查询:indexr使用列式存储,对于超大量数据集,它提供高效的索引,通过过滤掉无关数据,快速定位有效数据,减少io。它使用了优秀的apachdrill作为上层查询引擎。特别适合于ad-hoc的olap查询。2、数据实时导入:indexr支持超高速实时导入数据。数据一到达indexr节点,立刻可以被查询到。实时数据和历史数据可以一起查,再也不需要考虑所谓t+1架构。且区分于其他有类似功能的系统,indexr永远不会主动丢弃任何数据。3、高效硬件利用率:相较于其他系统,indexr可以跑在廉价的机器上。不需要昂贵的ssd硬盘,高端cpu,甚至小型机,你就可以获得非常好的性能,虽然在上面跑会更加快。虽然跑在jvm上,它手动管理几乎所有的内存,使用经过高度设计、紧凑的数据结构。4、集群高可用,易扩展,易管理,简单:分布式系统发展到现在,高可用和扩展性已经是标配了。indexr的特点是结构非常简单可靠,且只有极少的必须配置项。5、与hadoop生态的深度整合:indexr把数据存放于hdfs。这意味着你可以使用mapreduce,或者任何hadoop工具处理这些文件。我们目前提供了hive插件,用于各种etl相关工作,或者跑离线任务。对接spark的工作正在进行,将被使用于数据挖掘以及机器学习。6、高度压缩的数据格式:indexr以列式存储,并提供超高的压缩率,可以显著的减少io以及网络开销。7、方便的数据管理:indexr可以方便的导入、删除数据,并且支持修改表schema,如对列的添加、删除、修改等。具体实施方式具体实施例一种搭建个性化推荐引擎的人工智能算法模型,包括:其特征在于,其逻辑回归通过线性加权和sigmoid变换预估目标事件的发生概率:1)模型描述其中,y是目标变量取值{0,1},x是特征向量,w是模型参数。我们引入隐变量z,样本x对模型z的隶属度(softmax),以及对应的模型参数w_z:2)模型训练由于引入了隐变量,我们使用em算法来训练模型。对于数据集,模型的对数似然函数如下:对于em算法的e-step,我们要让上述最后的不等式的等式状态成立,即让log后面的部分成为一个常数:其中,p(y,z|x;w)的定义如下:p(y,z|x;w)=p(y|x,z;w)p(z|x;w)w={wz,φz}对于em算法的m-step,我们调整w,最大化似然函数的下界:3)mixturelogisticregression我们把mixturelogisticregression算法归纳如下,其中m-step的优化可以使用随机梯度下降,甚至可以考虑基于ftrl的随机梯度下降(修改其中的梯度计算方式):e-srep:foreachi,j:m-step:foreachi,j:反复执行e-step和m-step直到收敛;为了避免同步更新,最好随机初始化\phi,不然每个逻辑回归所学的参数会是一样的;由于引入了隐变量,似然函数可能不是凸函数,这个模型可能会陷入局部最优,可能需要多次训练模型并作评估。所述的搭建个性化引擎的智能算法模型的特征的聚合方式和训练数据的生成方法,包括以下步骤:1)特征聚合原来的特征聚合是基于排序的,即给定父特征,其下的子特征根据点击率或注册率大小排序,再把它们均匀聚合到若干个分桶;这样聚合的条件是每天都有变动的,因此聚合后的新特征的物理意义也是不同的;然而,增量学习在昨天的训练结果基础上,加入当天的新样本继续进行训练,要求聚合后的特征物理意义不变;我们把特征聚合的方法改为基于绝对值的,我们设定一些绝对值区间,根据点击率或注册率把特征聚合到相应的区间;考虑到特征的点击率或注册率的分布,我们设定在值较小的区域,划分区间也较小;经过试验,这种方式对效果没有明显影响;考虑对点击率或者注册率作指数变换也能达到“在值较小的区域,划分区间也较小”的效果,指数变换描述如下:x_i是特征i的点击率或者注册率,y_i是变换结果,考虑基于排序的方法,设定y_i为排序比率:rank_i/n;我们计算alpha的值:以10008渠道的数据为例,对点击率特征计算alpha=0.22,对注册率特征计算alpha=0.5;我们对变换后y_i进行整数化,实现特征聚合:由于alpha是基于排序估计出来的,y_i在[0,1]之间的分布较为均匀,因此m的设定也和聚合后的特征数也比较接近;我们设定点击率模型的m=1000,注册率模型的m=500;2)代码流程get_alpha.py计算和测试上述的指数变换参数alpha,输入:行分割的0~1之间的浮点数,输出:输入数据经过指数变换后在100个分桶的计数分布,以及alpha值ctr_feature_stat.sh修改analysis_cross_features任务使用脚本为analysis_cross_features_alpha.py或analysis_cross_features_share_param.py,以及相关的配置,例如:analysis_ctr.10008.confrun_all.sh/run_rgr_all.sh指定online标志位(第二个参数)即进行模型增量更新:ctr_features_stat.sh读入配置文件ctr_online_features指定的增量训练数据(保证负样本采样率和原来数据一致),并生成新的mappingtablecal_features.sh读入上述的增量训练数据,并生成增量训练样本train_model.local.sh读入增量训练样本和目前的模型参数,并作增量训练,生成新的ctrmappingtable等。在线上使用lr模型的时候预估点击注册率时,由于模型是由历史数据训练的,当线上当天出现新的特征,如提交一个新的创意包的时候,模型里并不存在对应该特征的参数,预估结果就会产生偏差。所述的搭建个性化引擎的智能算法模型的线上样品特征缺失的处理方式,包括以下几种:解决方案1:最初使用的方案,通过复制一定比例的样品,然后将特征值设为-1,来作为没有特征时该特征的参数,可以较好地解决这个问题;缺点:需要对样品进行额外的处理;在特征稀疏时,复制少量的样品很容易偏离原来的统计分布;可以在复制样品时直接抛弃特征而不需要增加-1值解决方案2:在初始化模型时,将模型的常数项直接取对应样品统计平均值的参数,使得模型的基准值变为更合理的统计平均值,这样在缺失特征时,模型也就是回归到统计平均值,同样可以解决这个问题;优点:相比方案1,可以收敛得到物理意义合理的参数,因为常数项直接对应样品统计平均;不需要对样品进行特殊处理缺点:其它特征之间的共显关系,依然会使得参数收敛到不合理的值解决方案3:使用解决方案2确定常数项,同时复制样品并且随机抛弃特征或者使用解决方案1设-1值。线上冷启动目前,对于新活动(特征里是新sweetypackageid)我们使用样本的特征采样来解决:对于每个样本,以一定概率新建一个样本,但对其中的特征值修改为-1(表示新特征值);在线上系统遇到新活动,查找模型参数表,发现没有这个活动的模型参数,则修改该活动的特征值为-1,使用默认特征值对应的模型参数。这样相当于为新特征学习一个“平均”的参数,对于新活动我们用整体平均的状况来预估它未来一天的表现。对于新广告位,我们没有进行默认采样,不予打分。对于线上的在线学习,新活动在一天内收集到一定的数据,可能在这天剩下时间内能给出这个新活动的预估值,比平均预估值要好(毕竟活动见的差异是比较大的)。可以参考业界讨论的explore/exploit的方法,用某种方式来平衡对新事物的探测和对旧事物的开发。业界把这个考虑为multi-armedbanditproblems:在一定的时间区间[1,...,t]内,每个时刻t可以选择一项行动a,并获得相应的收益r(a,t),目标是使得总收益最大。目前较流行的方法是ucb(upperconfidentbound),即每次选择可能最大收益(可能是预估值+预估值方差)的行动。这样通过牺牲一些短期收益作探测,追求最大的整体收益。具体来说,竞价请求来时,我们对估计候选活动的ecpm及其上界,选取最大ecpm上界的活动进行投放(出价可能还是按ecpm出)。新活动来的ecpm上界可能会比较高,能获得展示机会;当获得的反馈足够多,它的ecpm的方差减少,上界也会接近ecpm,即按其真实价值获得展现机会。我们使用的ftrl逻辑回归,可以通过训练过程的统计量估计方差和上界,方便ucb方法的实现。explore/exploit问题也有对应的评估方法,不过要收集一定的随机数据。特征合并merge文件,对于意义相同的特征,需要将它们映射为同一个值,因此ctrmodel里面会使用merge文件(/usr/local/services/dsp_miner_ctr_rgr_model/train/conf/*.merge)特征合并目前主要有三个情况:节假日:目前会将节假日映射为一个特征holidays.merge,是节日则为1相同广告位:目前优酷的资源分为三个渠道(10008、10022、10060),这些渠道里的广告位id虽然不同,但位置是相同的,因此训练时希望将它们的数据合并。目前是在算法参数配置页面(参见)进行设置,在训练模型时将数据转化为merge文件创意包合并:不同的创意包可能实际上是相同的创意,所以会对创意包内容进行md5,合并映射之后处理成package.merge。目前是在stat_rate项目里定时调用合并程序,并在凌晨更新这个文件,参看stat_rate项目的bin/group_package.sh。实验例以给用户打游戏产品id标签为例子,假设下述的游戏为页游游戏。1.先明确打标签的输出结果的格式:userid->[gameid1,gameid2,gameid3,...]2.每个页游游戏都有官网,广告有落地页,游戏类型(策略型、动作类、传奇类、美女类等)3.对于用户,假设有用户喜欢的游戏类型(别的团队产出的数据)4.此外,我们可以收集这些数据:在游戏落地页停留时间:短暂,中等,长久;游戏落地页浏览次数;游戏主题官网主页访问次数;游戏注册/登陆次数,5.每个动作都有发生时间,分为7个时间窗口:1天以内,1-3天,3-7天,7-15天,15-30天,30-60天,60-90天,6.把用户在游戏上的动作、发生的时间以及用户喜欢的游戏类型是否跟游戏类型匹配,构造成一个特征向量,可得到:userid_game->[feature1,feature2,feature3,...]7.通过查看每个userid随后一天在每个游戏(官网)上的pv以及click得到每个特征向量的目标值,即点击率8.将去掉label、cookie、gameid后的特征向量汇总,将具有相同行为特征的向量进行合并,进而降低训练样本的数量。最终得到的训练样本数据格式如下:featurelist(由维度id组成,:分隔)、点击率(点击数/总pv数)9.把训练样本数据输入到机器学习算法,会产出一个算法模型;10.预测:i.预测userid对于gameid的ctr(感兴趣程度):把userid在gameid上的行为列表构造一个跟训练样本一样格式的特征向量,把特征输入模型,模型会算出一个ctr数值;ii.按ctr从高到底排序,选出topn个gameid,作为用户感兴趣的游戏标签。直观模型和数学解释简单考虑只有一个特征的模型,比如性别。模型具有常数项参数,设为c;由于性别是离散特征,所以实际上有两个不会同时出现的特征g1,g2设不同的性别各有1000个样品,正例分别47个和17个,对应的点击率为0.047和0.017,对应的权重为-3和-4,那么训练得到的模型参数应该满足如下关系c+g1=-3c+g2=-4显然有无数个解可以满足,由于训练的初始值一般设为0,因此收敛时得到的参数都相对接近0,比如c=-1,g1=-2,g2=-3当性别特征缺失时,只有常数项c,得到的点击率为0.268,远高于实际情况,倾向于接近原始基准值0.5应用解决方案1随机复制一部分样品,将其性别特征设为g-1,如果复制的比例足够大,这部分样品的分布应该跟总体分布一致,点击率为0.032,对应权重-3.4因此训练之后的模型应该满足c+g-1=-3.4c+g1=-3c+g2=-4此时其实依然有无数个解可以满足,但是当特征缺失时,取特征为g-1,则可以满足总体平均分布应用解决方案2直接根据样品全局分布设定常数项c=-3.4,则训练后的模型满足-3.4+g1=-3-3.4+g2=-4解得g1=0.4,g2=-0.6,此时各个参数有唯一值,且具有合理的意义,c代表统计样品的基准值,g1和g2表示不同的特征在基准之上的影响依旧存在的问题:当具有多个特征时,不完全的组合依旧会影响参数,如增加一个特征f,两个可能值f1和f2,训练得到的模型需要满足c+g1+f1=w1c+g1+f2=w2c+g2+f1=w3c+g2+f2=w4此时如果c可以事先确定,依然有唯一解。但在现实情况下,特征g和特征f的全部组合情况未必能全部在样品里出现,则模型依旧没有唯一解,特征缺失仍然会带来影响。不过由于样品的总体分布(常数项c)已经确定,其贡献是主要的,其余特征是在总体分布上的加权,此时特征缺失影响较小。应用解决方案3根据方案2得到c=-3.4复制部分样品,模型满足c=-3.4或者c+g-1=-3.4c+g1=-3c+g2=-4直接可以得到合理且唯一的参数解,当然对于多特征的情况,最后得到的条件是无解的,这是因为lr本身基于线性假设,对于不满足线性的数据,不可能得到完美解答。此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1