中 国 科 学 技 术 大 学
UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA
机器学习与知识发现
课程实验报告
题目: 面向电信行业存量用户的智能套餐
个性化匹配模型
组员:
组内人员分工
一. 实验任务目标
利用已有的用户属性(如个人基本信息,用户画像信息等),业务属性,
消费习惯及偏好,预测最适合用户的套餐类型。
二. 数据分析
这是数据处理的第一步,在没有做任何预处理的情况下,利用第三方库对原始数
据集中各个特征分布进行可视化,这样做的目的主要是看一下原始各个特征的分
布情况。
1.单变量数据分析
上图是对 current_service 进行统计分析后的结果,可以看到此问题是一个
多分类的问题,共有 11 种套餐,并且分布不均匀。
上图是对 net_service 的统计分析结果,可以发现绝大多数都属于 4 类
上图是对 service_type 的统计分析结果,显然该变量是一个二分类的变量,
且数据分布相对比较均匀
上图是对性别统计分析的结果,由图可知,男女的数量并不接近,并且存在
一些异常值,需要在数据清洗的时候进行处理。
上图是对年龄数据进行的统计分析结果,容易发现,上图所示的分布结果符
合电信用户群体的分布。同时上图也说明数据集中的年龄数据存在很多的 0
岁异常值。
上图为 online_time 的统计分析结果,主要集中在 0 到 100 之间,比较符合
实际情况,但是在 130 的位置出现了部分异常数值。
2.多变量数据分析
上图为 online_time 和 service_type 的联合变量分析结果,容易发现
service_type 为 1 的 online_time 集中在比较小的区间,service_type 为
4 的 online_time 分布更加均匀
上 图 为 net_service 和 online_time 的 联 合 变 量 分 布 , 由 图 可 知 四 种
netservice 的 online_time 分布不尽相同。
上图为 online_time 和 is_promise_low_consume 的联合变量分析结果,由
于 is_promise_low_consume 的分布很不均匀,所以上图的 count 结果差异
很大,但是横向对比发现,is_promise_low_consume 对 online_time 影响
不大。
上图为 online_time, is_mix_service 和 contract_time 的统计分析图。
Online_time 和 contract_time 具有较强的相关性。
上图为变量相关矩阵图,表示变量间的相关性,相关性越大,上图矩形块
的颜色越浅。
三. 数据清洗
根据官方提供的数据说明可知,属性分为 NUMBER 与 VARCHAR2 两种。
首先对于 NUMBER 数据,清洗数据中包含的非数值型数据:
1. 对于 gender 属性,将’\\N’替换成数值 0,并且对格式不一的数字进行转
换
2. 对于 age, 1_total_fee, 2_total_fee, 3_total_fee, 4_total_fee 属性,
将’\\N’替换成-1
3. 对于 pay_num 以及 pay_times 属性,分别将’\\N’转换为 0 和 1,并且将数
据类型转化为浮点型
4. 将 user_id 属性从数据集中删除
对于 VARCHAR2 数据类型,为了方便之后的模型计算,因此需要将字符串类型映
射为数值型
四. 特征生成
1. 考虑每月出账金额,可以通过当前月与前一个月的出账金额的差值计算出用
户通话消费的变化
2. 根据数据集提供的多个月的出账金额,可以计算出已知月份中出账金额的最
大值、最小值以及平均值
3. 根据套外主叫通话时长 1 与套外主叫通话时长 2 得到较大值与较小值
4. 根据套外主叫通话时长 1 与套外主叫通话时长 2 得到本地通话时长
5. 使用 count 函数,计算原来特征的各个取值的个数,将其作为新的特征值。
对于 1_total_fee, 2_total_fee, 3_total_fee, 4_total_fee 使用 count
函数
6. 使用 word2evc 构建特征
Word2vec 是 Google 为了训练字词嵌套而研发的一种算法。Word2evc 基于分
布假设,将语义上相似的字词映射到几何图形上邻近的嵌套矢量。Word2vec
通过训练神经网络来区分实际共同出现的多组字词与随机出现在一起的字词,
从而充分利用此类上下文信息。这里使用的是四组账单数据,将账单金额当
作文本标签,窗口为 2,因为业务上很少有规则会跳过中间某个月。词向量