Understanding Algorithmic Bias: Types, Causes and Case Studies