Spark MLlib特征处理:Normalizer 正则化---原理及实战
来源:互联网 发布:淘宝店铺怎么复核认证 编辑:程序博客网 时间:2024/06/10 07:12
原理
向量
a→=(x1,x2,x3...xn) ,ak 是a→ 中的任意元素,k=1,2,3⋯n 例如:a→ 代表一个样本,ak 代表特征。p-Norm p范数
p=1
pNorm=∑k=1n|ak|
p=2
pNorm=∑k=1na2k−−−−−√
p=inf
pNorm=max|ak|
2<p<inf
pNorm=∑k=1n|ak|p
a→ 的 L1 正则化:ak 除以 pNorm p=1
Normalizer(ak)=ak∑nk=1|ak|
a→ 的 L2 正则化:ak 除以 pNorm p=2
Normalizer(ak)=ak∑nk=1a2k−−−−−−−√
实战
import org.apache.spark.ml.feature.Normalizerimport org.apache.spark.sql.SQLContextimport org.apache.spark.{SparkContext, SparkConf}object NormalizerExample { def main(args: Array[String]) { val conf = new SparkConf().setAppName("NormalizerExample").setMaster("local[6]") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) // LibSVMFile的格式:标签 索引:值 // 0 2:51 3:253 5:253 // 1 2:124 3:253 4:255 // 1 2:145 3:253 5:211 val dataFrame = sqlContext.read.format("libsvm").load("data/libsvm.txt") // L1正则化 val normalizer = new Normalizer().setInputCol("features").setOutputCol("normFeatures") // 设置 L1正则化 .setP(1.0) // 正则化转换 val l1NormData = normalizer.transform(dataFrame) //l1NormData.foreach(println) // 结果: // [1.0,(5,[1,2,4],[145.0,253.0,211.0]),(5,[1,2,4],[0.23809523809523808,0.4154351395730706,0.3464696223316913])] // [0.0,(5,[1,2,4],[51.0,253.0,253.0]),(5,[1,2,4],[0.09156193895870736,0.4542190305206463,0.4542190305206463])] // [1.0,(5,[1,2,3],[124.0,253.0,255.0]),(5,[1,2,3],[0.1962025316455696,0.40031645569620256,0.40348101265822783])] // 结果分析: // 如:向量(5,[1,2,4],[145.0,253.0,211.0]) // p-Norm=145.0+253.0+211.0=609.0 p=1 // L1正则化:(5,[1,2,4],[145.0/609.0,253.0/609.0,211.0/609.0]) // 正则化结果:(5,[1,2,4],[0.23809523809523808,0.4154351395730706,0.3464696223316913])] // L2正则化 val l2InfNormData = normalizer.transform(dataFrame, normalizer.p -> 2) l2InfNormData.foreach(println) // 结果: // [0.0,(5,[1,2,4],[51.0,253.0,253.0]),(5,[1,2,4],[0.1411129915384288,0.7000311148867153,0.7000311148867153])] // [1.0,(5,[1,2,4],[145.0,253.0,211.0]),(5,[1,2,4],[0.40284772269065683,0.702899819591284,0.5862128930188178])] // [1.0,(5,[1,2,3],[124.0,253.0,255.0]),(5,[1,2,3],[0.3263044910373298,0.6657664212293906,0.6710293968912829])] // 结果分析: // 如:向量(5,[1,2,4],[145.0,253.0,211.0]) // p-Norm=math.sqrt(145*145+253*253+211*211)=359.9374945737107 p=2 // L2正则化:(5,[1,2,4],[145.0/p-Norm,253.0/p-Norm,211.0/p-Norm]) // 正则化结果:(5,[1,2,4],[0.40284772269065683,0.702899819591284,0.5862128930188178])] sc.stop() }}
0 0
- Spark MLlib特征处理:Normalizer 正则化---原理及实战
- Spark MLlib特征处理:Binarizer 二值化---原理及实战
- Spark MLlib特征处理:StringToIndex 字符串索引---原理及实战
- Spark MLlib特征处理:OneHotEncoder OneHot编码 ---原理及实战
- Spark MLlib特征处理:TF-IDF 词频-逆文频---原理及实战
- Spark MLlib特征处理:MinMax最大最小值区间缩放---原理及实战
- Spark MLlib特征处理:PCA 主成分分析 ---原理及实战
- Spark MLlib(一)正则化特征
- Spark MLlib聚类clustering:KMeans K均值 ---原理及实战
- spark mllib 实战
- Spark-mllib特征提取算法
- Spark-mllib特征转换算法
- Spark-mllib特征选择算法
- Spark MLlib LDA 基于GraphX实现原理及源码分析
- spark--二十种特征变换方法及Spark MLlib调用实例(Scala/Java/python)(一)
- Spark中ml和mllib库特征处理例子及其文档总结
- Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介
- Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介
- Servlet的生命周期与工作原理
- 用 Flask 来写个轻博客 (1) — 创建项目
- Linux 命令笔记
- sizeof()的使用及各种数据类型的字节大小
- jquery源码分析笔记
- Spark MLlib特征处理:Normalizer 正则化---原理及实战
- kettle链接数据库及异常处理
- Mybatis中实体类属性和数据列之间映射的四种办法
- JSP Cookie
- 银行
- Linux系统监控工具链
- Java网络编程_基于TCP协议的网络编程(二)
- 【C语言】结构体指针
- 考前准备秘诀----转自Bvoid大神