当前位置: 首页>后端>正文

标准差 SEM 标准差 sparksql

1 动机

   
对于同一个特征,不同的样本中的取值可能会相差非常大,一些异常小或异常大的数据会误导模型的正确训练;另外,如果数据的分布很分散也会影响训练结果。以上两种方式都体现在方差会非常大。此时,我们可以将特征中的值进行标准差标准化,即转换为均值为0,方差为1的正态分布。如果特征非常稀疏,并且有大量的0(现实应用中很多特征都具有这个特点),Z-score 标准化的过程几乎就是一个除0的过程,结果不可预料。所以在训练模型之前,一定要对特征的数据分布进行探索,并考虑是否有必要将数据进行标准化。基于特征值的均值(mean)和标准差(standard deviation)进行数据的标准化。它的计算公式为:标准化数据=(原数据-均值)/标准差。标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。

因为在原始的资料中,各变数的范围大不相同。对于某些机器学习的算法,若没有做过标准化,目标函数会无法适当的运作。举例来说,多数的分类器利用两点间的距离计算两点的差异, 若其中一个特征具有非常广的范围,那两点间的差异就会被该特征左右,因此,所有的特征都该被标准化,这样才能大略的使各特征依比例影响距离。另外一个做特征缩放的理由是他能使加速梯度下降法的收敛。

2 方法

2.1 重新缩放

  最简单的方式是重新缩放特征的范围到[0, 1][-1, 1], 依据原始的资料选择目标范围,通式如下:

 

2.2 标准化

  在机器学习中,我们可能要处理不同种类的资料,例如,音讯和图片上的像素值,这些资料可能是高维度的,资料标准化后会使每个特征中的数值平均变为0(将每个特征的值都减掉原始资料中该特征的平均)、标准差变为1,这个方法被广泛的使用在许多机器学习算法中。

3 实例

  


// $example on$
import org.apache.spark.SparkConf
import org.apache.spark.ml.feature.StandardScaler
// $example off$
import org.apache.spark.sql.SparkSession

object StandardScalerExample {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf();
    sparkConf.setMaster("local[*]").setAppName(this.getClass.getSimpleName)
    val spark = SparkSession
      .builder
      .config(sparkConf)
      .appName("StandardScalerExample")
      .getOrCreate()

    // $example on$
    val dataFrame = spark.read.format("libsvm").load("D:/java/spark/spark/data/mllib/sample_libsvm_data.txt")

    val scaler = new StandardScaler()
      .setInputCol("features")
      .setOutputCol("scaledFeatures")
      .setWithStd(true)
      .setWithMean(false)

    // Compute summary statistics by fitting the StandardScaler.
    val scalerModel = scaler.fit(dataFrame)

    // Normalize each feature to have unit standard deviation.
    val scaledData = scalerModel.transform(dataFrame)
    scaledData.show()
    // $example off$

    spark.stop()
  }
}
// scalastyle:on println


  结果:

+—–+——————–+——————–+
 |label| features| scaledFeatures|
 +—–+——————–+——————–+
 | 0.0|(692,[127,128,129…|(692,[127,128,129…|
 | 1.0|(692,[158,159,160…|(692,[158,159,160…|
 | 1.0|(692,[124,125,126…|(692,[124,125,126…|
 | 1.0|(692,[152,153,154…|(692,[152,153,154…|
 | 1.0|(692,[151,152,153…|(692,[151,152,153…|
 | 0.0|(692,[129,130,131…|(692,[129,130,131…|
 | 1.0|(692,[158,159,160…|(692,[158,159,160…|
 | 1.0|(692,[99,100,101,…|(692,[99,100,101,…|
 | 0.0|(692,[154,155,156…|(692,[154,155,156…|
 | 0.0|(692,[127,128,129…|(692,[127,128,129…|
 | 1.0|(692,[154,155,156…|(692,[154,155,156…|
 | 0.0|(692,[153,154,155…|(692,[153,154,155…|
 | 0.0|(692,[151,152,153…|(692,[151,152,153…|
 | 1.0|(692,[129,130,131…|(692,[129,130,131…|
 | 0.0|(692,[154,155,156…|(692,[154,155,156…|
 | 1.0|(692,[150,151,152…|(692,[150,151,152…|
 | 0.0|(692,[124,125,126…|(692,[124,125,126…|
 | 0.0|(692,[152,153,154…|(692,[152,153,154…|
 | 1.0|(692,[97,98,99,12…|(692,[97,98,99,12…|
 | 1.0|(692,[124,125,126…|(692,[124,125,126…|
 +—–+——————–+——————–+

 


https://www.xamrdz.com/backend/3t91961545.html

相关文章: