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:spa
//数据标准化 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:code
//数据归一化 val scaler = new MinMaxScaler() .setInputCol("featuresAssembler") .setOutputCol(features)