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)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。