A.正则化
1.正则化的目的是什么?
正则化是为了防止过拟合,加入正则项和的参数估计是符合我们之前的预定目标的,即用尽量少的变量去拟合数据。正则化符合奥卡姆剃刀原理,在所有可能选择的模型中,能够很好的解释已知数据,并且十分简单的才是最好的模型,也就是要选择的模型。
2.机器学习中的范数
L0范数是指向量中非零元素的个数,如果用L0规则化一个参数矩阵W,就是希望W中大部分元素为0,实现稀疏
L1范数是指向量中各个元素的绝对值之和
L2范数是指向量各元素的平方和然后开方

3.L1 L2 Regularization图片描述
图片描述
图片描述
4.结论:
为了防止过拟合,不仅仅要求损失函数小,还要求 min(损失函数+正则化项 )

B.标准化
在spark.ml中标准化的实现列是StandardScaler
StandardScaler处理的对象是每一列,也就是每一维特征,将特征标准化为单位标准差或是0均值,或是0均值单位标准差。
主要有两个参数可以设置:

withStd: 默认为真。将数据标准化到单位标准差。
withMean: 默认为假。是否变换为0均值。
StandardScaler需要fit数据,获取每一维的均值和标准差,来缩放每一维特征。
eg:

    //数据标准化
    val scaler = new StandardScaler()
      .setInputCol("features")
      .setOutputCol("scaledFeatures")
      .setWithStd(true)
      .setWithMean(false)
      
    val scalerModel = scaler.fit(output)
    val scaledData = scalerModel.transform(output)

C.归一化
数据归一化由MinMaxScaler实现
MinMaxScaler作用同样是每一列,即每一维特征。将每一维特征线性地映射到指定的区间,通常是[0, 1]。
eg:

    //数据归一化
    val scaler = new MinMaxScaler()
      .setInputCol("featuresAssembler")
      .setOutputCol(features)

HelloData
15 声望3 粉丝