zl程序教程

您现在的位置是:首页 >  APP

当前栏目

机器学习—通过 APP 预测用户性别

2023-03-20 14:58:00 时间

项目描述

公司组织的一个机器学习的小比赛, 数据下载地址 。大意是根据用户所安装的 APP (加密)预测用户的性别,训练数据标记 label (性别),典型的监督学习方案。

数据描述

下载之后,解压成为文本文件。 数据格式如下: 每一行代表一个用户的数据,一共120万个样本用户数据 每一行都有5列,每一列以制表符 tab 分割( )。 第一列是用户编号(已经脱敏,转化成1 ~1,200,000的编号) 第二列是用户的性别 (male/female) 第三列是用户的移动设备类型 第四列是用户的 APP 列表,每个 APP 已经脱敏,以数字编号代替 APP 名称。多个 APP 之间以逗号(,)作为分隔符 第五列是用户所在区域。

其中移动设备类型/APP 列表/区域是特征数据。性别是结果数据。

方案

首先分析数据,一共有机型、APP、区域三个维度。性别可能对 APP 和机型有偏好,但是不能对区域有偏好,而是不同的区域可能对 APP 有不同的偏好,比如某省用户偏爱直播,某省用户偏爱交友等等。

建模方案,把 APP 和 机型(数值化)作为两个维度对数据进行训练,分区域建模,不同的区域使用不同的模型。然后使用全部数据或随机部分数据建模形成公共数据模型,公共模型用来分析用户区域数据不足或者来自未建模区域的数据。

具体实现

技术方案:Python + scikit-learn + pandas + numpy

环境搭建使用 Anaconda

代码地址

项目难点

项目困难主要出现在 APP 降维,也就是判断哪些 APP 与性别相关,这是一个相关性分析的问题。网上找了很多资料,算法描述也有,不过没有找到合适的 Python 实现。Spark 版本的倒是很多,可是不想在一个小项目里面使用两种技术栈。

进度

目前使用上海数据建模,只使用 APP 信息,未加入机型信息,预测准确度大约为79%。 后面会加入机型信息,并使用特征提取对 APP 信息进行降维,希望能提高准确率。

说明

由于公司政策原因,代码不能放入 github,后续会把思路和核心代码写出来。