拍卖的多少钱怎样定 聊聊转转拍卖场的起拍定价算法演化
1 有些什么——场景特点
这里咱们首先向读者引见一下转转的 ToB 场景,也即 APP 采货侠的业务场景,采货侠是转转公司针对 B2B 场景下的二手手机买卖平台,其蕴含暗拍手机、一口价手机、多品类暗拍等多业务场景,感兴味的小同伴可以自行下载了解哈,这里着重了解其中暗拍的概念。
暗拍,望文生义,是一种拍卖的方式,想必大家多少都了解,触及到不同用户对不同商品的竞价。暗拍则是其中一种竞价各方对其他方出价多少钱无法见的方式,从商业意义过去说,目的是防止恶意抬价,或用高价压价,尽或许让商品在正当的多少钱区间最大或许售出,并且争取更多利润,其基本形式如下图:
采货侠暗拍卖场每天蕴含下午与晚间两场,商品以起拍价标价上拍。卖场启动时期,买家可对不同商品启动出价,越高越有竞争力。当出价小于起拍价时则无法竞得商品,用户可检查特定时期段的竞价排名,以此选择后续能否继续出价。卖场完结后会智能对价最高者生成订单,该订单须要用户在后续成功支付结算。上方是基本流程表示与暗拍卖场的界面:
2 关注什么——外围目的
引见完场景,笔者这里要谈的重点是起拍价。咱们先从一个例子引入:
假定一件商品回收老本为800元,自身的主观市场价值平均为1000元,预期利润为100元。卖家假设按1元起拍,反常状况简直100%成交,即使竞价抬价行为会促使其在1-1000元成交,但实践上仍有很大或许所获利润为0甚至为负,竞价不充沛,存在失落毛利的危险。雷同的,卖家假设按5000元起拍,或许通常上一本万利,但简直不能成交,也等于没无利润,即使经过流拍战略不时提价,周转过慢,一样失落毛利。
痴呆的读者或许曾经发现了,假设在这个例子中以适宜价位起拍,自然能在保障成交的状况下留有正当利润空间,比如依照950元起拍,或许成交多少钱可以在1000、1020、1100甚至更高。退一步来说,若不成交,其流转周期也相对较短可及时止损。即使仅仅取得了951元的出价,也到达了咱们的预期——既成交了也保障利润空间,也说明该商品或许现阶段买家最大预期即是如此,无法奢求更多,说明竞价环节未然充沛。
足见正当的起拍价既是卖家视角拍卖商品的底线价值权衡,也是对商品能够充沛竞价的保障。讨论其制订,首先须要以下三个目的:
3 如何去做——权衡后行
那么如何定出适宜的起拍价呢?回答这一疑问前,要先回答一个疑问,如何权衡起拍价是适宜的?由果索因,有评估论才有方法论。有了目的,当然还须要知道如何去从目的反映成果。
如下图,从买家角度来看,起拍价是卖家给出的,是定量,出价是变量,最后的成交价肯定是围绕着主观市场价值且大于起拍价的值,但作为制订起拍价的卖家一方来说,成交价才是定值,而起拍价是变量,起拍价肯定是小于等于最终成交价且围绕着主观市场价值的值,而由于主观市场价值没有方法准确失掉,最终成交价可以视为主观市场价值。
既然如此肯定存在如下相关,假定关于单个商品,起拍价为sp,成交价为dp,老本多少钱为cp,用函数F(sp)权衡起拍价的好坏,函数η(sp)表示溢价率,函数γ(sp)表示成交率,则有:
该式有以下几个含意:
实践上,从卖家视角来看,最终的目的也是最后的优化登程点,是想优化毛利,从单一商品角度来看,毛利其实是不确定要素,由于成交价是由买家控制的,但咱们依然假定dp0为现实成交价,cp为固定老本价,即不会再有更高的成交价存在,设G(dp)表示毛利率与成交价的相关,g(sp)表示毛利率与起拍价的相关,那么存在以下相关转化:
以上相关可以推出,若成交价为定值,起拍价依照实在成交价制订时,其所获利润最大,咱们再把成交率和溢价率与起拍价的相关画出函数图像如下:
可以看出当起拍价小于等于且迫近成交价时,成交率一直为1,溢价率逐渐趋近于0,而超出成交价时,成交率指数降低,溢价率也逐渐增大。自然不难发现,让F(sp)最大化即最大化成交率,最小化溢价率,而由于在小于成交价的范围内,成交率取得最大值1,那么通常上整个优化点则可以用如下式子形容:
最终优化目的归纳于使得起拍价从正向趋近于实在成交价,则该起拍价制订最为正当。而从评估的角度,则当成交的状况下,溢价率越小说明起拍价制订更好。
上方借助图来说明:
当溢价越来越小时,利润空间右端点越向右,范围越大,毛利率也就越多。由于起拍价是从小于成交价的一边趋近,其成交率一直可视为1。
关于全局多商品来说,每个商品要么估价高了,模型向现实成交价降低多少钱促使成交,要么估低了,模型迫近成交价优化利润空间,雷同实用降低溢价的通常。由此咱们便找到了优化与评估的方向。
4 取经路上——早期通常与痛点
了解了目的和基本的思绪,接上去就往前一些,从早期思绪登程,讨论下演化环节中种种通常的得与失,优与劣。
4.1 基于回收价的通常
做电商肯定要保障肯定的利润预期,又要尽或许保障能成交,最直观的思绪便是以下规定启动制订:
这样做的优势是,繁难间接,成功比拟容易,卖场间接与回收挂钩,取得的毛利比拟稳固可控,适宜品类与库存规模相对单一的场景。但缺陷相对也很突出,关键有以下几点:
所以这种思绪在开展初期尚且可行,但在规模逐突变大的状况下,难以常年运营。
4.2 基于价目表逻辑的通常
既然买家市场价值是最好的制订终点,咱们无妨就沿着这个思绪启动。虽然市场价值无法准确失掉,但作为运营方可以经过历史数据、阅历、规定辅以人工校准等确定一个SKU维度价目表,依据成色等其他机况再乘以系数,思绪举例如下:
该思绪基于价目表这一先决条件的保养,用以模拟标品市场多少钱,随后再依据详细的成色、机况等确定系数启动微调。其优势是相对基于回收价登程,保养规范多少钱会使得整个链路模块化、粗疏化,制订相对准确。其无余之处也雷同显著:
故在人力资源充盈且缺乏算法才干时,该打算值得一试,假设须要常年高效运营,智能化算法才干必无法少。
4.3 基于成交价战略的通常
假设须要智能化省时省力,又须要肯定的准确性、时效性,再联合前一章中的内容,那么在已有的适宜数据中能反应其市场价值的首先是成交价。前面咱们也提到,成交价关于卖家视角可以以为是定量,代表着买家的最终心思预期,基于历史成交价去制订起拍价,有以下好处:
登程点有了,要成功算法智能化,且成果足够现实,还须要设计整个算法系统,初期咱们的框架设想如下:
其基本的设计理念与内容有以下几点:
4.3.1 初次与流拍划分
首先将起拍价的制订分为两块,初次上架与流拍,区分指第一次性进入卖场和屡次进入卖场的商品,前者经常使用模型智能化出价,后者按前次多少钱与预置比例折价后再上架。
为何如此划分?咱们可以基于一个基本假定,假设是现实模型,关于每一个商品在初次上架时就能制订出成交率为100%,溢价为0的起拍价,通常上就不存在初次与流拍,显然无法能。
肯定一局部可成交,以为小于等于买家预期,另一局部无法成交超越买家预期。假设咱们依然在第二天仍用模型对无法成交的局部报价,由于模型每日升级,新模型给出的结果肯定会出现多少钱跳变这一无法控要素,影响买家印象。
若以为模型给出的多少钱相对靠谱,即使流拍,咱们以此为多少钱高点,逐渐平滑降低,这样能确保低溢价的同时逐渐增大成交或许,也减轻了模型累赘,如下所示:
4.3.2 SKU成交基准价
流拍战略较为繁难的就增加了求解范围,重点到来初次上拍商品定价模型。首先就是用成交价智能计算的“类价目表”,其基本逻辑如下:
每一种SKU维度的商品都基于该SKU下的所有N个商品成交多少钱关于业务系数α放缩后启动加权平均,这里的放缩操作思索了不同机况下的平滑机制,防止意外多少钱和卖场差异的影响,使最后的基准愈加趋近于实在价值,α详细逻辑基于不同业务启动独自条件设计,这里不再详述。
经过这样较为繁难的设计,可以将基准价的失掉基于成交价智能化,有效且可解释,并且自然低溢价。
4.3.3 系数调控模块
在上一节中咱们知道,正当的起拍价区间介于回收老本与成交价之间,假设市场恒定,即库存、需求、供货等稳固不变,咱们肯定可以找到一个稳固的起拍价使得成交/溢价最大化。
但很显然的是,实践上市场不会这么现实,关于无法控的市场要素,基于未然出现的成交价结果很难、甚至不太能用算法去捕捉这种变动要素,自然,人工参与的调控机制也无法或缺,这里须要引入以下三个维度的可性能系数:
这样做从原本商品粒度人力调控转到SKU×成色粒度调控,现实状况下自身相对准确的多少钱不用须要频繁调整,只须要依据市场反应适当监控即可。
4.3.4 风控模块
即使是十分明晰繁难的模型构建,风控模块依然在多少钱畛域无法或缺,毕竟即使是一个badcase也是利润的损失。风控模块在起拍价定价中关键起到两个作用,一是过滤纠偏意外多少钱,二是提高报价笼罩度兜底。
意外多少钱普通出如今不凡机况,比如质检项难失掉、质检有误等意外质检机器,会经过独自保养机况条件启动系数控制,并依据回收价设置多少钱高低限,防止定价过低或过高。
报价笼罩度逻辑关键处置新机、老旧机器等数据稠密,成交缺失的局部,让模型报价才干更片面,这局部分层处置,关于报价要求高的新机启动意外处置交予人工,关于报价要求低的老旧机器经常使用均价升级战略兜底,即细粒度机况缺失便向粗粒度聚合报价即可,最粗可以到机型粒度,如下图:
全体来看,基于成交价战略的起拍价算法化的外围点是一种统计思绪,并把疑问拆解模块化,先拆报价范围,后拆战略模块,关于不同的模块制订不同的战略。在早期的通常中,该打算具有以下功效:
但在通常环节中雷同有很显著的疑问亟需处置:
5 修成正果——现有模型构建思绪
针对4.3中提出的思绪与缺陷,咱们顺着这个形式进后退一步优化迭代,首先须要必需的是,该思绪中关于起拍价制订疑问的模块化拆解思绪值得延续,虽存在缺陷但基本都囿于详细的模块内,仅需启动针对性改良。
5.1 现有模型框架
全体给出现有的模型框架如下图所示:
可以看到全体的模块设计与流拍逻辑基本上没有变动,不同在于模块内细节启动了大幅度调整,在初次定价模型上从SKU基准价间接跃升至商品粒度定价,上方将详述。
5.2 关键模块设计与思绪
5.2.1 多少钱模块
相较于此前的SKU基准多少钱,本次多少钱模块丰盛了较多内容,外围改良点有以下几个方面:
多少钱散布的描写拟合才干无余,外围要素还是模型只是经过统计手腕给出了SKU粒度的多少钱,而后经常使用一致的等级机况系数去推动到商品粒度。实质上还是逗留在SKU×等级的粒度,很难将报价准确到每一种机况上。而本模块则将模型报价才干聚焦至质检项粒度,针对每一种不同的SKU——验机项独自报价,摒弃了不够准确的等级粒度。
粒度更细,传统统计方法自然无法满足等候,咱们须要拟合SKU——质检项数据与历史成交价数据二者间的相关,关于多维度特色来说,机器学习模型当然更好。这里可选择的模型较多,经常出现回归模型均可,这里笔者选择决策树模型,全体基本逻辑与经常使用的特色类型如下:
由于成交数据量不算宏大,且商品信息与质检项数据可以处置为纯表格数据,故而树模型更具有优势。另内在自然的可解释性前,不同商品、质检项特色可以依据关键性启动特色选择。
这里还有一些小trick,关于回归模型,可以将label多少钱取对数,调参时可适当参与树的复杂度以使得稍微过拟合,这样关于数据量有限的多少钱预测来说更具有稳固性。
敲定粒度,选型模型,自然须要回到最后的数据选择与特色处置,除成交数据与商品的基础特色外,本次引入的数据包括质检项数据与出价数据。
质检项数据即每台机器质检报告中名目的明细,其检测结果普通以ID与水平词启动形容,关于机器学习模型来说很难间接经常使用,于是首先须要对其启动预处置,处置方式如下:
单一质检项的水平词(如纤细、细微、显著、重大)降序映射为分数(如8、6、4、2),而不同的质检项依据关键水平升序启动打分,另外依据多少钱排序下的质检项共现频次也可以取得不同机型下的外围质检项打分。经过这种方式就可以把团圆水平值转为可比拟的延续值,使机器学习模型可启动训练、验证、预测。
另外,每个商品在进入卖场后,无论能否最终成交,成交在什么价位,只需成交就肯定有相应的出价,或许只要一个且等于成交价,也或许来自于不同买家的多个均小于等于成交价,其大抵的散布如下:
这里引入出价的含意为,即使成交价代表了最现实的成交结果,但正当的出价所落的区域则更能反映该商品在买家心中的多少钱锚点,用作风控是十分现实的,假设模型给的多少钱过于偏离锚点,则启动纠偏的置信度相比回收价更高,假设依照老本基线风控,其左近的多少钱点均浮动在意外出价左近,与成交基线相去甚远。
5.2.2 系数调控模块
既然多少钱模块曾经能做到商品粒度报价,那么调控模块自然增加压力,仅仅须要全局系数与流拍系数即可成功全体的目的影响,由于自身拟合度高普通不须要细粒度微调,若须要则依据须要按由细到粗的失效优先级性能一般系数即可成功,其调理复杂度是O(1)级别。
5.2.3 风控模块
在上一节中提到经常使用出价作为风控多少钱锚点相比回收价更准确,以及升级聚合启动兜底收效不佳。那么对风控模块的迭代将针对这两处启动:
关于模型多少钱启动归正,直观的方式就是设置高低限,繁难说就是须要模型报价落在正当区间,此前经常使用回收价作为锚点设置高低限反而倒反天罡,千里之堤,溃于蚁穴。作为锚点来说,历史成交价置信度最高,买家出价次之,最后才是老本价,这三种多少钱数据特点如下:
历史成交价 |
买家出价 |
老本价 |
|
笼罩率与数量 |
最低 |
中高 |
最高 |
置信度与准度 |
最高 |
高 |
最低 |
可以看到三种数据在两种特色上呈逆序排布,成交价很难在所无机器上都能笼罩,毕竟不能说一切的SKU×等级机器都有售出且数量可观,长尾机器肯定存在,然而作为商品价值反映肯定是最可信的,其他两种数据同理,于是设计高低限风控逻辑时可以做阈值控制,其大略逻辑如下:
# 阈值汇合thres_value_set = [tv1, tv2, tv3, tv4, tv5]# 历史成交价historical_deal_price_set = [dp1, dp2, dp3, ...]# 历史出价historical_offer_price_set = [op1, op2, op3, ...]# 最终报价初始为模型报价final_price = model_price# 阈值判别: 历史成交价与历史出价均置信 以成交为超限判别if historical_deal_nums > thres_value_set[0] and historical_offer_nums > thres_value_set[1]:# 超出高低限判别if model_price < min(historical_deal_price_set) * thres_value_set[2] or model_price > max(historical_deal_price_set) * thres_value_set[3]:# 最终多少钱取成交与出价均值final_price = (np.average(historical_deal_price_set) + np.average(historical_offer_price_set))/2# 阈值判别: 仅历史出价置信 以出价为超限判别elif historical_offer_nums > thres_value_set[1]:if model_price < min(historical_offer_price_set) * thres_value_set[2] or model_price > max(historical_offer_price_set) * thres_value_set[3]:# 超限取模型与历史出价的较大值 以保利润优先 未售出可流拍final_price = max(model_price, np.average(historical_offer_price_set)) * thres_value_set[4]
依据阈值控制置信度与区间范围,再依据同SKU×等级下的多少钱聚合值控制能否超限,超限后如何处置。这样做的好处是基本上能将模型或许会出现的意外报价控制在一个正当的范围内,并且所用到的系数不多,调理繁难,阈值可以经过数据剖析求解。
在提高笼罩率这局部逻辑中,先前的想法是细粒度的多少钱数据稠密,就向粗粒度升级聚合,这样做虽然可以提高笼罩,然而很容易受货源结构影响,报价不准确且在稠密侧容易被带偏。迭代中采取如下思绪:
繁难来说,依据已有的机型容量×等级聚合出机型容量均价,将等级序列化后,思索机型容量均价与等级存在如下繁难的线性相关,从而推行到所有机型容量×等级粒度,成功全笼罩,并且在划定多少钱段前提下肯定水平内近似准确且严厉防止等级倒挂,关于兜底报价需求能够满足。
至于求解上就比拟容易了,经常使用一个繁难的线性回归OLS模型即可对其启动求解,须要留意的是,在实践经常使用中关于这种繁难模型,通常须要依照多少钱段划分,缩窄成交多少钱值域后训练多组线性模型启动笼罩补全时,成果更好。
5.3 成果与后续优化空间
引见清楚了最优版本的逻辑与架构,咱们繁难看一下该版本投入采货侠拍卖场起拍定价后的成果,并讨论其后续改良方向。
5.3.1 模型成果
咱们从苹果与安卓手机区分启动举例说明这个成果,上方图中为模型AB试验,对照组A为第三节中的SKU成交均价战略,试验组B为第四节新模型体系,脱敏隐去实践值,相反目的处于同坐标刻度下,苹果手机成果如下图:
从品牌来看苹果手机特点是品类少,数据量大,高值商品多,多少钱方差小,所以自身在准确度,也即溢价率上自身成果较好,所以新模型在溢价率上小幅度降低,但在成交率上优化显著,说明模型在中低值商品上估价更准,使得商品流通速度更快。
而从安卓机过去看,其品类单一,数据量相对少,低值机器更多,多少钱方差大,自身成交率曾经很高,相应的多少钱拟合度差,溢价高,于是新模型经过商品粒度报价、风控兜底改良,关键在报价准确上取得较大优化,数据上表现于成交率持平,溢价率大幅度降低。
实质过去说,其实模型优化的都是多少钱准确度,即降低多少钱方差,优化拟合度,让起拍价更迫近实在成交,只是在不同的商品结构上出现不同的并重点,实质上都是双端优化,既降低溢价又优化成交,使看起来trade-off的两个目的都取得优化,监禁了利润空间。
为什么可以这么说,还记得系数调控机制吗,实践上咱们只需对其中一幅图像中的模型报价输入启动放缩,两幅图像就会取得相反的出现方式。由于放缩系数不扭转散布,只是让成交和溢价出现同步变动。而这个双端优化加上同步变动既监禁了利润空间又给出了可经过调控应答市场的才干,且调理老本不高,方向明白。
5.3.2 后续优化空间
6 再说两句——总结
本文关键从起拍价定价这一实践运行场景登程,以实践疑问举例,目的后行提供指点方向,再逐渐引见每一种算法思绪,步步为营,舍短取长启动优化,最终给出目前还比拟work的一种打算。作为算法类技术分享来说,本文不蕴含复杂浅近的算法通常,单从剖析、处置疑问的角度演进,旨在分享系统化、模块化、结构化的思索方式,宿愿广阔读者有所裨益,疏漏、无余之处万望海涵。
关于作者
陈烨,转转初级算法工程师,担任转转B端搜查召回、排序算法设计优化,以及B卖场起拍价定价算法、C卖场调价系统迭代优化等多少钱方向上班。