Housing Prices Competition for Kaggle Learn Users

翻译自House Prices: 1st Approach to Data Science Process

探索式分析数据

除了其他的之外,数据探索主要包含以下步骤:

  1. 对获得的数据有一个初步印象
  2. 检查缺失值
  3. 探测潜在的异常值
  4. 分析特征间的关联度信息
  5. 检查数据偏斜度

初始印象

导入数据后,查看几行数据,对数据有一个初步印象,本次数据集包含79个特征,共1460条数据。

    MSSubClass	MSZoning	LotFrontage	LotArea	Street	Alley	LotShape	LandContour	Utilities	LotConfig	LandSlope	Neighborhood	Condition1	Condition2	BldgType	HouseStyle	OverallQual	OverallCond	YearBuilt	YearRemodAdd	RoofStyle	RoofMatl	Exterior1st	Exterior2nd	MasVnrType	MasVnrArea	ExterQual	ExterCond	Foundation	BsmtQual	BsmtCond	BsmtExposure	BsmtFinType1	BsmtFinSF1	BsmtFinType2	BsmtFinSF2	BsmtUnfSF	TotalBsmtSF	Heating	HeatingQC	CentralAir	Electrical	1stFlrSF	2ndFlrSF	LowQualFinSF	GrLivArea	BsmtFullBath	BsmtHalfBath	FullBath	HalfBath	BedroomAbvGr	KitchenAbvGr	KitchenQual	TotRmsAbvGrd	Functional	Fireplaces	FireplaceQu	GarageType	GarageYrBlt	GarageFinish	GarageCars	GarageArea	GarageQual	GarageCond	PavedDrive	WoodDeckSF	OpenPorchSF	EnclosedPorch	3SsnPorch	ScreenPorch	PoolArea	PoolQC	Fence	MiscFeature	MiscVal	MoSold	YrSold	SaleType	SaleCondition	SalePrice
Id																																																																																
1456	60	RL	62.0	7917	Pave	NaN	Reg	Lvl	AllPub	Inside	Gtl	Gilbert	Norm	Norm	1Fam	2Story	6	5	1999	2000	Gable	CompShg	VinylSd	VinylSd	None	0.0	TA	TA	PConc	Gd	TA	No	Unf	0	Unf	0	953	953	GasA	Ex	Y	SBrkr	953	694	0	1647	0	0	2	1	3	1	TA	7	Typ	1	TA	Attchd	1999.0	RFn	2	460	TA	TA	Y	0	40	0	0	0	0	NaN	NaN	NaN	0	8	2007	WD	Normal	175000
1457	20	RL	85.0	13175	Pave	NaN	Reg	Lvl	AllPub	Inside	Gtl	NWAmes	Norm	Norm	1Fam	1Story	6	6	1978	1988	Gable	CompShg	Plywood	Plywood	Stone	119.0	TA	TA	CBlock	Gd	TA	No	ALQ	790	Rec	163	589	1542	GasA	TA	Y	SBrkr	2073	0	0	2073	1	0	2	0	3	1	TA	7	Min1	2	TA	Attchd	1978.0	Unf	2	500	TA	TA	Y	349	0	0	0	0	0	NaN	MnPrv	NaN	0	2	2010	WD	Normal	210000
1458	70	RL	66.0	9042	Pave	NaN	Reg	Lvl	AllPub	Inside	Gtl	Crawfor	Norm	Norm	1Fam	2Story	7	9	1941	2006	Gable	CompShg	CemntBd	CmentBd	None	0.0	Ex	Gd	Stone	TA	Gd	No	GLQ	275	Unf	0	877	1152	GasA	Ex	Y	SBrkr	1188	1152	0	2340	0	0	2	0	4	1	Gd	9	Typ	2	Gd	Attchd	1941.0	RFn	1	252	TA	TA	Y	0	60	0	0	0	0	NaN	GdPrv	Shed	2500	5	2010	WD	Normal	266500
1459	20	RL	68.0	9717	Pave	NaN	Reg	Lvl	AllPub	Inside	Gtl	NAmes	Norm	Norm	1Fam	1Story	5	6	1950	1996	Hip	CompShg	MetalSd	MetalSd	None	0.0	TA	TA	CBlock	TA	TA	Mn	GLQ	49	Rec	1029	0	1078	GasA	Gd	Y	FuseA	1078	0	0	1078	1	0	1	0	2	1	Gd	5	Typ	0	NaN	Attchd	1950.0	Unf	1	240	TA	TA	Y	366	0	112	0	0	0	NaN	NaN	NaN	0	4	2010	WD	Normal	142125
1460	20	RL	75.0	9937	Pave	NaN	Reg	Lvl	AllPub	Inside	Gtl	Edwards	Norm	Norm	1Fam	1Story	5	6	1965	1965	Gable	CompShg	HdBoard	HdBoard	None	0.0	Gd	TA	CBlock	TA	TA	No	BLQ	830	LwQ	290	136	1256	GasA	Gd	Y	SBrkr	1256	0	0	1256	1	0	1	1	3	1	TA	6	Typ	0	NaN	Attchd	1965.0	Fin	1	276	TA	TA	Y	736	68	0	0	0	0	NaN	NaN	NaN	0	6	2008	WD	Normal	147500

数值型特征

包括目标值,数值型特征总共有37个。
需要注意两点:

  1. 异常值可能会导致数值型的特征被误认为是离散型数据
  2. 离散型且有限个数的数值型特征也可能会被误认为是离散型数据

下面是数值型数据的统计数据值。

MSSubClass	LotFrontage	LotArea	OverallQual	OverallCond	YearBuilt	YearRemodAdd	MasVnrArea	BsmtFinSF1	BsmtFinSF2	BsmtUnfSF	TotalBsmtSF	1stFlrSF	2ndFlrSF	LowQualFinSF	GrLivArea	BsmtFullBath	BsmtHalfBath	FullBath	HalfBath	BedroomAbvGr	KitchenAbvGr	TotRmsAbvGrd	Fireplaces	GarageYrBlt	GarageCars	GarageArea	WoodDeckSF	OpenPorchSF	EnclosedPorch	3SsnPorch	ScreenPorch	PoolArea	MiscVal	MoSold	YrSold	SalePrice
count	1460.0	1201.00	1460.00	1460.00	1460.00	1460.00	1460.00	1452.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1379.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.00	1460.0
mean	56.9	70.05	10516.83	6.10	5.58	1971.27	1984.87	103.69	443.64	46.55	567.24	1057.43	1162.63	346.99	5.84	1515.46	0.43	0.06	1.57	0.38	2.87	1.05	6.52	0.61	1978.51	1.77	472.98	94.24	46.66	21.95	3.41	15.06	2.76	43.49	6.32	2007.82	180921.2
std	42.3	24.28	9981.26	1.38	1.11	30.20	20.65	181.07	456.10	161.32	441.87	438.71	386.59	436.53	48.62	525.48	0.52	0.24	0.55	0.50	0.82	0.22	1.63	0.64	24.69	0.75	213.80	125.34	66.26	61.12	29.32	55.76	40.18	496.12	2.70	1.33	79442.5
min	20.0	21.00	1300.00	1.00	1.00	1872.00	1950.00	0.00	0.00	0.00	0.00	0.00	334.00	0.00	0.00	334.00	0.00	0.00	0.00	0.00	0.00	0.00	2.00	0.00	1900.00	0.00	0.00	0.00	0.00	0.00	0.00	0.00	0.00	0.00	1.00	2006.00	34900.0
25%	20.0	59.00	7553.50	5.00	5.00	1954.00	1967.00	0.00	0.00	0.00	223.00	795.75	882.00	0.00	0.00	1129.50	0.00	0.00	1.00	0.00	2.00	1.00	5.00	0.00	1961.00	1.00	334.50	0.00	0.00	0.00	0.00	0.00	0.00	0.00	5.00	2007.00	129975.0
50%	50.0	69.00	9478.50	6.00	5.00	1973.00	1994.00	0.00	383.50	0.00	477.50	991.50	1087.00	0.00	0.00	1464.00	0.00	0.00	2.00	0.00	3.00	1.00	6.00	1.00	1980.00	2.00	480.00	0.00	25.00	0.00	0.00	0.00	0.00	0.00	6.00	2008.00	163000.0
75%	70.0	80.00	11601.50	7.00	6.00	2000.00	2004.00	166.00	712.25	0.00	808.00	1298.25	1391.25	728.00	0.00	1776.75	1.00	0.00	2.00	1.00	3.00	1.00	7.00	1.00	2002.00	2.00	576.00	168.00	68.00	0.00	0.00	0.00	0.00	0.00	8.00	2009.00	214000.0
max	190.0	313.00	215245.00	10.00	9.00	2010.00	2010.00	1600.00	5644.00	1474.00	2336.00	6110.00	4692.00	2065.00	572.00	5642.00	3.00	2.00	3.00	2.00	8.00	3.00	14.00	3.00	2010.00	4.00	1418.00	857.00	547.00	552.00	508.00	480.00	738.00	15500.00	12.00	2010.00	755000.0

离散型特征

离散型特征共43个。
下面是离散型特征的统计数据值。

	MSZoning	Street	Alley	LotShape	LandContour	Utilities	LotConfig	LandSlope	Neighborhood	Condition1	Condition2	BldgType	HouseStyle	RoofStyle	RoofMatl	Exterior1st	Exterior2nd	MasVnrType	ExterQual	ExterCond	Foundation	BsmtQual	BsmtCond	BsmtExposure	BsmtFinType1	BsmtFinType2	Heating	HeatingQC	CentralAir	Electrical	KitchenQual	Functional	FireplaceQu	GarageType	GarageFinish	GarageQual	GarageCond	PavedDrive	PoolQC	Fence	MiscFeature	SaleType	SaleCondition
count	1460	1460	91	1460	1460	1460	1460	1460	1460	1460	1460	1460	1460	1460	1460	1460	1460	1452	1460	1460	1460	1423	1423	1422	1423	1422	1460	1460	1460	1459	1460	1460	770	1379	1379	1379	1379	1460	7	281	54	1460	1460
unique	5	2	2	4	4	2	5	3	25	9	8	5	8	6	8	15	16	4	4	5	6	4	4	4	6	6	6	5	2	5	4	7	5	6	3	5	5	3	3	4	4	9	6
top	RL	Pave	Grvl	Reg	Lvl	AllPub	Inside	Gtl	NAmes	Norm	Norm	1Fam	1Story	Gable	CompShg	VinylSd	VinylSd	None	TA	TA	PConc	TA	TA	No	Unf	Unf	GasA	Ex	Y	SBrkr	TA	Typ	Gd	Attchd	Unf	TA	TA	Y	Gd	MnPrv	Shed	WD	Normal
freq	1151	1454	50	925	1311	1459	1052	1382	225	1260	1445	1220	726	1141	1434	515	504	864	906	1282	647	649	1311	953	430	1256	1428	741	1365	1334	735	1360	380	870	605	1311	1326	1340	3	157	49	1267	1198

探索数值型特征

目标值的偏斜度

由于偏斜的数据会影响到回归模型的准确度,因此降低数据集的偏斜度会带来比较好的效果。

降低偏斜度对于线性回归比较重要,但是对于决策树和随机森林模型来说效果不太明显

下图是原始目标值的分布
在这里插入图片描述
下图是使用log函数修正后的目标值分布
在这里插入图片描述
可以看到偏斜度下降了,使用pandas自带的skew方法可以算出,原始的偏斜度为1.88,使用log函数转化了一下后变成0.12了。

下图是其他的数值型特征的分布:
在这里插入图片描述
根据这些特征数值分布图,可以看到有些特征是潜在的可以做数据转换以降低偏斜度的特征,例如LotFrontage, LotArea, 1stFlrSF, GrLivArea, OpenPorchSF

探测异常值

数据可视化可以帮助找到异常值,通常做法有以下两种:

  1. 对于单变量分析,使用盒图。异常值通常是高于IQR(四分位间距)1.5~3倍的的节点。(如果数据集有些偏斜,再做盒图分析时,先进行降偏斜操作会更准确一些)
  2. 对于二元分析,使用散点图。对于那些X轴值差不多,但是y值明显要高于或低于附近点的可能是异常值。对散点图画上使用最小二乘法拟合的直线后,也可以帮助辨别异常值。

通常来说,所有的异常值都需要逐一检查:

  1. 首先看看没进行降低偏斜度的原始数据,检查下是否有记录误差
  2. 如果没有,检查异常值的特征,看是否可以解释差异性。这个步骤可能会启发新的理论或发现。
  3. 如果异常值没法解释,通常需要将其从数据集中删掉

下图是采用盒图进行单元分析每个数值特征:
在这里插入图片描述
下图是采用散点图对每个数值特征及目标值进行二元分析
在这里插入图片描述
通过散点图可以看出,下面这些特征都有一些异常值:
LotFrontage (say, >200) 和 LotArea (>100000)
BsmtFinSF1 (>4000) 和TotalBsmtSF (>6000)
1stFlrSF (>4000)
GrLivArea (>4000 AND SalePrice <300000)
LowQualFinSF (>550)

分析特征间的相关性

下面会展示两列的线性关联度。目前存在许多计算关联度的方法,但是通常使用皮尔逊相关系数。通过组合使用相关度图和散点图,可以帮助探测出是否有非线性的相关性。

相关性分析非常容易被单个异常值影响!!!

使用线性回归模型,非常有必要移除强相关特征,而且在特征选择时,移除强相关特征也是一个好的选择。下面是热图用来观察两列之间的相关度。

在这里插入图片描述
下面是按与目标值的相关度倒排的特征列表

SalePrice       1.000000
OverallQual     0.790982
GrLivArea       0.708624
GarageCars      0.640409
GarageArea      0.623431
TotalBsmtSF     0.613581
1stFlrSF        0.605852
FullBath        0.560664
TotRmsAbvGrd    0.533723
YearBuilt       0.522897
YearRemodAdd    0.507101
GarageYrBlt     0.486362
MasVnrArea      0.477493
Fireplaces      0.466929
BsmtFinSF1      0.386420
Name: SalePrice, dtype: float64

下图是散点图加上相关系数。
在这里插入图片描述
通过以上散点图和相关度分析,可以得出以下结论:

  1. 排除特征 GarageArea,因为它 (0.88) 和GarageCars相关度达到0.88
  2. 排除GarageYrBlt - 因为它和YearBuilt高相关 (0.83)
  3. 排除所有和目标值低相关并且没有很明显的非线性相关的特征,例如MSSubClass, MoSold, YrSold, MiscVal, BsmtFinSF2, BsmtUnfSF, LowQualFinSF

缺失值

按缺失值个数倒排序,如下:

LotFrontage    259
GarageYrBlt     81
MasVnrArea       8
YrSold           0
BsmtFinSF2       0

思考:

  1. 对于 LotFrontage 的缺失值,可以简单的用中位值做插值,或者和Neigborhood特征相关,可以根据该特征来预测这些缺失值。
  2. GarageYrBlt因为和特征YearBuilt强相关,会被丢弃掉,因此可以忽略对其缺失值操作
  3. MasVnrArea有8个缺失值,MasVnrType 也是,看起来没有Masonry veneer,因此填充为0即可

探索离散型特征

使用盒图来分析离散型特征和目标值关系

首先看下KitchenQual特征的盒图
在这里插入图片描述
再看下Neighborhood的盒图
在这里插入图片描述
还有Neighborhood特征的计数图
在这里插入图片描述

缺失值分析

下表是按缺失值个数倒排的列表

PoolQC          1453
MiscFeature     1406
Alley           1369
Fence           1179
FireplaceQu      690
GarageCond        81
GarageQual        81
GarageFinish      81
GarageType        81
BsmtFinType2      38
BsmtExposure      38
BsmtFinType1      37
BsmtQual          37
BsmtCond          37
MasVnrType         8
Electrical         1
Condition2         0
dtype: int64

思考:

  1. 假设从PoolQC 到 Bsmt 特征,只要确实的都认为是没有的,因此缺失值都填充为None
  2. MasVnrType和MasVnrArea缺失值个数一样,因此 认为没有,所以填充为None

数据清洗与预处理

缺失数据处理

按上面分析的处理缺失值。

异常数据处理

按上面分析的处理掉异常值。

数据偏斜度处理

按上面分析的对部分特征和目标值进行log函数转化,降低其偏斜度。

特征工程

强相关特征筛选

下面四对特征之间强相关
GarageCars and GarageArea (0.882)
YearBuilt and GarageYrBlt (0.826)
GrLivArea_log1p and TotRmsAbvGrd (0.826)
TotalBsmtSF and 1stFlrSF_log1p (0.780)
可以丢弃其中和目标值相关度低的一个。

特征选择和离散型特征编码

  1. 对离散型特征进行one-hot编码
  2. 对缺失值进行插值填充

算法海选

尝试各种算法预测效果,并计算平均绝对误差(MAE),排序如下:

MAE values for different algorithms:
Algorithm
Lasso               13687.0
Ridge               14272.0
LinearRegression    14419.0
XGBoost             14673.0
GradientBoosting    14716.0
ElasticNet          16743.0
RandomForest        17134.0
dtype: float64

再使用交叉验证求出各模型均方根误差和标准差如下:

For LASSO model:
Mean RMSE = 0.109
Error std deviation = 0.016

For Gradient Boosting model:
Mean RMSE = 0.119
Error std deviation = 0.018

For XGBoost model:
Mean RMSE = 0.116
Error std deviation = 0.02

For Random Forest model:
Mean RMSE = 0.142
Error std deviation = 0.018

最优算法选定和微调

根据上面的分析,Loss模型对于本次数据集有比较好的效果,因此选其为最终模型。接着使用网格搜索来确定最优参数。
最后对测试数据集也进行上述的数据集处理,再调用最终模型进行预测。

后续提高

  1. 数据分析
    1. 如何判断离散型特征的异常值
    2. 如果判断离散型特征之间的相关度
  2. 数据清洗与预处理
    1. 数据正则化
    2. 创建自定义的预处理类方便集成到pipeline里
    3. 考虑使用幂转换处理将数据转换得更像高斯分布一些
  3. 特征选择工程
    1. 考虑几种特征组合成新的特征
    2. 尝试对于离散型特征其他的编码方案
    3. 考虑其他的预处理方案,比如主成分分析方法来降维,从而创造新的特征
  4. 算法海选
    1. 使用pipeline
    2. 学习使用集成方法的好处
    3. 画出学习曲线图,探索算法是否欠拟合和过拟合
    4. 探索算法的性能准则
  5. 算法确定与微调
    1. 测试新的特征
    2. 使用部分依赖图来理解最终模型

猜你喜欢

转载自blog.csdn.net/seedcup/article/details/89944340