title: What is Param[] and Params[] in Spark ML
body: <p>As a statistic person, the logic of <code>Param</code> and <code>Params</code> class in Spark ML library confuses me a lot. Since the foundation class <code>PipelineStage extends Params</code>， and <code>transformer/estimator</code>( which means machine learning algorithms to me) are child class of <code>PipelineStage</code>. So <code>Params</code> is not just a simple class represented some machine learning parameters? And the access to some params in pipeline require certain parent requirement. I'm just so lost about how this come out...</p>
  
  <p>Any logical explanation for Param? Thanks a lot! This really confuses me.</p>