赛题理解
个人认为在比赛当中,拿到一个新的比赛题目的时候时,个人认为应该先对问题进行分析。也就是我们呢通常所说的“任务驱动”,在这样的情况下,要知道的是,对结果评价的指标是什么,因为在一定程度上,评估标准决定了我们的分数。(这个有点像我们考试的时候,去揣摩批卷老师的心理大概是一样的😂
数据/比赛链接:二手车交易价格预测
评估指标
若真实值为
y
=
(
y
1
,
y
2
,
.
.
.
,
y
n
)
y = (y_1,y_2,...,y_n)
y=(y1,y2,...,yn),模型的预测值为
y
^
=
(
y
1
^
,
y
2
^
,
.
.
.
,
y
n
^
)
\hat{y}= (\hat{y_1},\hat{y_2},...,\hat{y_n})
y^=(y1^,y2^,...,yn^)那么该模型的
M
A
E
MAE
MAE计算公式为:
M
A
E
=
∑
i
=
1
n
∣
y
i
−
y
^
i
∣
n
M A E=\frac{\sum_{i=1}^{n}\left|y_{i}-\hat{y}_{i}\right|}{n}
MAE=n∑i=1n∣yi−y^i∣
M
A
E
MAE
MAE越小,说明模型预测得越准确。
其他常见的评估指标:
MSE、RMSE、R-Squared
之后会对评估指标进行一个汇总进行总结。
数据理解
总数据量超过40w,包含31列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取15万条作为训练集,5万条作为测试集A,5万条作为测试集B,同时会对name、model、brand和regionCode等信息进行脱敏。
以下的数据我们使用R语言进行分析。
数据读取
因为起初我对数据进行读取,看到得到的数据分割符是空格,因此我们需要使用sep对数据进行分割。
sample_submit <- read.csv('used_car_sample_submit.csv',encoding = 'UTF-8')
test_data <- read.csv('used_car_testA_20200313.csv',encoding = 'UTF-8',sep = '')
train_data <- read.csv('used_car_train_20200313.csv',encoding = 'UTF-8',sep = '')
summary(train_data)
R语言评估指标代码实例
ROC曲线
ROC曲线正是由两个变量1-specificity(x轴) 和 Sensitivity(y轴)绘制的,其中1-specificity为FPR,Sensitivity为TPR。随着阈值的改变,就能得到每个阈值所对应的1-specificity和Sensitivity,最后绘制成图像。
# 对数据进行读取
library(ROCR)
data(ROCR.simple)
ROCR.simple<-as.data.frame(ROCR.simple)
head(ROCR.simple)
#绘制ROC曲线
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
perf <- performance(pred,"tpr","fpr")
plot(perf,colorize=TRUE)
AUC值
AUC值就是ROC曲线下的面积,可以通过以下代码计算:
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
auc.tmp <- performance(pred,"auc")
auc <- as.numeric(auc.tmp@y.values)
总结
这一步是我们对数据分析理解的前提。或者说是基础知识,因此我在最先的这个部分写出来。方便之后的查阅。
一些常见的问题
Q:关于数据分析、机器学习、统计建模关系
A:我用这个图对这个问题进行解答,
1、什么是简单问题?
比如公司领导想知道每周的销售情况,这种就是简单问题。简单问题可以用数据分析来处理,通过分析数据来分析出有用的信息。
2、什么是复杂问题?
比如我们天天使用的淘宝,它会根据你的历史购物习惯(数据),来给推荐你可能感兴趣的商品。淘宝是如何做到的呢?对于这种复杂问题,淘宝背后使用的就是机器学习。
关于如何界定简单问题和复杂问题?
我个人认为是在这个工作中,所设计到变量的大小、计算的整体步骤、模型的大小。
以上仅个人理解,如有错误欢迎指出。