做好特征工程
由论文中的启发《who will you share a ride with: factors that influence trust of potential rideshare partners》
引言:在Urbcomputring 2017的会议论文上我看到了这样一篇文章,文章大意是介绍在城市计算领域的研究点-拼车这个问题上。阻碍人们进行拼车行为的原因是人们之间的信任问题。因此本文提出一种将拼车服务与在线社交媒体连接,以评定一个人是否值得信任。对于这样的二值问题,采用的方法就是逻辑回归。本博文我主要是介绍其挖掘特征的过程。以此来学习如何做好特征工程。
文章的主要数据来源是Instagram。从这个网站中,我们可以得到如下数据类型:用户信息(用户名,全称,自我简介)、用户账号信息(关注人的数量,被关注的人的数量,上传图片的数量)、上传图片信息(点赞数,评论数,创建时间,图片的描述,图片的主题标签)。从这样的一堆属性中,我们挖掘出有用的关键的特征,是我们接下来做的工作。
特征分析
首先迎面扑来的是两种特征分析方法:EFA(Exploratory Factor Analysis),CFA(Confirmatory Factor Analysis)。两者的不同在于EFA适用于发现复杂的模式,即发现重要特征。而CFA用于验证假设。在我们的例子中,我们并不知道所谓的模式,在原始的一堆特征中,并不是每个特征都是那么重要。所以我们选择EFA作为我们的特征筛选工具。这个过程如下:
- 我们检查EFA查看是否适合解决我们的问题。
- 选择合适的特征抽取方法。
- 决定需要留下多少特征。
- 我们选择循环的方法产生最后的结果。
- 给每个最终的特征一个合适的解释。
过程图示如下:
1.在检验数据适应度的评价时,是使用测试样本频率的Kaiser-Meyer-OIkin方法。KMO的值越接近1表示越好。在本例中,KMO的值在0.714,比一般的baseline要好,所以就可以使用EFA方法了。另外我们使用Bartlett’s Test of Sphericity 测试关联矩阵是个单位阵。结果很小,表示属性之间的关联性很大。
于是乎,我们需要做做特征抽取工作。
2.使用PCA降维
3.特征保留方法。这里有几个特征保留的标准【1】主要是Kaiser’s criteria,Scree test 和 cumulative percent of variance extracted。 然而这些方法的结果一般都不一致。所以,我们采用综合考虑这些方法。分三步走:(1)通过Kaiser’s criteria计算出结果,选出排在前几的结果。(2)我们然后通过scree Test 得到曲线改变得厉害的点。(3)cumulative variance 是86.563%比50-60%高。
4.在rotation操作(orthogonal varimax approach)后,不同特征的属性间没有重叠的部分。
5.选出rotation后,每个特征下的比较大的几个属性,作为组合特征。最终得到了三个特征social proof、social approval、user self-disclosure。
至此,特征工程的任务就完成了,后面就是使用模型,解决结果的问题了。