每次遇到数据整理中的补缺,就觉得像是在原始森林,怎么走都可以,怎么走都有无限未来。但每每都知道,选择了一条路,就肯定会错过其余的风景。真是好懊恼,是A更有惊喜,还是B更有潜力,或是其实还有一个C?
常见的例子是,用户年龄会有缺失,可以先直接建模补缺;也可以先把年龄分段后,再作补缺处理;也可以将缺失的年龄指定成为某个固定值。但首先,我们需要关注的是,为什么这个字段会有缺失;这种对缺失原因的理解,有时候能够帮助我们找到一个更合适的补缺方法。
其实有时候,缺失仅仅是因为数据记录的格式引起,比如,当用户没有发生过所关注的行为,数据库可以什么都不用记,也可以记成0。这时候,这种缺失直接补个0就是了;这种例子就是每当我们要计算用户的购买次数之类的时候。
有时候,数据缺失,可能是因为记录数据的开始时间引起,比如,如果从今年才开始记录用户有史以来的第一次购买时间,那么很难解释用户的缺失,到底是因为从来没有购买过呢,还是最近一次购买发生在数据开始记录之前呢?我们可以认为这些缺失的用户发生过购买,并且将时间强制设定为数据开始记录的那天;或者是认为这些用户从没有发生过购买;——都说得通,对不对?这时候就似乎是在考验你到底是相信人性善,还是人性恶。其实有另一个解决的办法是,给变量加一个时间限制,缩小范围关注自数据开始记录起的用户行为;只要能够符合商业上的需求,也许我们可以避开这类的道德问题。
更有时候,数据的缺失是用户引起的。比如,我们有时候会遇到用户没有性别的信息,当然,用决策或者树确实可以很容易的作一个性别的判断;但是,在排除了数据记录上的问题之后,有没有可能是用户自己不原意填写性别呢。这时候,虽然缺失无法反映用户的性别,但是他却能够从侧面反映出,用户对个人隐私的关注,用户对安全的介意,这种信息,有时候也值得放弃补缺成男或女,而是干脆作为无,看能否帮助建模。
产生数据缺失的原因有很多种,对应补缺方案有更多种,很难评判哪种方案更接近尽善尽美;但是我们可以试着去评判,哪种方法更接近商业的目的。归根结底,建模是为商业服务的。
加载中,请稍候......