Machine Learning Based Solar Photovoltaic Power Forecasting: A Review and Comparison