### 机器学习与知识发现课程实验报告:面向电信行业存量用户的智能套餐个性化匹配模型
#### 实验背景与目的
随着大数据技术的发展,机器学习在各行业的应用越来越广泛,尤其是在电信行业,通过对用户行为数据的深度挖掘,可以帮助企业实现更精准的服务推荐。本实验选取了中国科学技术大学的“机器学习与知识发现”课程中一个典型的应用案例——面向电信行业存量用户的智能套餐个性化匹配模型。其目的是利用已有的用户属性(如个人基本信息、用户画像信息等)、业务属性、消费习惯及偏好等因素,预测最适合用户的套餐类型。
#### 数据分析
在实验过程中,首先进行了数据的初步探索性分析,主要包括单变量数据分析和多变量数据分析两大部分。
**1. 单变量数据分析**
- **current_service**:通过对该变量进行统计分析后,发现这是一个多分类问题,共有11种不同的套餐服务,且这些服务类型的分布不均匀。
- **net_service**:对**net_service**的统计分析显示,绝大多数样本属于第4类,这表明在该数据集中,特定类型的网络服务占据了主导地位。
- **service_type**:该变量是一个二分类变量,数据分布较为均匀,说明不同服务类型之间的比例大致相当。
- **性别**:性别数据分布不均,且存在异常值(如性别未知的情况用特殊符号表示),这部分异常数据需在后续的数据预处理步骤中予以处理。
- **年龄**:年龄分布结果显示,数据集中存在大量的0岁异常值,这可能是因为部分用户未填写或错误填写年龄信息。
- **online_time**:在线时间分布主要集中在0到100之间,但也有部分异常值位于130附近,这部分异常数据同样需要进行处理。
**2. 多变量数据分析**
- **online_time和服务类型(service_type)**:观察到当服务类型为1时,用户的在线时间通常较短;当服务类型为4时,用户在线时间分布则更为均匀。
- **net_service与online_time**:四种不同的网络服务类型对应的在线时间分布情况各不相同。
- **online_time、is_promise_low_consume与合同时间(contract_time)**:尽管is_promise_low_consume的分布极不均匀,但从横向对比来看,这一变量对在线时间的影响不大;此外,还发现在线时间和合同时间之间存在较强的关联性。
#### 数据清洗
针对原始数据中存在的噪声和缺失值等问题,实验采用了以下几种方法进行数据清洗:
- **NUMBER类型数据**:对于性别属性,将’\\N’替换为0;对于年龄等数值型属性,将’\\N’替换为-1;对于支付次数和支付时间属性,分别将’\\N’替换为0和1,并确保数据类型转换为浮点型。
- **VARCHAR2类型数据**:对于非数值型属性,采用映射方式将其转换为数值型,以便于后续的模型计算。
#### 特征生成
为了更好地捕捉数据中的潜在模式并提高模型性能,实验团队还进行了特征工程的工作,具体包括:
- **出账金额的变化**:通过计算当前月与前一个月的出账金额差值来反映用户通话消费的变化趋势。
- **出账金额的最大值、最小值及平均值**:通过分析多个月份的出账金额数据,计算出最大值、最小值及平均值,以此来表征用户消费水平的波动。
- **通话时长的统计**:基于套外主叫通话时长数据,计算出本地通话时长的最大值和最小值。
- **特征计数**:使用count函数计算原始特征的各个取值频率,作为新的特征加入到数据集中。
- **使用word2vec构建特征**:利用Word2vec算法生成特征向量,其中将账单金额视作文本标签,通过训练神经网络来区分实际共同出现的多组账单金额与随机出现的账单金额,利用这种上下文信息构建更丰富的特征。
#### 实验条件
- **数据集**:本次实验使用的训练集包含743,990条数据,测试集包含200,000条数据,每个数据包含25个特征,目标是在测试集上预测current_type(即最合适的套餐类型)。
- **评估**:由于官方提供的测试集没有真实的标签数据,且无法在线提交评分,因此本次实验主要是在官方提供的训练集上进行验证和调整。
通过本实验的学习和实践,不仅能够深入了解如何运用机器学习技术解决实际问题,还能掌握数据预处理、特征工程等关键技术环节,对于提升学生在机器学习领域的综合能力具有重要意义。