kaggle入门
探索式分析数据
除了其他的之外,数据探索主要包含以下步骤:
- 对获得的数据有一个初步印象
- 检查缺失值
- 探测潜在的异常值
- 分析特征间的关联度信息
- 检查数据偏斜度
初始印象
导入数据后,查看几行数据,对数据有一个初步印象,本次数据集包含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个。
需要注意两点:
- 异常值可能会导致数值型的特征被误认为是离散型数据
- 离散型且有限个数的数值型特征也可能会被误认为是离散型数据
下面是数值型数据的统计数据值。
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
探测异常值
数据可视化可以帮助找到异常值,通常做法有以下两种:
- 对于单变量分析,使用盒图。异常值通常是高于IQR(四分位间距)1.5~3倍的的节点。(如果数据集有些偏斜,再做盒图分析时,先进行降偏斜操作会更准确一些)
- 对于二元分析,使用散点图。对于那些X轴值差不多,但是y值明显要高于或低于附近点的可能是异常值。对散点图画上使用最小二乘法拟合的直线后,也可以帮助辨别异常值。
通常来说,所有的异常值都需要逐一检查:
- 首先看看没进行降低偏斜度的原始数据,检查下是否有记录误差
- 如果没有,检查异常值的特征,看是否可以解释差异性。这个步骤可能会启发新的理论或发现。
- 如果异常值没法解释,通常需要将其从数据集中删掉
下图是采用盒图进行单元分析每个数值特征:
下图是采用散点图对每个数值特征及目标值进行二元分析
通过散点图可以看出,下面这些特征都有一些异常值:
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
下图是散点图加上相关系数。
通过以上散点图和相关度分析,可以得出以下结论:
- 排除特征 GarageArea,因为它 (0.88) 和GarageCars相关度达到0.88
- 排除GarageYrBlt - 因为它和YearBuilt高相关 (0.83)
- 排除所有和目标值低相关并且没有很明显的非线性相关的特征,例如MSSubClass, MoSold, YrSold, MiscVal, BsmtFinSF2, BsmtUnfSF, LowQualFinSF
缺失值
按缺失值个数倒排序,如下:
LotFrontage 259
GarageYrBlt 81
MasVnrArea 8
YrSold 0
BsmtFinSF2 0
思考:
- 对于 LotFrontage 的缺失值,可以简单的用中位值做插值,或者和Neigborhood特征相关,可以根据该特征来预测这些缺失值。
- GarageYrBlt因为和特征YearBuilt强相关,会被丢弃掉,因此可以忽略对其缺失值操作
- 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
思考:
- 假设从PoolQC 到 Bsmt 特征,只要确实的都认为是没有的,因此缺失值都填充为None
- 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)
可以丢弃其中和目标值相关度低的一个。
特征选择和离散型特征编码
- 对离散型特征进行one-hot编码
- 对缺失值进行插值填充
算法海选
尝试各种算法预测效果,并计算平均绝对误差(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模型对于本次数据集有比较好的效果,因此选其为最终模型。接着使用网格搜索来确定最优参数。
最后对测试数据集也进行上述的数据集处理,再调用最终模型进行预测。
后续提高
- 数据分析
- 如何判断离散型特征的异常值
- 如果判断离散型特征之间的相关度
- 数据清洗与预处理
- 数据正则化
- 创建自定义的预处理类方便集成到pipeline里
- 考虑使用幂转换处理将数据转换得更像高斯分布一些
- 特征选择工程
- 考虑几种特征组合成新的特征
- 尝试对于离散型特征其他的编码方案
- 考虑其他的预处理方案,比如主成分分析方法来降维,从而创造新的特征
- 算法海选
- 使用pipeline
- 学习使用集成方法的好处
- 画出学习曲线图,探索算法是否欠拟合和过拟合
- 探索算法的性能准则
- 算法确定与微调
- 测试新的特征
- 使用部分依赖图来理解最终模型