本发明涉及计算机处理技术领域,尤其涉及一种广告投放方法及装置。
背景技术:
随着互联网技术的发展,通过互联网获取产品信息成为人们生活的一部分。
商家为了提高知名度,推广产品,往往通过互联网投放广告。通常有两种方式,一种是通过自然搜索的方式,另一种是通过竞争推广的方式。第一种方式竞争比较激烈,优化周期较长,因此,很多商家会选择更加快捷的第二种方式。
竞争推广是一个多方参与的博弈系统,包括:
广告主的利益(产出投入比,ROI);网络用户/搜索引擎的利益(用户体验,尽量少广告,尽量高的点击率,CTR);广告平台的利益(广告收入)。
业内进行广告投放时,都是使用了基于广告点击率预估的方法对广告进行排序。大多采用LR(Logistic Regression,逻辑回归)模型和FM(Factorization Machines)模型,其中:
LR模型是一个简单的线性模型,不能直接建立特征之间的相关性;需要通过耗时耗力的特征工程(对某些特征聚类等等)对样本进行处理才能预估点击率;特征直接相关容易造成数据稀疏和模型过拟合(数据长尾性),从而导致点击率预估准确度降低。
FM模型中有些特征相关是浪费的,降低了模型的拟合能力;计算速度相比LR模型要慢很多。
由于基于LR模型点击率预估准确率较低,导致排序的效果较差,会使得能满足用户需求的产品信息的排序很低,使得其展示的位置靠后,甚至无法展示;而FM模型速度过慢,不适于商业应用,导致以下问题:
一方面,这些不匹配用户需求的产品信息不仅占用了平台服务器的资源,而且还占用了客户端的资源,造成不必要的资源占用与浪费。
另一方面,用户需要获取自己感兴趣的产品信息,可能需要进行多次翻页操作,甚至再次去其他平台进行搜索,再次进行海量信息的搜索、对比、筛选等获取相关的产品信息,操作更加繁琐,耗费用户的时间,降低用户的使用体验,而且,将大大增加其他平台服务器和客户端的资源消耗。
因此,需要提高CTR预估准确率,以让所有参与方受益。
技术实现要素:
鉴于上述问题,提出了本发明以便提供一种广告投放方法和装置,以克服上述问题或者至少部分地解决或者减缓上述问题的缺点。
根据本发明的一个方面,提供了一种广告投放方法,包括以下步骤:
从群体用户历史搜索记录中获取广告点击率特征参数;
对所述广告点击率特征参数进行分类,得到多个特征分组;
对所述多个特征组进行因子分解,获得分组因子分解模型;
对所述分组因子分解模型进行迭代,获得预估广告点击率;
根据预估广告点击率,进行广告投放。
可选地,所述从群体用户历史搜索记录中获取广告点击率特征参数包括:
对群体用户历史搜索记录中的非点击广告数据进行采样;
从采样后的群体用户历史搜索记录中获取广告点击率特征参数。
可选地,所述采样后的群体用户历史搜索记录包括:
未采样的点击广告数据和采样的非点击广告数据的全体用户历史搜索记录。
可选地,所述对所述特征参数进行分类,得到多个特征分组包括:
计算每个广告点击率特征参数与其他广告点击率特征参数的相关系数;
根据获取的广告点击率特征参数与其他广告点击率特征参数的相关系数,对广告点击率特征参数进行分类。
可选地,所述根据获取的广告点击率特征参数与其他广告点击率特征参数的相关系数,对广告点击率特征参数进行分类包括:
计算每个广告点击率特征参数与其他广告点击率特征参数的相关系数和;
如所述相关系数和小于设定值,将其单独划分为一个特征分组;
如所述相关系数和大于设定值,将其与其他广告点击率特征参数划分为同一个特征分组。
可选地,所述对所述多个特征组进行因子分解,获得分组因子分解模型包括:
对多个特征组与筛选分组进行因子分解,获得分组因子分解模型;其中,所述筛选分组为不涉及相关性的特征参数。
可选地,所述对所述分组因子分解模型进行迭代,获得预估广告点击率包括:
对分组因子分解模型采用FTRL方式进行迭代。
可选地,所述根据预估广告点击率,进行广告投放包括:
对预估广告点击率进行校准,校准方法如下:校准后点击率=预估点击率/(预估点击率+(1-预估点击率)/采样率)。
根据本发明的另一个方面,提供了一种广告投放装置,包括:特征参数获取模块、特征分类模块、特征因子分解模块、点击率预估模块和广告投放模块,其中,
所述特征参数获取模块用于从群体用户历史搜索记录中获取广告点击率特征参数;
所述特征分类模块用于对所述广告点击率特征参数进行分类,得到多个特征分组;
所述特征因子分解模块用于对所述多个特征组进行因子分解,获得分组因子分解模型;
所述点击率预估模块用于对所述分组因子分解模型进行迭代,获 得预估广点击率;
所述广告投放模块用于根据预估广告点击率,进行广告投放。
可选地,所述特征参数获取模块还用于:
对群体用户历史搜索记录中的非点击广告数据进行采样;
从采样后的群体用户历史搜索记录中获取广告点击率特征参数。
可选地,所述采样后的群体用户历史搜索记录包括:
未采样的点击广告数据和采样的非点击广告数据的全体用户历史搜索记录。
可选地,所述特征分类模块还用于:
计算每个广告点击率特征参数与其他广告点击率特征参数的相关系数;
根据获取的广告点击率特征参数与其他广告点击率特征参数的相关系数,对广告点击率特征参数进行分类。
可选地,所述特征分类模块还用于:
计算每个广告点击率特征参数与其他广告点击率特征参数的相关系数和;
如所述相关系数和小于设定值,将其单独划分为一个特征分组;
如所述相关系数和大于设定值,将其与其他广告点击率特征参数划分为同一个特征分组。
可选地,所述特征因子分解模块还用于:
对多个特征组与筛选分组进行因子分解,获得分组因子分解模型;其中,所述筛选分组为不涉及相关性的特征参数。
可选地,点击率预估模块采用FTRL方式进行迭代,得到分组因子分解模型。
可选地,所述广告投放模块还用于:
对预估广告点击率进行校准,校准方法如下:校准后点击率=预估点击率/(预估点击率+(1-预估点击率)/采样率)。
本发明的有益效果为:
本发明广告投放方法及装置,通过对广告特征参数之间的相关关 系进行分类,训练模型参数,降低了训练的计算量,同时使得模型更容易收敛,提高了预估点击率。根据所述预估点击率对业务对象进行展示,提高了满足用户需求的业务对象的展示几率,避免用户多次翻页操作或者去其他平台进行搜索,提高了操作的简便性,减少用户时间的耗费,提高用户体验,增加用户使用满意度。降低了服务器、客户端的资源占用与浪费。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示意性示出了根据本发明一个实施例的广告投放方法的流程图;
图2示意性示出了根据本发明一个实施例的获取广告点击率特征参数的流程图;
图3示意性示出了根据本发明一个实施例的对特征参数进行分类的流程图;
图4示意性示出了根据本发明一个实施例的广告投放装置的示意图。
具体实施例
下面结合附图和具体的实施方式对本发明公开的示例性实施例作进一步的描述。
如图1所示,根据本发明一个实施例的,具体可以包括以下步骤:
步骤101,从群体用户历史搜索记录中获取广告点击率特征参数。
本发明实施例可以应用与网络平台,为独立的服务器或服务器集群,如分布式系统,存储了海量的广告数据。
在实际应用中,用户通过浏览器提供的搜索栏输入搜索词;浏览器将所述搜索词封装到搜索请求中发送给搜索引擎;搜索引擎根据所述搜索词在数据库中进行搜索,如搜索与所述关键词相关的广告数据;根据预估点击率对所述广告数据进行排序;在浏览器的页面中向用户展示排序靠前的预定数量广告数据。
上述搜索过程被记录在群体用户历史搜索记录中,并且包括广告点击率特征参数,所述广告点击率特征参数可包括广告特征参数和用户特征参数,所述广告特征参数可包括广告ID、文字、图片、类别等;所述用户特征参数可包括用户ID、性别、年龄、IP地址、用户搜索词等。
由于点击率总体很小(百分之几),而本发明实施例更关心的是展现后是否被点击,点击相对非点击对模型的训练更重要。所以可以对非点击进行采样,采样后对模型的预测效果影响很小,但是可以大量减少训练集的数据量,通过减少数据量进而减少计算量,降低了系统资源消耗,加快了运算速度,如采样10%,则可加速近10倍。
如图2所示,在一个实施中,步骤101可以包括以下子步骤:
步骤1011,对群体用户历史搜索记录中的非点击广告数据进行采样;
步骤1012,从采样后的群体用户历史搜索记录中获取广告点击率特征参数,其中,所述采样后的群体用户历史搜索记录包括未采样的点击广告数据和采样的非点击广告数据的全体用户历史搜索记录。
由于所述广告点击率特征参数都是人为的逻辑表达,因此,获取广告点击率特征参数之后,需要对其进行特征学习(Feature Learning),作为模型训练的输入向量。
特征学习作为机器学习的组成部分,主要用于对数据的特征进行理解,从而帮助建立更好的模型。特征学习主要包括特征规整(Feature Normalization)和类属特征转换。特征规整负责将一些特征进行归一化处理,以方便比较。类属特征转换负责将特征参数转换为可被机器识别的数值。实现类属特征转换最常见的方法是利用独热编码(One-Hot Coding)进行向量化。使用独热编码将所述广告点击率特征参数转换为可被机器识别的数值,作为下一步训练模型的输入向量。
步骤102,对所述特征参数进行分类,得到多个特征分组。
具体地,如图3所示,根据步骤101获取的广告点击率特征参数的相关性,对所述广告点击率特征参数进行分类,得到多个特征分组;包括以下子步骤:
步骤1021,计算每个广告点击率特征参数与其他广告点击率特征参数的相关系数;两种广告点击率特征参数的相关系数越大,代表其相关性越高;
步骤1022,根据步骤1021获取的广告点击率特征参数与其他广告点击率特征参数的相关系数,对广告点击率特征参数进行分类;具体包括:
计算每个广告点击率特征参数与其他广告点击率特征参数的相关系数和;
如所述相关系数和小于设定值,则认为该广告点击率特征参数与其他广告点击率特征参数相关性较差,即该广告点击率特征参数对广告点击率特征的显著性较强,因此将其单独划分为一个特征分组;
如所述相关系数和大于设定值,则认为该广告点击率特征参数与其他广告点击率特征参数相关性较强,即该广告点击率特征参数对广告点击率特征的显著性较差,因此将相关系数和大于设定值的广告点击率特征参数与其他广告点击率特征参数划分为同一个特征分组。
步骤103,对步骤102得到的多个特征组与筛选分组进行因子分解,获得分组因子分解模型。
其中,所述筛选分组为不涉及相关性的特征参数,例如,广告数据的展示位置等。
本发明实施例是基于分组进行因子分解,重新定义并推导(导数)FM模型,得到了GFM(Group Factorization Machines,分组因子分解 机)分组因子分解模型,示例如下:
其中,W为需要训练模型参数,x为特征数据的向量。W0为筛选分组的模型参数,x0为筛选分组的特征数据的向量,G为特征分组的数量,则Wi为第i组特征分组的模型参数,Xi为第i组特征分组的特征数据的向量,Wj为第j组特征分组的模型参数,Xj为第j组特征分组的特征数据的向量。
步骤104,对所述分组因子分解模型进行迭代,收敛后的结果即为预估广告点击率。
在本实施例中,采用SGD(Stochastic Gradient Descent,随即梯度下降)优化方法对分组因子分解模型进行迭代。
为了提高迭代的收敛速度,可以对分组因子分解模型进行采用FTRL(Follow-the-Regularized-Leader)方式进行迭代。
为了对GFM进行优化求解,计算其导数:
其中,yn表征第n个特征数据是否被点击,xn是第n个特征数据的向量,λ为常量,
,
得到GFM的导数后,根据SGD优化方法更新参数,其中,SGD 更新的公式的示例如下:
其中,α为SGD中设定的模型参数的学习率。
除了SGD之外,还可以应用其他方式进行迭代,如GD(梯度下降)、共轭梯度法等其他一阶优化方式,如牛顿法等二阶优化方式,等等,本发明实施例对此不加以限制。也可以采用其他神经网络算法进行迭代。
在具体实现中,本发明实施例可以通过以下的一种或多种方式加快迭代速度:
1、采用多线程异步加速技术。在本实施例中,同时使用多个线程异步处理W,由于训练集本身的特性,即特征数据的向量是稀疏的,所以在进行了数据打乱顺序之后,两个线程同时更新同一个模型参数的概率就大大降低,因而训练的收敛速度不会受到太大影响,12个线程可加速近7至8倍。
2、采用负例采样技术,由于点击率总体很小(百分之几),点击相对非点击对模型的训练更重要,所以可以对非点击进行采样,如采样10%,则可加速近10倍。
3、采用预设的指令集对迭代操作进行向量化加速。由于GFM模型中含有大量的向量计算,本实施例中可以采用AVX指令集对操作进行向量化,一条AVX指令可同时操作8个float数,加速5倍多。
4、采用pipeline模型,数据读取和模型训练同步进行,充分利用磁盘I/O和CPU资源,减少IO时间。
当然,上述迭代方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他迭代方式,以加快迭代速度,本发明实施例对此不加以限制。另外,除了上述迭代方式外,本领域技术人员还可以根据实际需要采用其它迭代方式,本发明实施例对此也不加以限制。
通过上述方式加快迭代速度,可以在短时间(如一个小时)内对 较长时间(如70天)采样10%后得到的每天约2000万样本,模型参数6亿的数据进行训练,符合线上模型的时效性要求。
步骤105,根据步骤104输出的预估广告点击率,进行广告投放。
需要注意的是,由于本实施例中对群体用户历史搜索记录中的非点击广告数据进行采样后会导致模型预估的点击率变大,需要对其进行校准,校准方法如下:校准后点击率=预估点击率/(预估点击率+(1-预估点击率)/采样率)。
如图4所示,根据本发明一个实施例的一种广告投放装置,包括:特征参数获取模块、特征分类模块、特征因子分解模块、点击率预估模块和广告投放模块。
所述特征参数获取模块用于从群体用户历史搜索记录中获取广告点击率特征参数。
本发明实施例可以应用与网络平台,为独立的服务器或服务器集群,如分布式系统,存储了海量的广告数据。
在实际应用中,用户通过浏览器提供的搜索栏输入搜索词;浏览器将所述搜索词封装到搜索请求中发送给搜索引擎;搜索引擎根据所述搜索词在数据库中进行搜索,如搜索与所述关键词相关的广告数据;根据预估点击率对所述广告数据进行排序;在浏览器的页面中向用户展示排序靠前的预定数量广告数据。
上述搜索过程被记录在群体用户历史搜索记录中,并且包括广告点击率特征参数,所述广告点击率特征参数可包括广告特征参数和用户特征参数,所述广告特征参数可包括广告ID、文字、图片、类别等;所述用户特征参数可包括用户ID、性别、年龄、IP地址、用户搜索词等。
由于点击率总体很小(百分之几),而本发明实施例更关心的是展现后是否被点击,点击相对非点击对模型的训练更重要。所以可以对非点击进行采样,采样后对模型的预测效果影响很小,但是可以大量减少训练集的数据量,通过减少数据量进而减少计算量,降低了系统资源消耗,加快了运算速度,如采样10%,则可加速近10倍。
在一个实施中,所述特征参数获取模块还用于:
对群体用户历史搜索记录中的非点击广告数据进行采样;
从采样后的群体用户历史搜索记录中获取广告点击率特征参数,其中,所述采样后的群体用户历史搜索记录包括未采样的点击广告数据和采样的非点击广告数据的全体用户历史搜索记录。
由于所述广告点击率特征参数都是人为的逻辑表达,因此,获取广告点击率特征参数之后,需要对其进行特征学习(Feature Learning),作为模型训练的输入向量。
特征学习作为机器学习的组成部分,主要用于对数据的特征进行理解,从而帮助建立更好的模型。特征学习主要包括特征规整(Feature Normalization)和类属特征转换。特征规整负责将一些特征进行归一化处理,以方便比较。类属特征转换负责将特征参数转换为可被机器识别的数值。实现类属特征转换最常见的方法是利用独热编码(One-Hot Coding)进行向量化。使用独热编码将所述广告点击率特征参数转换为可被机器识别的数值,作为下一步训练模型的输入向量。
所述特征分类模块用于对对所述特征参数进行分类,得到多个特征分组。
具体地,根据所述特征分类模块获取的广告点击率特征参数的相关性,对所述广告点击率特征参数进行分类,得到多个特征分组。
所述特征分类模块还用于:
计算每个广告点击率特征参数与其他广告点击率特征参数的相关系数;两种广告点击率特征参数的相关系数越大,代表其相关性越高;
根据获取的广告点击率特征参数与其他广告点击率特征参数的相关系数,对广告点击率特征参数进行分类;具体包括:
计算每个广告点击率特征参数与其他广告点击率特征参数的相关系数和;
如所述相关系数和小于设定值,则认为该广告点击率特征参数与其他广告点击率特征参数相关性较差,即该广告点击率特征参数对广告点击率特征的显著性较强,因此将其单独划分为一个特征分组;
如所述相关系数和大于设定值,则认为该广告点击率特征参数与 其他广告点击率特征参数相关性较强,即该广告点击率特征参数对广告点击率特征的显著性较差,因此将相关系数和大于设定值的广告点击率特征参数与其他广告点击率特征参数划分为同一个特征分组。
所述特征因子分解模块用于对得到的多个特征组与筛选分组进行因子分解,获得分组因子分解模型。
其中,所述筛选分组为不涉及相关性的特征参数,例如,广告数据的展示位置等。
本发明实施例是基于分组进行因子分解,重新定义并推导(导数)FM模型,得到了GFM(Group Factorization Machines,分组因子分解机)分组因子分解模型,示例如下:
其中,W为需要训练模型参数,x为特征数据的向量。W0为筛选分组的模型参数,x0为筛选分组的特征数据的向量,G为特征分组的数量,则Wi为第i组特征分组的模型参数,Xi为第i组特征分组的特征数据的向量,Wj为第j组特征分组的模型参数,Xj为第j组特征分组的特征数据的向量。
所述点击率预估模块用于对所述分组因子分解模型进行迭代,收敛后的结果即为预估广告点击率。
在本实施例中,采用SGD(Stochastic Gradient Descent,随即梯度下降)优化方法对分组因子分解模型进行迭代。
为了提高迭代的收敛速度,可以对分组因子分解模型进行采用FTRL(Follow-the-Regularized-Leader)方式进行迭代。
为了对GFM进行优化求解,计算其导数:
其中,yn表征第n个特征数据是否被点击,xn是第n个特征数据的向量,λ为常量,
,
得到GFM的导数后,根据SGD优化方法更新参数,其中,SGD更新的公式的示例如下:
其中,α为SGD中设定的模型参数的学习率。
除了SGD之外,还可以应用其他方式进行迭代,如GD(梯度下降)、共轭梯度法等其他一阶优化方式,如牛顿法等二阶优化方式,等等,本发明实施例对此不加以限制。也可以采用其他神经网络算法进行迭代。
在具体实现中,本发明实施例可以通过以下的一种或多种方式加快迭代速度:
1、采用多线程异步加速技术。在本实施例中,同时使用多个线程异步处理W,由于训练集本身的特性,即特征数据的向量是稀疏的,所以在进行了数据打乱顺序之后,两个线程同时更新同一个模型参数 的概率就大大降低,因而训练的收敛速度不会受到太大影响,12个线程可加速近7至8倍。
2、采用负例采样技术,由于点击率总体很小(百分之几),点击相对非点击对模型的训练更重要,所以可以对非点击进行采样,如采样10%,则可加速近10倍。
3、采用预设的指令集对迭代操作进行向量化加速。由于GFM模型中含有大量的向量计算,本实施例中可以采用AVX指令集对操作进行向量化,一条AVX指令可同时操作8个float数,加速5倍多。
4、采用pipeline模型,数据读取和模型训练同步进行,充分利用磁盘I/O和CPU资源,减少IO时间。
当然,上述迭代方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他迭代方式,以加快迭代速度,本发明实施例对此不加以限制。另外,除了上述迭代方式外,本领域技术人员还可以根据实际需要采用其它迭代方式,本发明实施例对此也不加以限制。
通过上述方式加快迭代速度,可以在短时间(如一个小时)内对较长时间(如70天)采样10%后得到的每天约2000万样本,模型参数6亿的数据进行训练,符合线上模型的时效性要求。
所述广告投放模块用于根据所述点击率预估模块输出的预估广告点击率,进行广告投放。
需要注意的是,由于本实施例中对群体用户历史搜索记录中的非点击广告数据进行采样后会导致模型预估的点击率变大,需要对其进行校准,校准方法如下:校准后点击率=预估点击率/(预估点击率+(1-预估点击率)/采样率)。
具体而言,本发明实施例的广告投放方法及装置,通过对广告特征参数之间的相关关系进行分类,训练模型参数,降低了训练的计算量,同时使得模型更容易收敛,提高了预估点击率。根据所述预估点击率对业务对象进行展示,提高了满足用户需求的业务对象的展示几率,避免用户多次翻页操作或者去其他平台进行搜索,提高了操作的简便性,减少用户时间的耗费,提高用户体验,增加用户使用满意度。降低了服务器、客户端的资源占用与浪费。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的广告投放装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本文中所称的“一个实施例”、“实施例”或者“一个或者多个实施例”意味着,结合实施例描述的特定特征、结构或者特性包括在本发明的至少一个实施例中。此外,请注意,这里“在一个实施例中”的词语例子不一定全指同一个实施例。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
此外,还应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本 技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。