# House Prices: Advanced Regression Techniques

This project aims to implement and compare variant machine learning techniques for predicting house prices. It is an expanded project from Kaggle House Prices: Advanced Regression Techniques, such that the project is going to use the same dataset provided under this Kaggle competition. The machine learning techniques in this project include Linear Regression, Random Forest, Adaptive Boosting, Support Vector Regression, Gradient Boosted Decision Tree, K Nearest Neighbors, and Neural Network.

# Comparing Classifiers on UCI Wine Dataset

In this article, the comparison of multiple classifiers will be performed on the "Wine" dataset from the UCI Machine Learning Repository.

# Trie

Trie is an ordered tree data structure which stores words in it so that users can search a word or a prefix quickly. Time complexity for adding a word to a Trie is $O(l)$, and for searching a word or a prefix is $O(l)$ too ($l$ is the length of the word or the prefix being added or searched). So it’s why we prefer Trie rather than Set and Hash Table in some situations, such as Dynamic Set, Associative Array and a predictive text or autocomplete Dictionary.

# Universal and Perfect Hashing

Though hash table is one of the most efficient data structures, it has some weaknesses.

For any hash function $\mathbf{h}$, a set of keys exist that can cause the average access time of a hash table to skyrocket. I.e. all keys from $\{k\in\mathcal{U} : \mathbf{h}(k) = i\}$ for some slot $i$.

#### Approach:

Choose the hash function at random, independently of the keys.

# Randomized QuickSort and Randomized Select Analysis

## Randomized QuickSort

Randomized QuickSort is an efficient sort algorithm requiring only $\Theta(n\log n)$ expected time on any input.

## Randomized Select

Randomized Select is an efficient algorithm to find $i$th smallest element of Array[low…high] with only linear expected time on any input.