Kaggle竞赛 —— 房价预测 (House Prices)

  • 时间:
  • 浏览:0
  • 来源:uu直播快3_UU快3直播平台

对于离散型价值形式,一般采用pandas中的get_dummies进行数值化,但在你这个比赛中光却说 可能性还不足英文,什么都下面我采用的土最好的办法 是按价值形式进行分组,计算该价值形式每个取值下SalePrice的平均数和珍位数,再以此为基准排序赋值,下面举个例子:

\[\sqrt{\frac{\sum_{i=1}^{N}(y_i-\hat{y_i})^2}{N}}\]

将原始价值形式进行组合通常能产生意想并能的效果,然而你这个数据集中原始价值形式有什么都,可能性性所有都一一组合,什么都这里先用Lasso进行价值形式筛选,选出较重要的一点价值形式进行组合。

最并且开始我用get_oof的土最好的办法 将第一层模型的价值形式矩阵提取出来,再和原始价值形式进行拼接,最后的cv分数下降到了0.1018,然而在leaderboard上的分数却变差了,看来你这个土最好的办法 会原因分析 过拟合。

下面给出的那此价值形式都并能用 “None” 来填补:

一般认为新房子比较贵,老房子比较便宜,从图上看大致也是你这个趋势,可能性建造年份 (YearBuilt) 你这个价值形式位于较多的取值 (从1872年到2010年),直接one hot encoding会造成过于稀疏的数据,因此在价值形式工程中会将其进行数字化编码 (LabelEncoder) 。

对我的分数提升最大的主要有两块:

将在下文中一一说明。

最后的结果提交,我用了Lasso,Ridge,SVR,Kernel Ridge,ElasticNet,BayesianRidge作为第一层模型,Kernel Ridge作为第二层模型。

分数为0.10768,比任何单个模型都好。

按表中进行排序:

可能性是像图中那样的两层stacking,则是第一层5个模型,第二层却说 元模型。第一层模型的作用是训练得到却说 \(\mathbb{R}^{n×m}\)的价值形式矩阵来用于输入第二层模型训练,其中n为训练数据行数,m为第一层模型个数。

可能性我们歌词 都都 仔细观察一下data_description上面的内容搞笑的话,会发现什么都缺失值完整版都是迹可循,比如上表第却说 PoolQC,表示的是游泳池的质量,其值缺失代表的是你这个房子有一种没有 游泳池,因此并能用 “None” 来填补。

结果如下, 总的来说树模型普遍不如线性模型,可能性还是可能性get_dummies后带来的数据稀疏性,不过那此模型完整版都是没调过参的。

MSSubClass你这个价值形式表示房子的类型,将数据按其分组:

使用了15个算法和5折交叉验证来评估baseline效果:

然而若只用SVR和Kernel Ridge却说 模型,则效果更好,看来是一点几只模型拖后腿了。。

LinearRegression

比赛页面:https://www.kaggle.com/c/house-prices-advanced-regression-techniques

经过漫长的多轮测试,最后选取了这5个模型:

这里主要的工作是处理缺失值,首先来看各价值形式的缺失值数量:

下面的那此价值形式多为表示XX面积,比如 TotalBsmtSF 表示地下室的面积,可能性却说 房子有一种没有 地下室,则缺失值就用0来填补。

我总共大致排了20多个价值形式,具体见完整版代码。

参加比赛首很难做的事是了解其评价指标,可能性一并且开始就搞错了到最后可能性就白费功夫了-。- House Prices的评估指标是均方根误差 (RMSE),这是常见的用于回归间题的指标 :

我目前的得分是0.11421

你这个比赛总的情况报告却说 想要79个价值形式因此根据那此预测房价 (SalePrice),这其中既有离散型完整版都是连续性价值形式,因此位于大量的缺失值。不过好在比赛方提供了data_description.txt你这个文件,上面对各个价值形式的含义进行了描述,理解了其中内容后对于大要素缺失值就都能顺利插补了。

可能性原始价值形式较多,这里只选取建造年份 (YearBuilt) 来进行可视化:

接下来建立却说 调参的土最好的办法 ,应时刻牢记评估指标是RMSE,什么都打印出的分数也却说 RMSE。

XgBoost

PCA是非常重要的一环,对于最终分数的提升很大。可能性我新增的那此价值形式完整版都是和原始价值形式宽度相关的,这可能性原因分析 较强的多重共线性 (Multicollinearity) ,而PCA恰并能去相关性。可能性这里使用PCA的目的完整版都是降维,什么都 n_components 用了和却说 差没有 来过多的维度,这是我多方实验的结果,即前面加XX价值形式,上面再降到XX维。

首先定义RMSE的交叉验证评估指标:

举例Lasso的调参:

LotFrontage你这个价值形式与LotAreaCut和Neighborhood有比较大的关系,什么都这里用这却说 价值形式分组后的中位数进行插补。

Stacking的原理见下图:

根据权重对各个模型加权平均:

最终加了那此价值形式,这其中也包括了什么都一点的各种尝试: