1.赛题理解

1.1 赛题概况

  • 题源:零基础入门数据挖掘 - 二手车交易价格预测
  • 仓库:github 比赛要求参赛选手根据给定的数据集,建立模型,二手汽车的交易价格。

来自 Ebay Kleinanzeigen 报废的二手车,数量超过 370,000,包含 20 列变量信息,为了保证 比赛的公平性,将会从中抽取 10 万条作为训练集,5 万条作为测试集 A,5 万条作为测试集 B。同时会对名称、车辆类型、变速箱、model、燃油类型、品牌、公里数、价格等信息进行 脱敏。

1.2 数据概况

train.csv

  • name - 汽车编码
  • regDate - 汽车注册时间
  • model - 车型编码
  • brand - 品牌
  • bodyType - 车身类型
  • fuelType - 燃油类型
  • gearbox - 变速箱
  • power - 汽车功率
  • kilometer - 汽车行驶公里
  • notRepairedDamage - 汽车有尚未修复的损坏
  • regionCode - 看车地区编码
  • seller - 销售方
  • offerType - 报价类型
  • creatDate - 广告发布时间
  • price - 汽车价格
  • v_0’, ‘v_1’, ‘v_2’, ‘v_3’, ‘v_4’, ‘v_5’, ‘v_6’, ‘v_7’, ‘v_8’, ‘v_9’, ‘v_10’, ‘v_11’, ‘v_12’, ‘v_13’,‘v_14’(根据汽车的评论、标签等大量信息得到的embedding向量)【人工构造 匿名特征】  
    数字全都脱敏处理,都为label encoding形式,即数字形式

1.3 预测指标


本赛题的评价标准为MAE(Mean Absolute Error):

数据挖掘算法比赛 数据挖掘赛题_MSE

其中数据挖掘算法比赛 数据挖掘赛题_MSE_02代表第数据挖掘算法比赛 数据挖掘赛题_数据挖掘算法比赛_03个样本的真实值,其中数据挖掘算法比赛 数据挖掘赛题_数据挖掘算法比赛_04代表第数据挖掘算法比赛 数据挖掘赛题_数据挖掘算法比赛_03个样本的预测值。

注::一般问题评价指标说明:

什么是评估指标:

评估指标即是我们对于一个模型效果的数值型量化。(有点类似与对于一个商品评价打分,而这是针对于模型效果和理想效果之间的一个打分)

一般来说分类和回归问题的评价指标有如下一些形式:

分类算法常见的评估指标如下:
  • 对于二类分类器/分类算法,评价指标主要有accuracy, [Precision,Recall,F-score,Pr曲线],ROC-AUC曲线。
  • 对于多类分类器/分类算法,评价指标主要有accuracy, [宏平均和微平均,F-score]。
对于回归预测类常见的评估指标如下:
  • 平均绝对误差(Mean Absolute Error,MAE),均方误差(Mean Squared Error,MSE),平均绝对百分误差(Mean Absolute Percentage Error,MAPE),均方根误差(Root Mean Squared Error), R2(R-Square)

平均绝对误差
平均绝对误差(Mean Absolute Error,MAE):平均绝对误差,其能更好地反映预测值与真实值误差的实际情况,其计算公式如下:
数据挖掘算法比赛 数据挖掘赛题_数据挖掘_06

均方误差
均方误差(Mean Squared Error,MSE),均方误差,其计算公式为:
数据挖掘算法比赛 数据挖掘赛题_分类算法_07

R2(R-Square)的公式为
残差平方和:
数据挖掘算法比赛 数据挖掘赛题_数据挖掘算法比赛_08
总平均值:
数据挖掘算法比赛 数据挖掘赛题_分类算法_09

其中数据挖掘算法比赛 数据挖掘赛题_数据挖掘算法比赛_10表示数据挖掘算法比赛 数据挖掘赛题_数据挖掘_11的平均值
得到数据挖掘算法比赛 数据挖掘赛题_数据挖掘_12表达式为:
数据挖掘算法比赛 数据挖掘赛题_评价指标_13
数据挖掘算法比赛 数据挖掘赛题_数据挖掘_12用于度量因变量的变异中可由自变量解释部分所占的比例,取值范围是 0~1,数据挖掘算法比赛 数据挖掘赛题_数据挖掘_12越接近1,表明回归平方和占总平方和的比例越大,回归线与各观测点越接近,用x的变化来解释y值变化的部分就越多,回归的拟合程度就越好。所以数据挖掘算法比赛 数据挖掘赛题_数据挖掘_12也称为拟合优度(Goodness of Fit)的统计量。

数据挖掘算法比赛 数据挖掘赛题_MSE_02表示真实值,数据挖掘算法比赛 数据挖掘赛题_数据挖掘算法比赛_04表示预测值,数据挖掘算法比赛 数据挖掘赛题_评价指标_19表示样本均值。得分越高拟合效果越好。

2.EDA-数据探索性分析

2.1 EDA目标

  • EDA的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
  • 当了解了数据集之后我们下一步就是要去了解变量间的相互关系以及变量与预测值之间的存在关系。
  • 引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠。
  • 完成对于数据的探索性分析,并对于数据进行一些图表或者文字总结并打卡。

2.2代码示例

2.2.1 载入数据:

#coding:utf-8
#导入warnings包,利用过滤器来实现忽略警告语句。
import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import missingno as msno
## 1) 载入训练集和测试集;
Train_data = pd.read_csv('data/used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv('data/used_car_testA_20200313.csv', sep=' ')
## 2) 简略观察数据(head()+shape)
Train_data.head().append(Train_data.tail())  # **前5行数据+后5行数据**
Train_data.shape

同样分别输出test

2.2.2 总览数据概况

  1. describe种有每列的统计量,个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值 看这个信息主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 -1 等值这些其实都是nan的另外一种表达方式,有的时候需要注意下
  2. info 通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常
## 1) 通过describe()来熟悉数据的相关统计量
Train_data.describe()
## 2) 通过info()来熟悉数据类型
Train_data.info()

2.2.3判断数据缺失和异常

pandas内置了isnull()可以用来判断是否有缺失值,它会对空值和NA进行判断然后返回True或False。

## 1) 查看每列的存在nan情况
Train_data.isnull().sum()
Test_data.isnull().sum()
# nan可视化
missing = Train_data.isnull().sum()
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()

可视化nan的用途是:通过以上两句可以很直观的了解哪些列存在 “nan”, 并可以把nan的个数打印,主要的目的在于 nan存在的个数是否真的很大,如果很小一般选择填充,如果使用lgb等树模型可以直接空缺,让树自己去优化,但如果nan存在的过多、可以考虑删掉。

可以看出来‘ - ’也为空缺值,因为很多模型对nan有直接的处理,这里我们先不做处理,先替换成nan

Train_data['notRepairedDamage'].replace('-', np.nan, inplace=True)
Train_data['notRepairedDamage'].value_counts()

2.2.4 了解预测值的分布

本题中最佳拟合是无界约翰逊分布

数据挖掘算法比赛 数据挖掘赛题_MSE_20


数据挖掘算法比赛 数据挖掘赛题_分类算法_21


数据挖掘算法比赛 数据挖掘赛题_数据挖掘算法比赛_22


概念

skew、kurt 一.偏度(Skewness)

Definition:是描述数据分布形态的统计量,其描述的是某总体取值分布的对称性,简单来说就是数据的不对称程度。。

偏度是三阶中心距计算出来的。

(1)Skewness = 0 ,分布形态与正态分布偏度相同。

(2)Skewness > 0 ,正偏差数值较大,为正偏或右偏。长尾巴拖在右边,数据右端有较多的极端值。

(3)Skewness < 0 ,负偏差数值较大,为负偏或左偏。长尾巴拖在左边,数据左端有较多的极端值。

(4)数值的绝对值越大,表明数据分布越不对称,偏斜程度大。

计算公式:

Skewness=E[((x-E(x))/(\sqrt{D(x)}))^3]

| Skewness| 越大,分布形态偏移程度越大。

二.峰度(Kurtosis)
Definition:偏度是描述某变量所有取值分布形态陡缓程度的统计量,简单来说就是数据分布顶的尖锐程度。
峰度是四阶标准矩计算出来的。
(1)Kurtosis=0 与正态分布的陡缓程度相同。
(2)Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰
(3)Kurtosis<0 比正态分布的高峰来得平台——平顶峰
计算公式:
Kurtosis=E[ ( (x-E(x))/ (\sqrt(D(x))) )^4 ]-3

同时下一步由于数据较为集中,这就给预测模型的预测带来比较大的困难,所以可以进行一次log运算改善一下分布,有利于后续的预测。

2.2.5 数字特征分析

2.2.6类别特征分析