opencv2.4.9源码分析——SIFT
详细介绍SIFT算法,opencv的SIFT源码分析,以及应用实例SIFT算法进行了改进,通过对两个相邻高斯尺度空间的图像相减,得到个DoG(高斯差分,Difference of gaussians)的响应值图像Dx,y,σ)来近似LoGD(x,y, o)=(G(x,y, ko)-G(x,y,o)O1(x,y)=L(x,y, ko)-L(x,y,a(5)其中,k为两个相邻尺度空间倍数的常数。可以证明DoG是对LoG的近似表示,并且用DoG代替LoG并不影响对图像斑点位賀的检测。而且用DoG近似LoG可以实现下列好处:第一是LoG需要使用两个方向的高斯二阶微分卷积核,而DoG直接使用晑斯卷积核,省去了卷积核生成的运算量;第二是DoG保留了个高斯尺度空间的图像,因此在生成某一空间尺度的特征时,可以直接使用公式1(或公式3)产生的尺度空间图像,而无需重新再次生成该尺度的图像:第三是DoG具有与LoG相同的性质,即稳定性好、抗干扰能力强。为了在连续的尺度下检测图像的特征点,需要建立DoG金宇塔,而DoG金宁塔的建立又离不开髙斯金字塔的建立,如下图所小,左侧为高斯金字塔,右侧为DoG金字塔:(nextoctave)Scale(firstoctave)Difference ofaussianGaussian(DOG)图1高斯金字塔和DoG金字塔高斯金字塔共分O组( Octave),每组又分S层( Layer)。组内各层图像的分辨率是相同的,即长和宽相同,但尺度逐渐增加,即越往塔顶图像越模糊。而下·组的图像是由上组图像按照隔点降采样得到的,即图像的长和宽分别减半。高斯金字塔的组数O是由输入图像的分辨牽得到的,因为要进行隔点降采样,所以在执行降釆样生成高斯金字塔时,一直到不能降采样为止,但图像太小又亳无意义,因此具体的公式为:0=| log2 min(x,y)-2」(6)其中,X和Y分别为输入图像的长和宽,L」衣示向下取整。金字塔的层数S为:(7)LoWe建议s为3。需要注意的是,除了公式7中的第一个字母是大写的S外,后面出现的都是小写的s髙斯金字塔的创建是这样的:设输入图像的尺度为0.5,由该图像得到高斯金字塔的第0组的第0层图像,它的尺度为m,我们称m为基准层尺度,再由第0层得到第1层,它的尺度为ko,第2层的尺度为k2o,以此类推。这里的k为:(8)我们以s=3为例,第0组的6(s+3=6)幅图像的尺度分别为:0,ko0,k2∞,k3o0,k∞o,k5o(9)写成更一般的公式为:d=or∈[0,,s+2](10)第0组构建完成后,再构建第1组。第1组的第0层图像是由第0组的倒数第3层图像经过隔点采样得到的。由公式10可以得到,第0组的倒数第3层图像的尺度为k∞o,k的值代入公式8,得到了该层图像的尺度正好为2∞,因此第1组的第0层图像的尺度仍然是2∞。但由于第1组图像是由第0组图像经隔点降采样得到的,因此相对于第1组图像的分辨率来说,第θ层图像的尺度为ω,即尺度为2σ是相对于输入图像的分辨率来说的,而尺度为∞是相对丁该组图像的分辨率来说的。这也就是为什么我们称0为基准层尺度的原因(它是每组图像的基准层尺度)。第1组其他层图像的生成与第0组的相同。因此可以看出,第1组各层图像的尺度相对于该组分辨率来说仍然满足公式10。这样做的好处就是编程的效率会提高,并且也保证∫高斯金字塔尺度空间的连续性。而之所以会出现这样的结果,是因为在参数选择上同吋满足公式7、公式8以及对上·组倒数第3层图像降釆样这三个条件的原因。那么第1组各层图像相对」输入图像来说,它们的尺度为:=2k00r∈[0,,S-2该公式与公式10相比较可以看出,第1组各层图像的尺度比第0组相对应层图像的尺度人了一倍。高斯金字塔的其他组的构建以此类推,不再赘述。下面给出相对于输入图像的各层图像的尺度公式:o,)=2k∞O∈[0,O-1l,r∈[0,,+2(12)其中,O表示组的坐标,r表示层的坐标,a为基准层尺度。k用公式8代入,得:2O∈[0,…0-1],r∈[0,…,s+2](13)在高斯金字塔中,第0组第∂层的图像是输入图像经髙斯模糊后的结果,模糊后的图像的高频部分必然会减少,因比为了最大程度的保留原图的信息量,LoWe建议在创建尺度空间前首先对输入图像的长宽扩展一倍,这样就形成了高斯金字塔的第-1组。设输入图像的尺度为0.5,那么相对于输入图像,分辨率护人一倍后的尺度应为1,由该图像依次进行高斯平滑处理得到第-1组的各个层的尺度图像,方法与其他组的一样。由于增加」第-1组,因此公式13重新写为(0∈[-1,0,…,0-1],r∈[0,…,s+2](14)DoG金字塔是由高斯金字塔得到的,即高斯金宁塔组内相邻两层图像相减得到DoG金字塔。如髙斯金字塔的第0组的筼0层和第1层相减得到DoG金字塔的第0组的箅0层图像,高斯金字塔的第0组的第1层和第2层相减得到υσG金字塔的第θ组的第1层图像以此类推。需要注意的是,高斯金字塔的组内相邻两层相减,而两组间的各层是不能相减的因此高斯金字塔每组有s+3层图像,而DoG金宁塔每组则有s+2层图像。极值点的搜索是在DoG金字塔内进行的,这些极值点就是候选的特征点。在搜索之前,我们需要在DoG金字塔内剔除那些像素值过小的点,因为这些像素具有较低的对比度,它们肯定不是稳定的特征点。极值点的搜索不仅需要在它所在尺度空间图像的邻域内进行,还需要在它的相邻尺度空间图像内进行,如图2所示。每个像素在它的尺度图像中一共有8个相邻点,而在它的下一个相邻尺度图像和上个相邻尺度图像还各有9个相鸰点(图2中绿色标注的像素),也就是说,该点是在3×3×3的立方体内被包围着,因此该点在DoG金字塔内一共有26个相邻点需要比较,来判断其是否为极大值或极小值。这里所说的相邻尺度图像指的是在同个组内,因此在DoG金字塔内,每一个组的第0层和最后一层各只有一个相邻尺度图像,所以在搜索极值点时无需在这两层尺度图像内进行,从而使极值点的搜索就只在每组的中间s层尺度图像内进行。搜索的过程是这样的:从每组的第1层开始,以第1层为当前层,对第1层的DoG图像中的每个点取·个3×3×3的立方体,立方体上下层分别为第0层和第2层。这样,搜索得到的极值点既有位置坐标(该点所在图像的空间坐标),又有尺度空间坐标(该点所在层的尺度)。当第1层搜索完成后,再以第2层为当前层,其过程与第1层的搜索类似,以此类推。Scale图2DoG中极值点的搜索2、特征点的定位通过上一步,我们得到了极值点,但这些极值点还仅仅是候选的特征点,因为它们还存在一些不确定的因素。首先是极值点的搜索是在离散空间内进行的,并且这些离散空间还是经过不断的降采样得到的。如果把采样点拟合成由面后我们会发现,原先的极值点并不是真正的极值点,也就是离散空间的极值点并不是连续空间的极值点。在这里,我们是需要精确定位特征点的位置和尺度的,也就是要达到亚像素精度,因此必须进行拟合处。我们使用泰勒级数展开式作为拟合函数。如上所述,极值点是·个三维矢量,即它包括极值点所在的尺度,以及它的尺度图像坐标,即=(x,y,o),因此我们需要三维函数的泰勒级数展开式,设我们在=(x0,y,)处进行泰勒级数展开,则它的矩阵形式为:602f02f02fdxax day dao02f02f02faxdy ayay ayaallly-yol2f02f02fOrdo aydo dodo(15)公式15为舍去高阶项的形式,而它的矢量表示形式为f(X)=f(X0)+o¥(X-x0)+7(x-x0)a F(X-Xo(16)在这里表示离散空间卜的插值中心(在离散空问内也就是采样点)坐标,表示拟合后连续空间下的插值点坐标,设ⅹ=Ⅹ-Xn,则X表示相对于插值中心,插值后的偏移量。因此公式16绎过变量变换后,又可写成:f(x)=f(X0)+yX+XTⅩX20X2(17)对上式求导,得af (x a02f0ox ox+2 ax2+axa80f.02fXaxaX2(18)让公式17的导数为0,即公式18为0,就可得到极值点下的相对于插值中心的偏移量:aX2 ax(19)把公式19得到的极值点带入公式17中,就得到了该极值点下的极值Tf(X)=f(X0)+af02f10f)a2f/02f-1of2 8X2 0X/0X28X2dXf(X0)+H打×1ora2Ta2f-ra2fa2f-1 af2 dx dx2dx2dx2 dXa f02f-10f∫(X0)+dF×f7a22 ax ax2 axaflf(Xo)+xx+2 0X(-X)18Ff(X0)+2 aX(20)对于公式19所求得的偏移量如果大」0.5(只要x、y和σ任意一个量大于0.5),则表明插值点已偏移到了它的临近的插值中心,所以必须改变当前的位置,使其为它所偏移到的插值中心处,然后在新的位置上重新进行泰勒级数插值拟合,直到偏移量小于0.5为止(x、y和σ都小于0.5),这是一个迭代的工程。当然,为了避免无限次的迭代,我们还需要设置个最人迭代次数,在达到了迭代次数但仍然没有满足偏移量小于0.5的情况下,该极值点就要被剔除掉。另外,如果由公式20所得到的极值f(X过小,即f(X1,则Tr(H)2(a+β)2(+β)2(y+1)2Det(h)2(25)上式的结果只与两个特征值的比例有关,而与具体的特征值无关。我们知道,当某个像系的矩阵的两个特征值相差越大,即γ很大,则该像素越有可能是边缘。对于公式25,当两个特征值相等时,等式的值最小,随着γ的增加,等式的值也增加。所以,要想检查主曲率的比值是否小于某一阈值y,只要检査下式是否成立即可:Tr(H)(y+1)Det(h)(26)对于不满足上式的极值点就不是特征点,因此应该把它们剔除掉。Lowe给出γ为10在上面的运算中,需要用到有限差分法求偏导,在这里我们给出具体的公式。为方便起见我们以图像为例只给出二元函数的实例。与二元函数类似,三元函数的偏导可以很容易的得到设f(i,是ν轴为i、x轴为j的图像像素值,则在(j点处的一阶、二阶及二阶混合偏导af f(i, j+1)-f(i, j0ff(i+1,j)-f(-1,ax2h2h(27)ff(+1)+f(-1)-2f(,j)a2ff(+1,j+f(-1,j)-2f(i,j)hh(28)2ff(-1,j-1)+f(i+1,j+1)-f(i-1,+1)-f(i+1,-1)dx d(29)由丁在图像中,相邻像素之问的间隔都是1,所以这里的h3、方向角度的确定经过上面两个步骤,一幅图像的特征点就可以完全找到,而且这些特征点是具有尺度不变性。但为了实现旋转不变性,还需要为特征点分配一个方向角度,也就是需要根据检测到的特征点所在的高斯尺度图像的局部结构求得一个方向基准。该高斯尺度图像的尺度a是已知的,并且该尺度是相对于高斯金字塔所在组的基准层的尺度,也就是公式10所表示的尺度。而所谓局部结构指的是在高斯尺度图像中以特征点为中心,以r为半径的区域内计算所有像素梯度的幅角和幅值,半径r为(30)其中a就是上面提到的相对于所在组的基准层的高斯尺度图像的尺度。像素梯度的幅值和幅角的计算公式为:m(xy)=√(x+1,y)-L(x-1,y)2+(L(x,y+1),L(x,y-1)2(31)L(x,y+1)-L(x,y-1)o(x, y)=arctanL(x+1,y)-L(x-1,y)(32)因为在以〃为半径的区域内的像素梯度幅值对圆心处的特征点的贡献是不同的,因此还需要对幅值进行加权处理,这里采用的是高斯加权,该高斯函数的方差Cm为:Om=1.50(33)其中,公式中的σ也就是公式30中的σ在完成特征点邻域范围内的梯度计算后,还要应用梯度方向直方图来统计邻域內内像素的梯度方向所对应的幅值大小。具体的做法是,把360°分为36个柱,则每10°为一个柱,即0°~9为第1柱,10°~19为第2柱,以此类推。在以r为半径的区域内,把那些梯度方向在0~9°范围内的像索找出来,把它们的加权后的梯度嘔值相加在一起,作为第1柱的柱高;求第2柱以及其他柱的高度的方法相同,不再赘述。为了防止某个梯度方向角度因受到噪声的干扰而突变,我们还需要对梯度方向直方图进行平滑处理。 Opencv2.4.9所使用的平滑公式为:H()~h(-2)+h(+2)4×(h(-1)+h(+1)),6×h()i=0...15161616(34)其中h和H分别表示平滑前和平滑后的直方图。由于角度是循环的,即0°=360°,如果出现h(),j超出了(0,…,15)的范围,那么可以通过圆周循环的方法找到它所对应的、在0°~360°之间的值,如h(-1)-h(15)这样,直方图的主峰值,即最高的那个柱体所代表的方向就是该特征点处邻域范围内图像棁度的主方向,也就是该特征点的上方向。由于柱体所代表的角度只是一个范围,如第1柱的角度为0~9°,因此还需要对离散的梯度方向直方图进行插值拟合处理,以得到更精确的方向角度值。例如我们凵经得到了第i柱所代表的方向为特征点的主方向,则拟合公式为:H(i-1)-H(i+1)B=i+=0,…152×(H(-1)+H(i+1)-2×H()(35)O=360-10xB(36)其中,H为由公式34得到的直方图,角度6的单位是度。同样的,公式35和公式36也存在着公式34所遇到的角度问题,处理的方法同样还是利用角度的圆周循环。每个特征点除了必须分配一个主方向外,还可能有一个或更多个辅方冋同,增加辅方向的目的是为了增强图像匹配的鲁棒性。辅方向的定义是,当存在另个柱体高度大于主方向柱体高度的80%时,则该柱体所代表的方向角度就是该特征点的辅方向。在第2步中,我们实现∫用两个信息量来表小一个特征点,即位置和尺度。那么经过上面的计算,我们对特征点的表示形式又增加了个信息量一一方向,即(x,y,o,6)。如果某个特征点还有一个辅方向,则这个特征点就要用两个值来表示——(x,y,,B1)和(x,y,,02),其中O1表示主方向,O2表示辅方向,而其他的变量x,y,不变。4、特征点描述符生成
- 2020-06-25下载
- 积分:1
基于Xgboost的商业销售预测
基于Xgboost的商业销售预测,以德国Rossmann商场的数据为例,通过对数据的探索性分析,以相关背景业务知识体系为基础,通过可视化分析,提取隐含在数据里的特征,使用性能较优的Xgboost方法进行规则挖掘,取得较好效果。第3期饶泓等:基于 Boost的商业销售预测277·(3)eta:收缩步长,即学习速率,取值范围是,3.1数据来源默认为0.3。在更新叶子节点的时候,权重乘以本文所有数据均来自 Haggle中的 Rossmanneta,以避免在更新过程中的过拟合。商店销售额数据集。 Rossmann是商人 Dirk ross(4) max _ depth:每棵树的最大深度,取值范围mann创立的德国首家平价日用品商店,现在的是,默认为6。树越深,越容易过拟合。Rossmann公司逼布欧洲7个国家,分店达100多(5) subsample:训练的实例样本占整体实例样家。论文通过位于德国的1115所 Rossmann连锁本的比例取值范围是(0.1],默认为1。值为0.5商店的历史数据预测未来48天商店的销售额时意味着 Boost随机抽取一半的数据实例来生成Haggle给出了三个数据集: train、test、 store,分树模型,这样能防止过拟合别是训练集测试集和商店基本信息的数据集,对训(6) colsample bytree:在构建每棵树时,列(特练集建模训练,对测试集进行预测。征)的子样本比,参数值的范围是(0,1]数据集基本信息如下(7) objective:默认为reg: linear;(1)训练集 train.csv:时间范围为2013年01月(8)sccd:随机数种子,为确保数据的可重现01日到2015年07月31日,共942天,1017209条性,默认为0。数据。2.2K折交叉验证方法(K一CV(2)测试集test.csv:时间范围为2015年08月论文采用K折交叉验证方法。将原始数据0日到2015年09月17日,共48天,41088条数分为K个子集,每个子集分别验证一次,剩余的K据组子集作为训练数据,这样可得到K组训练集(3)商店基本信息数据集 store.csv:1115条数和测试集以最终的分类平均精度作为性能指标。据,共1115家商店的信息。在实际应用中,K值一般大于或等于2,需要建立K3.2数据的可视化分析及原始特征提取个模型来进行K折交叉验证的实验,并计算K次为了获取影响销售额的基本数据特征,论文对测试集的平均辨识率Gaggle提供的 Rossmann数据集进行了可视化分K折交叉验证的结果能较好说明模型效果,有析,提取原始特征集。效地避免欠拟合与过拟合。在 Boost中,通过(1)顾客数和销售额之间的关系xgb.cv函数来做交叉验证。从图1中可以看出,顾客数和销售额之间存在2.3独热编码(One- hot encoding紧密的正相关关系。由于 Boost仅适用于处理数值型向量,因此处理训练集和测试集时需要将所有其它形式的数10.0据转换为数值型向量,本文采用独热编码将特征值转专换为数值。50独热编码也称一位有效编码,即对于任意时间任意给定的状态,状态向量中只有一位为1,其余6各位为0,将n类特征值转化成n位二进制数串,将顾客数特征的每个对应类设置为1。独热编码将每一个特图1顾客数与销售额的关系曲线征的个取值通过独热编码后转换成了n个二元特(2)促销对销售的影响的可视化分析征,通过该方法将特征转变成稀疏矩阵6。独热编图2和图3中 Promo取1表示当天有促销活码能够解决分类器不好处理属性数据的问题并在动取0表示没有促销活动。从图中可以看出促销一定程度上扩充了特征活动对顾客数并没有太大影响,但销售量却明显提3数据预处理高了,即促销活动并没有吸引更多的顾客,但提高了顾客的购买力,从而提高了销售额。通过查询原始为了获取数据中的有效特征,论文采用探索性数据发现没有促销的情况下顾客平均消费8.94欧数据分析方法对数据进行可视化分析获得数据分元,有促销活动的情况下平均消费10.18欧元布特征,理解原始数据的基本特征,发现数据之间的(3)星期( DayOf Week)对销售影响的可视化分潜在模式.找出数据中的有效特征析21994-2017ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net278南昌大学学报(理科版)2017年40000表2商店薮据基本特征集30000特征名称含义值批20000ore商店号取值:1到1115商店类型10000商店类别分类:逢础类met最近的党争对手的距薮卷:桊商店0离里有761个商店有PromoCompetition-图2促销对销售额的影响Open SinceMonth竞争对手开张的月份月份Open since year竞争对手开张的年份年份数据6000P持续性的促销活动0:无,1:有的4000Prom2 Since Week开始参加Pomo2促销日历上的第几周数的日历周值2000Pomo2 Sincerer开始参加Pm2i年份数据PromoPromoInterval参加Pomn2促销开始Jan,Apr,Jo)e的月份列表Feb, May, Aug, Nov".图3促销对顾客数的影响Mar, Jun, Sept, Dec从图中可以看出,星期日的销售额中位数和上不同的分类特征在训练集和测试集中的比例见四分位数远远高出正常营业日,但是下四分位数却表3~6低于正常营业日,即有些商店星期日营业额高于平表3Open特征取值比例时,但也有一部分商店的销售额低于正常营业日。从图中也可以看出,从周一到周六,周一的销售额偏16.99高一些,星期六的销售额偏低一些test/yo14.5585,4440000表4Prom特征取值比例30000Pramo0凝train61.8538,15批2000test/%50.4239.5810000表5 Stateholiday特征取值比例y星期几1.990.660.40图4销售额在星期1~7中的分布情况test/%99.560.44由于篇幅的关系,对数据的可视化分析不表6 Schoolholiday特征取值比例列岀。根据这些数据的可视化化析,我们提取出如Schoclholiday表1所示和表2所示的训练数据和测试数据原始特test/%55.6544.35征集以及商店数据基本特征集。表1数据原始特征集3.3数据预处理持征名称含义3.3.1数据清洗为获得可训练用数据,我们对原tcre有店号取值:1到1115始数据进行清洗,具体过程如下:DayOfWeek星期几取值:1到7(1)标记异常数据。如商店是开门的,但是销Date时间如2013-01-01Sales销售额数值售额为零的数据为异常数据Customers顾客数数值(2)对训练集的 Sales销售额字段取对数,设置是否开店关店,1:开店为 Saleslog字段;P当天是否有促销0:无促销,1:促销0:非假日,a:公共假日;b:(3)缺失值用一1填充;State Holiday假日复活节,c:圣诞节(4)合并训练集和测试集,添加Set字段,用以SchoclHoliday学校假日0非假日,1:假日分训练集和测试集,值1为训练集,0为测试集;(3)数值化分类特征值。原始数据集中, State21994-2017ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net第3期饶泓等:基于 Boost的商业销售预测holiday分类特征取值为0、a、b、c,无法代入模型计算因此重新编码为0、1、2、3; Store Type分类特4实验结果及分析值为a、b、c、d, Assortment分类特征值为a、b、c,采4.1实验条件用同样方法用整型数据重新编码(1)软件环境(6)分解特征。将原始数据集中Date特征分(a)操作系统: Windows7x64解为 DatcDay、 Datc Wcck、 DatcMonth、 Datc ycar(b)开发平台: Python2.7+R3.4.2DateDay OfYear5个特征(c)第三方库: Python: numpy+ pandas+(7)增加字段 PateNt,即Date转换为整型的 atplotlib I xgboost;R3.4.2库: data table|gg形式lot2tlubridate-zoo-dplyr+scales+xgboost+(8)规范化特征表达。对 Competition- forecast glmnetpen sinceRer和 CompetitionOpenSinceMonth字(2)硬件环境段合并成普通年月的表达,并转化为整型;将Pro处理器:Iner(R)Core(TM)i3-4160CPUcmoZsincc ycar和 Promo2 Since wcck字段合并成普3.60GHz通年月的表达,并转化为整型,增加字段内存:8GBPromo2 SinccInt4.2单 Boost模型()删除偏差大于2.5的异常数据。对特征工程后的所有特征用 Boost模型进行(10)删除存在异常的数据点,如图5所示的异训练,参数如表7所示。常数据。表7单 Boost模型参数25000参数值参数值15000thread500M4M小人Activereg: linear subsamplegrounds20000colsample bytearly stop. round250004.3组合模型0%时你以根据模型的作用将模型分为三类:商店模式模型、数据合并模型、混合模型。商店模式模型:下面采用单个模型是对每个商图5异常数据店进行单独拟合。这类模型关注商店各自的特性,3.3.2特征处理论文根据相关信息背景对数据但是它也错过了可在其他相似商店的模式中获取的进行特征处理:信息(1)增加字段 Competition OpenInt(1)线性模型lm拟合趋势,不带特征交互的(2)添加一些额外的特征,如商店的位置特征 Boost模型拟合残差StoreState发薪日效应特征 PayDay(在一个月的第(2)线性模型lm拟合趋势,带特征交互的Ⅹg个工作日设置特征值为3在随后的两天设置为 boost模型拟合残差2、1)(3)线性模型lm拟合趋势,不同参数值的(3)增加商店平均每天的销售额 Sales PerDay、 glmnet模型拟合残差平均每天的顾客数 CustomersPerDay、平均每天每(4)tslm模型拟合趋势丨季节性,Ⅹ gboost模位顾客的销售额 SalesPerCustomers Per Day作为新型拟合残差。的特征。(5)tslm模型拟合趋势十季节性, glmnet模型(4)增加特征组合,如: store; DayofWeek,拟合残差store: Dayofweek: Promo等等。(6)tslm模型拟合趋势十季节性,Ⅹ gboost模型+ gemnet模型拟合残差。(7)每个商店直接用Ⅹ gboost模型拟合残差。21994-2017ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net·280·南昌大学学报(理科版)2017年这些模型中,含有 Boost模型的模型参数设1.5- A. train-rmspe- B. train-rmspe置如表8,其中模型7中参数 rounds值设为500。1.0-A.validation-rmspe-B validation表8组合 Boost的模型参数0.5参数值0150030004500600075009000参数值RMSPEreg: linear eta0.013C0max _ depth图6在训练集 train和验证集 validation上的 RMSPE值colsamplc bytrcc0.8subsample3.95图7给出了 Boost模型中非组合特征的重要数据合并模型:下列模型使用合并有 store数度得分,从图中可以看出时间类特征和有关竞争对据集和trai训练集的数据集。各个模型的参数设手的特征得分非常髙,这意味着这些特征对模型具置如表9-11有非常大的影响。表9没有特征工程的 Boost模型DateWeek参数参数CompetitionopenIntreg: lineareta0.01SalesperDayPromorounds3000max _depthcolsample bytreesubsampleAssortment 152100000020000003000000F score特征重要度表10有特征工程的 Boost模型图?特征重要度得分参数参数值bjectivereg: linear eta为了对比各模型的泛化效果,我们给出了单类模型(线性模型LM、时间序列线性模型TSLM、基4000subsoIl0.9于 Lasso和 Elastic net正则广义线性模型 glmnet、early stop. round100cclsample bytree极端梯度上升模型ⅹ gboost)和它们之间的组合模型在测试集上 RMSPE值,从而评价模型在测试集表11153个特征十特征交互的 Xgboost模型上的泛化能力。如表13所示参数值参数表13各模型 RMSPE值比较objectivereg: linear etaC.015max depth18模型RMSPE值.20657300CLM一简单的特征处理rounds. 1l.7TSLM+筒单的特征处理cCanvTree0.12751early stop. round100random forest-简单的特征处理glmnet+简单的特征工程3.11974组合模型:通过组合数据合并模型来获取跨多个商Boost十简单的特征工程0.11839店之间共同的特质。模型的残差用商店模式模型中Boost+特征工程Boost+ glmnet+特征工程0.11262的模型来拟合,从而获得每个商店的特质。用Igloos+ glmnet+tslm+lm+特征工程0.1114Gprcomp函数从数据中提取50个主成分,并用Xg从表中可以看出,Ⅹ ghost单模型的能力就优bost模型来拟合、计算残差。模型说明如下:于其它模型,在进行了简单特征工程后, Boost(1)使用线性模型lm拟合趋势,带特征交互的和 gemnet模型相比, Boost模型依然效果更好。glmnet模型+ Boost模型拟合残差,最后我们结合TSLM|LM在处理趋势和季节性上(2)使用tslm拟合趋势和季节性,带特征交互的优势,采用集成方法对 Xgboost+ glmnet进行组的 Boost模型拟合残差。合得出优化模型Ⅹ gboost+ glmnet+tslm+lm+特图6给出模型在训练集和验证集上的 RMSPE征工程, RMSPE值得到较大提升,泛化性能最优的变化过程,横坐标是次数,纵坐标是 RMSPE的值A是人工删除了异常点的数据中的异常数据5结论并没有删除。可以发现在训练集上训练的前500次本论文研究基于 Boost方法对实体零售业销RMSPE的值就迅速的降低到0.2,然后在1750次售额进行预测。论文以德国零售业 Rossmann公就在0.1左右了,可以看出在训练集上效果很好。司1115家实体门店的商场信息和销售数据为薮据21994-2017ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net第3期饶泓等:基于 Boost的商业销售预测281·源,采用 Boost方法对公司销售额进行预测。参考文献通过在特征工程中对原始数据进行特征提取、L1」赵啸彬.基于数据挖掘的零售业销售预测LD.上海:选择和构建,筛选岀用于训练的特征属性;对比Xα上海交通大学.2010boost、随机森林、 GLMNET以及IM、TSIM模型2 CHEN T,HET. Higgs Boson Discovery with boosted等不同方法对销售额的预测结果,表明 Xgboosτ方TreesLCI.JMLR: Workshop and Conference Proceed法无论是训练速度还是在 RMSPE评价标准上都具2015.42:6980有明显的优势。3 ROBERT E. Banfield, Lawrence (. Hall. Kevin WBowyer. W. P. Kegelmeyer, A Comparison of Decision为了进一步提高 Boost预测模型的精度和泛Tree Ensemble Creation Techniques LI]. IEEE Trans-化能力,本文通过大量的特征工程,尝试多种模型的actions on Pattcrn Analysis and machinc intelligence集成学习方法和参数调优,利用 GLMNET和Xg2007,29(1):173-180boost模型拟合残差,并结合IM、TSLM在趋势和[]李航.统计学习方法[M]北京:清华大学出版社,李节性预测的优点,获得组合优化模型。实验表明2012该组合模型在性能上优于单一 Boost预测模型。[5]闻玲·移动平均季节模型在商品销售收入预测中的应这种基于Xⅹ gboost的组合模型不仅适用于对德AJ. Market Modernization, 2010(28):43-45国零售业销售额的预测还可以将此方法应用于国6黄伟陶俊才.一种基于k- means聚类和关监督学习内零售实体业甚至电商平台的销售额预测,对于提的医学图像分割算法[J].南吕大学学报(理科版),2(14,33(1):31-35高商店的运营生产模式、日常管理、价格管理、配送[7 RICE J Mathematical Statics and Data Analysis[M]方式及精准营销具有重要的意义cand Edition, Plymouth: Duxbury Press, 2006: 221-21994-2017ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net
- 2021-05-06下载
- 积分:1