Machine Learning to Enhance Cost-Effective Decision Making by Housing Developers

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%.

About Authors

Randy Pantinople

Randy Pantinople

Randy was a high school math and physics teacher for 16 years. He got his masters degree in Physics Education at the University of Southeastern Philippines. His passion about trends, predictions, and data driven decisions led him to...
View all posts by Randy Pantinople >
Gregory Weber

Gregory Weber

Studied Music Performance (Bachelors) and Mathematics Education (Masters) at Indiana University. High School Mathematics Teacher for 8 years in NYC.
View all posts by Gregory Weber >
Jay Kim

Jay Kim

BA in Psychology at NYU & Assistant Accountant
View all posts by Jay Kim >
Minjae Lee

Minjae Lee

Aspiring Machine Learning and Software Engineer with strong statistics and mathematics background. Hands-on experience building machine learning models using Python and libraries. Passion for emerging technologies and concepts in computer science, data science, statistical modeling, and artificial intelligence.
View all posts by Minjae Lee >

Related Articles

Leave a Comment

No comments found.

View Posts by Categories


Our Recent Popular Posts


View Posts by Tags

#python #trainwithnycdsa 2019 airbnb Alex Baransky alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus API Application artist aws beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep Bundles California Cancer Research capstone Career Career Day citibike clustering Coding Course Demo Course Report D3.js data Data Analyst data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization Deep Learning Demo Day Discount dplyr employer networking feature engineering Finance Financial Data Science Flask gbm Get Hired ggplot2 googleVis Hadoop higgs boson Hiring hiring partner events Hiring Partners Industry Experts Instructor Blog Instructor Interview Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter lasso regression Lead Data Scienctist Lead Data Scientist leaflet linear regression Logistic Regression machine learning Maps matplotlib Medical Research Meet the team meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Online Bootcamp Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python python machine learning python scrapy python web scraping python webscraping Python Workshop R R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn Selenium sentiment analysis Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau team TensorFlow Testimonial tf-idf Top Data Science Bootcamp twitter visualization web scraping Weekend Course What to expect word cloud word2vec XGBoost yelp