Data to Enhance Decision Making by Housing Developers
The skills I demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
GitHub link to project documents
Ames is a city in Story County, Iowa, United States, located approximately 30 miles north of Des Moines in central Iowa. It is best known as the home of Iowa State University, with leading agriculture, design, engineering, and veterinary medicine colleges. The aim of this project is to help home builders in Ames, Iowa identify the features that most influence sale price.
Data
The Ames housing data set consists of about 2500 sale records of homes during the years 2006โ2010, using 81 columns (features), including sale price which will be our target variable. We first analyzed missing values and applied any necessary imputation.
These methods were used to impute missing values:
- For Pool Quality Rating, Miscellaneous, Alley, Fence,
and Fireplace Quality, missing values were filled with None. - For Electrical, Zoning Classification, Utilities, Home Functionality, Type of Sale, Kitchen Quality, and both Exterior Covering features, missing values were filled with the most frequent value, the mode.
- For Lot Frontage, missing values were filled with the median neighborhood value.
Exploratory Data Analysis
We created a new price per square foot column, derived from dividing sale price by gross living area for each home. We used the price per square foot feature to help determine the importance of other home features.โ
โโOverall Quality and Kitchen Quality
How does overall quality and kitchen quality influence price per square foot?
- As overall quality increases, price per square foot increases.
- As kitchen quality increases, price per square foot increases.
โBedroom and Bathroom Combinations
Which combination of number of bedrooms and number of bathrooms yields the highest price per square foot?โ
- The price per square foot of a house is higher when the difference between number of bedrooms and bathrooms is one or less.
Central Air Conditioning and Fireplace
How does Central Air Conditioning or having a Fireplace affect price per square foot?
- Both features increase price per square foot. If you had to choose just one, Central Air Condtioning tends to provide a higher value, not surprising given Aimes average high temperature in the 80's for the months of June, July, and August.
Age of House when Sold
How does the age of a house influence price per square foot?
- As the age of a home increases, price per square foot increases.
Garage Capacity and Driveway
Do Garage Capacity or having a Paved Driveway result in a higher price per square foot?
- A paved driveway with a three car garage has the highest price per square foot.
- Generally speaking, a paved driveway and a more spacious garage means a higher price per square foot.
Machine Learning Models
We used machine learning models to predict sale price and select important house features. We start by looking at properties of our response variable sale price.
Below, the graph on the left shows distribution of sale price, which is skewed to the right. After a log transformation, the right graph now shows a normally distributed representation of sale price. The log-transformed sale price is used for fitting all machine learning models below.
Stepwise Regression using Bayesian Information Criterion(BIC)
- In stepwise regression, we begin with a model using only the intercept. We then sequentially add the predictors that most improve our models fit based on Bayesian Information Criterion (BIC). The smaller the BIC value, the better a model fits.
- The adjusted R-squared of this model is 0.9263.
Are the Conditions for Multiple Linear Regression met?
Before proceeding, we must make sure all five assumptions of Multiple Linear Regression are met: โโโโ โ
โ
1. Linearity
2. Independent Errors
3. Normality
4. Constant variance
5. No Multicollinearity
โโNo Multicollinearity - the Variance Inflation Factor (VIF) for each predictor is below 5, suggesting low multicollinearity.
The following features were selected based on their importance:
Overall Quality, Gross Living Area, Neighborhood, Finished Basement Square Footage, Overall Condition, Age When Sold, Total Basement Square Footage, Building Type, Garage Capacity, Fireplaces, Sale Condition, Central Air, Lot Area, Condition2 (home proximity to various things), Kitchen Quality, Basement Exposure, Year Remodeled, Screen Porch, General Zoning Classification, Home Functionality, Number of Basement Full Bathrooms, Enclosed Porch, Heating Quality, PavedDrive, Difference between Number of Bedrooms and Bathrooms, and Basement Finish Square Footage (if second type present)
Penalized Linear Regression
The Stepwise Regression model above uses BIC to penalize coefficients to reduced multicollinearity. In python scikit learn, Lasso and Ridge, penalized linear models will try to achieve the same goal. With a suitably chosen lambda, Lasso and Ridge successfully balances the bias-variance trade-off. To find the best lambda, we used scikit learn's GridSearchCV.
- The mean cross-validated score for Lasso is 0.905. For Ridge it is 0.904.
These are the best scores for our model using the training data. - The performance score for Lasso is 0.926 and for Ridge it is 0.924.
These are the best scores for our model with the test data. - The models underfit a little but only a negligible amount.
Random Forest Regressor
Random forest is an enhancement of the bagging method, building a large
collection of de-correlated trees, and then averaging them. Random forest introduces randomness in the individual tree generation process. At each tree node, the loss function is minimized using only the randomly chosen subset of features. Again, to tune parameters, we use GridSearchCV.
- The mean cross-validation score is 0.892 and the performance score is 0.91.
This is slightly lower than the linear models discussed above. - When using the random forest model, Overall Quality is the most important feature, followed by Gross Living Area and First-floor Square Footage.
Gradient Boosting Regressor
Boosting is a general sequential ensemble technique which
aggregates many weak learners to produce a strong learner. This differs from the parallel ensembling of the random forest model seen above, in that it produces a strong learner in a sequential way. Iteratively, each weak learner makes use of the previous weak learner's outcome to make its own educated guess. Once again, GridSearchCV is used to tune parameters.
- The mean cross validation score is 0.910 and the performance score is 0.929.
The model's performance score is the highest score among all models tested. - Overall Quality is the most important feature. It is followed by Gross Living Area and First-loor Square Footage.
- These features are very similar to those selected by the random forest model.
We believe Lasso Regression best models the data. Though gradient boosting regressor produced a higher performance score, the score alone does not compensate for a higher cost to run and greater model complexity.
Our Housing Developer Recommendations:
- Quality Homes
A one-point increase in overall quality rating increases sale price by 0.06%. - An Excellent Kitchen
Excellent kitchen quality sells for 0.063% higher compared to other kitchen qualities. - Choose Central Air over a Fireplace
Central air conditioning gives a 0.056% higher sale price compared to houses without central air. - Pave the Driveway
A home with a paved driveway sells for 0.048% higher than a home without one. - Limit the Difference between Bedrooms and Bathrooms to One
For every one room increase between the number of bedrooms and number of bathrooms, the average sale price drops 0.01%.