以下算法在大部分的情况下表现都非常好,算是工作中常用算法,具体如下:
- Boosted Decision Tree,以 https://github.com/dmlc/xgboost 为代表,大部分比赛里都可以作为不错的baseline使用。
- Deep neural network。由于neural network本身就有特征提取的效果,在一些比赛中,能为最后的model ensemble提供一个供选择的模型。由于training的时间跟neural network的大小,还有数据量的大小都有关,如果没有GPU支持的话,很多都需要training很久的时间。
- Random Forest Tree. 跟Boosted Decision Tree类似,属于跑得快,效果好,还能有feature selection功能的模型。也是个不错的baseline。
要装成算法专家,不需要彻底了解以上算法任何一个原理,但你需要懂得算法核心概念和算法意义 —— 对产品有什么用:
- 为什么这么干?
- 效果怎么样?
- 跟之前的方法比有什么优势?
先来个错误的算法使用例子:
- 汽车客户:想做个用户画像,分个类,能精准投放广告
- 你:好,这是你想要的结果,我们分了四类用户,第一类“炒股、XXX 影迷、经常旅游、偶尔上一下 XX 公开课”…
- 汽车客户(暂停对方):等等,你说「经常旅游」,我可以推测要给这类用户销售适用旅行的车吗?XXX 影迷,貌似用他做汽车宣传不那么妥,而且最近有不少绯闻,我不太理解为什么要知道他「上过什么公开课」、他炒股能知道他喜欢什么车吗?
- 你:这是根据上千万个标签统计的,先用 Random Forest Tree 筛了一遍有价值特征 ,K-Means 聚类这些特征,这样就能精细化用户,至于第一类结果是比较显著特征,应该优先关注。。。
- 汽车客户(又暂停对方):可我还是不知道向他们投放什么广告。。。
以上就是做数据用户画像最大缺陷,听起来高大上,贴了 N 多标签完全不知道想干嘛。
那好的算法做画像应该怎么样呢?引用 360 数据科学家负责人北冥乘海生做法:
原理:这里面最关键的诀窍,是深入研究某个具体行业的用户决策过程。
例子:汽车行业用户决策逻辑比较清晰。一个准备购买汽车的用户,首先考虑的因素,一定是价格。有二十万预算,就买不了五十万的车,也不大会考虑十万以下的车。接下来要挑选的,就是车型了。如果家里有两个孩子,十有八九会考虑七座车;要是单身贵族,没准会弄个跑车玩玩。这两项都是比较理性甚至刚性的约束。而在这之后,才是对品牌精挑细选。因此,汽车行业的标签体系大体应该是:价格—>车型—>品牌,注意重要程度的排序是不能错的。如果从直觉上先考虑品牌、调性,那便是形式主义的思路了
效果与优势(说服力):标签没法衡量准确性,那怎么判断用户画像结果的质量呢?这里要用到reach/CTR曲线。我们以下图为例来说说。
上图是一条典型的reach/CTR曲线:它的横坐标即reach,表示的是某个标签(例如“汽车”)触及到的用户在整体用户中的占比;它的纵坐标即CTR,表示的是该标签的用户在对应类型的广告(上例中为汽车广告)上表现出来的点击率。
为什么会是一条曲线呢?因为我们在做受众定向时,往往会在用户在该标签的得分上设置一个阈值,判断是否是该类型用户,随着阈值设置的不同,reach水平就会变化,相应地CTR也就会变化。这条曲线的最右端,即reach等于100%的点,对应的CTR是该类型广告的平均点击率,这个点跟模型无关,是固定的。而随着reach的降低,一般来说CTR会对应提高(当然这一点没有理论上的保证)。一般来说,两条reach/CTR曲线相比时,整体处于上方的曲线有较好的定向性能
我再通俗一点,将用研定性发现的用户决策、使用过程成果,用算法进行模拟,使产品符合用户心智,但与定性优势在于,我可以量化我的成果,而非猜测。 期间,可以结合算法某些特性来说一下,就是开头介绍的内容,还是以汽车广告推送为例:
- 我们利用 Random Forest Tree,将用户购买决策影响因素(所谓 features )排了序,再结合之前定性调研,发现 top3 按照这样排序, 75 % 成功预测汽车是否购买(目标、效果与优势),比没有用算法高出 60 %,如果能更充分考虑因素之间关系(比如 Deep neural network )会提升至 80%,但这样做时间投入和成本太高(training time 和设备),不值得。
注释*:
- 见到算法有 “ tree/树 ”字眼,有 selection 筛选的,通常就是影响因素重要性排序,成本低
- 见到算法有 “deep neural network 、深度神经网络”字眼,就是对影响因素之间深入探讨,但成本高
总结:
想假装算法行家,在一堆不懂的人面前讲解,可以这样做:
- 上一些反面例子,告诉他们互联网讲的都是错的(用户画像就是一个好例子)—— 形成权威
- 告诉他们做算法要有产品指标思考,不是炫耀算法怎么样(告诉他们算法的价值在于解决产品问题,不是炫耀算法怎么强)—— 逐步确立权威
- 实在被人问到能否结合例子解释下,先告诉他们里面原理和代码实现很复杂,但我可以举一个用户买车例子来简单说明 —— 假装成功