特征工程&归一化

640?wx_fmt=png

  Spark推荐系统,干货,心得 

  点击上方蓝字关注~

 

归一化:将每个要素的重新映射到特定范围(通常为[0,1])

spark中使用MinMaxScaler(最大-最小规范化)

他需要的参数:

min:默认为0.0,转换后的下限

max:默认为1.0,转换后的上限

MinMaxScaler计算数据集的统计信息,并生成MinMaxScalerModel,然后,模型可以单独转换每个要素,使其在给定的范围内。

特征E的重新缩放值被计算为:

640?wx_fmt=png

对于情况Emax==Emin,Rescaled(ei)= 0.5(max+min)

请注意,由于零值可能会转换为非零值,即使对于稀疏输入,变压器的输出也将为DenseVector(稠密矩阵)

 

那么为什么进行特征归一化?

为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得

不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响,如果

使用米(m)和千克(kg)作为单位,那么身高特征会在1.6~1.8m的数值范围

内,体重特征会在50~100kg的范围内,分析出来的结果显然会倾向于数值差别比

较大的体重特征。想要得到更为准确的结果,就需要进行特征归一化处理,使各指标处于同一数值量级,以便进行分析。

借助随机梯度下降的实例来

说明归一化的重要性。假设有两种数值型特征,x 1 的取值范围为 [0, 10],x2 的取值

范围为[0, 3],于是可以构造一个目标函数符合图1.1(a)中的等值图。

在学习速率相同的情况下,x1 的更新速度会大于x 2 ,需要较多的迭代才能找到

最优解。如果将x 1 和x 2 归一化到相同的数值区间后,优化目标的等值图会变成图

1.1(b)中的圆形,x 1 和x 2 的更新速度变得更为一致,容易更快地通过梯度下降找

到最优解。

640?wx_fmt=png

当然,数据归一化并不是万能的。在实际应用中,通过梯度下降法求解的模

型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模

型。但对于决策树模型则并不适用,以C4.5为例,决策树在进行节点分裂时主要

依据数据集D关于特征x的信息增益比,而信息增益比跟特征是否经过归一化是无关的,

因为归一化并不会改变样本在特征x上的信息增益。

 

 

object MinMaxScalerExample {
def main(args: Array[String]): Unit = {
val spark = CreateSparkSession.creteLocalSparkSession(this.getClass.getName)
val dataFrame = spark.createDataFrame(Seq(
(0, Vectors.dense(1.0, 0.5, -1.0)),
(1, Vectors.dense(2.0, 1.0, 1.0)),
(2, Vectors.dense(4.0, 10.0, 2.0))
)).toDF("id", "features")
val scaler = new MinMaxScaler()
.setInputCol("features")
.setOutputCol("scaledFeatures")
// Compute summary statistics and generate MinMaxScalerModel
val scalerModel = scaler.fit(dataFrame)
// rescale each feature to range [min, max].
val scaledData = scalerModel.transform(dataFrame)
println(s"Features scaled to range: [${scaler.getMin}, ${scaler.getMax}]")
scaledData.select("features", "scaledFeatures").show(false)

}
}


运行结果:

640?wx_fmt=png


640?wx_fmt=jpeg

推荐阅读:

决策树之特征选择

Spark特征工程

Spark梯度下降法

ChiSqSelector卡方选择器

640?wx_fmt=jpeg

长按识别二维码关注我们



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值