零基础入门数据挖掘-Task1 赛题理解

Datawhale 零基础入门数据挖掘-Task1 赛题理解

前言

赛题:零基础入门数据挖掘 - 二手车交易价格预测
地址:https://tianchi.aliyun.com/competition/entrance/231784/information
时间:2020.03.21


数据概况

数据:训练集 - 15万;测试集A - 5万;测试集B - 5万;对 name、model、brand 和 regionCode 等信息进行脱敏

train.csv

SaleID - 销售样本ID	# ID不可用特征
name - 汽车编码	
regDate - 汽车注册时间
model - 车型编码	# IF 丰田 进口丰田 一汽丰田,车牌号
brand - 品牌	# IF, 二手车更看重质量,物美价廉,品牌决定下限
bodyType - 车身类型	# 两厢车 三厢车 掀背车 旅行车 硬顶敞篷车 软顶敞篷车 跑车 MPV SUV
fuelType - 燃油类型	# 燃料价格和车身类型 IF, 汽油油价 - SUV
gearbox - 变速箱	# 手动变速箱 IF
power - 汽车功率	# IF
kilometer - 汽车行驶公里	# IF
notRepairedDamage - 汽车有尚未修复的损坏	# IF,试车须知
regionCode - 看车地区编码	# IF,不同地方,不同经济水平,不同地理环境,适用车型不同
seller - 销售方	# 一般二手车商会去拍卖会,4s店等地方拿车,然后再在市场销售
offerType - 报价类型
creatDate - 广告发布时间	# 可能和当时社会经济有关
price - 汽车价格	# IF
# 【匿名特征,包含v0-14在内15个匿名特征】 
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'
# 个人补充特征 
当时的社会经济状况 - 当燃油汽车被新能源取代,国家扶持政策等
二手烟 - 吸烟与不吸烟
汽车颜色 - 那种颜色更好? IF
轮胎新旧
改装车
保值率高低因素影响 - 汽车的性能、价格变动幅度、可靠性、配件价格及维修便捷程度等
保养的好坏对价格的影响最值得关注
年限对二手车价位的影响是起决定性作用的
保险金和过户费
。。。先这些, 部分特征有交集。。。

预测指标

二手车交易价格预测的模型评价标准为 MAE(Mean Absolute Error):
M A E = ∑ i = 1 n ∣ y i − y ^ i ∣ n MAE = \frac{∑^n_{i=1}|yi−\hat{y}_{i}|}{n} MAE=ni=1nyiy^i
其中 y i y_i yi代表第i个样本的真实值,其中 y ^ i \hat{y}_{i} y^i代表第i个样本的预测值。MAE代表平均绝对误差,是回归预测常用的评价指标。MAE值越小,表示误差越小,模型效果越好。

这里拓展一下其它的分类和回归评价指标:

分类算法常见的评估指标

  • 对于二元分类器/分类算法,评价指标主要有accuracy,[PrecisionRecallF-scorePr曲线],ROC-AUC曲线
  • 对于多元分类器/分类算法,评价指标主要有accuracy, [宏平均和微平均F-score]

准确率、精确率、召回率、F-score、宏平均和微平均

回归预测类常见的评估指标

  • 平均绝对误差 (Mean Absolute Error,MAE)
  • 均方误差 (Mean Squared Error,MSE)
  • 平均绝对百分误差 (Mean Absolute Percentage Error,MAPE)
  • 均方根误差 (Root Mean Squared Error)
  • R 2 R^2 R2 (R-Square)

平均绝对误差(Mean Absolute Error,MAE) 平均绝对误差,其能更好地反映预测值与真实值误差的实际情况,其计算公式如下:
M A E = ∑ i = 1 n ∣ y i − y ^ i ∣ n MAE = \frac{∑^n_{i=1}|yi−\hat{y}_{i}|}{n} MAE=ni=1nyiy^i

均方误差(Mean Squared Error,MSE),均方误差,其计算公式为:
M S E = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 MSE=\frac{1}{N} \sum_{i=1}^{N}\left(y_{i}-\hat{y}_{i}\right)^{2} MSE=N1i=1N(yiy^i)2

R 2 R^2 R2(R-Square)的公式为:

  • 残差平方和:
    S S r e s = ∑ ( y i − y ^ i ) 2 SS_{res}=\sum\left(y_{i}-\hat{y}_{i}\right)^{2} SSres=(yiy^i)2

  • 总平均值:
    S S t o t = ∑ ( y i − y ‾ i ) 2 SS_{tot}=\sum\left(y_{i}-\overline{y}_{i}\right)^{2} SStot=(yiyi)2

其中 y ‾ \overline{y} y表示y的平均值, R 2 R^2 R2表达式为:
R 2 = 1 − S S r e s S S t o t = 1 − ∑ ( y i − y ^ i ) 2 ∑ ( y i − y ‾ ) 2 R^{2}=1-\frac{SS_{res}}{SS_{tot}}=1-\frac{\sum\left(y_{i}-\hat{y}_{i}\right)^{2}}{\sum\left(y_{i}-\overline{y}\right)^{2}} R2=1SStotSSres=1(yiy)2(yiy^i)2

R 2 R^2 R2用于度量因变量的变异中可由自变量解释部分所占的比例,取值范围是 0~1, R 2 R^2 R2越接近1,表明回归平方和占总平方和的比例越大,回归线与各观测点越接近,用x的变化来解释y值变化的部分就越多,回归的拟合程度就越好。所以 R 2 R^2 R2也称为拟合优度(Goodness of Fit)的统计量。

y i y_i yi表示真实值, y ^ i \hat{y}_i y^i表示预测值, y ‾ i \overline{y}_i yi表示样本均值。 R 2 R^2 R2得分越高拟合效果越好。


分析赛题

  • 传统的数据挖掘问题,应用机器学习或深度学习建模解决
  • 典型的回归问题,主要应用xgb、lgb、catboost、pandas、numpy、matplotlib、seabon、sklearn、keras等工具分析
  • 通过EDA来挖掘数据的联系和自我熟悉数据

代码实现

# pandas 读取数据
import pandas as pd
import numpy as np

## 1) 载入训练集和测试集;
path = './datalab/231784/'
Train_data = pd.read_csv(path+'used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv(path+'used_car_testA_20200313.csv', sep=' ')

print('Train data shape:',Train_data.shape) # (150000, 31)
print('Test_A data shape:',Test_data.shape)	# (50000, 30)

# 分类指标评价计算示例
## accuracy
from sklearn.metrics import accuracy_score
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 1]
print('ACC:',accuracy_score(y_true, y_pred)) # 0.75
## Precision,Recall,F1-score
from sklearn import metrics
y_pred = [0, 1, 0, 0]
y_true = [0, 1, 0, 1]
print('Precision',metrics.precision_score(y_true, y_pred))  # 1.0
print('Recall',metrics.recall_score(y_true, y_pred))  # 0.5
print('F1-score:',metrics.f1_score(y_true, y_pred)) # 0.666
## AUC
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:', roc_auc_score(y_true, y_scores))  # 0.75

# 回归指标评价计算示例
from sklearn import metrics
## MAPE需要自己实现
def mape(y_true, y_pred):
    return np.mean(np.abs((y_pred - y_true) / y_true))

y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0])
y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2])
## MSE
print('MSE:', metrics.mean_squared_error(y_true, y_pred))
## RMSE
print('RMSE:', np.sqrt(metrics.mean_squared_error(y_true, y_pred)))
## MAE
print('MAE:', metrics.mean_absolute_error(y_true, y_pred))
## MAPE
print('MAPE:', mape(y_true, y_pred))
## R2-score
from sklearn.metrics import r2_score
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
print('R2-score:', r2_score(y_true, y_pred))

经验总结

赛题理解是极其重要的,对于赛题的理解甚至会影响后续的特征工程构建以及模型的选择,最主要是会影响后续发展工作的方向,比如挖掘特征的方向或者解决问题的方向。主要分为几个方面:

  • 理解什么:是什么类型的问题?哪些特征是有意义的?特征与目标间的相关性?特征与特征间的相关性?这些特征能否做到线上线下的一致性,能否有利于进一步探索更高线上分数的线下验证方法?这题的难点可能在哪里,关键点可能在哪里,哪些地方可以挖掘更好的特征,用什么样的线下验证方式更为稳定,出现了过拟合或其他问题,预计可以用什么方法来解决,哪些数据是可靠的,哪些数据是干扰的,哪些数据是需要精密处理的等
  • 评价指标:构建一个合理的本地验证集和验证的评价指标是很关键的步骤,能有效的节省时间
  • 可能隐藏的条件: 比如高效性要求,比如对于数据异常的识别处理(缺失值、极端值),比如工序流程的差异性,比如模型运行时间,比如模型的鲁棒性。如果模型预测效果不好,也要反过来思考,是不是赛题理解不到位或有什么背景问题没考虑到。

关于 Datawhale

Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结。

— End —
By: AI蜗牛车

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值