归一化方法

 

归一化是一种非常常见的数据预处理方法,比如在多维度排行榜计算过程中……...





归一化方法,其实对它并不陌生,大学时期常将它作为一种数学工具,例如在《电磁场与电磁波》中,将输入阻抗除以传输线特征阻抗从而进行归一化,通过史密斯圆图求反射系数。当时对归一化方法的印象仅仅局限于一种约定俗成的工具,至于为何要先进行归一化,主要由于课程要求并不是特别深入,因此没有去细细想过。

现在想来,大学校园里,我们不仅接触到各种技术或理论方法,更重要的是还遇见了各种优秀的数学工具,只是当时常常为了学习而学习,大量的理论知识不断涌入脑海,失去了主动寻求每一个细节始末的过程。也许只有那种过程,才能让我们更加看清每一种经典方法和工具的独到之处,才会对其求知若渴。

最近,我偶然在工作中重见了归一化的倩影。在排行榜算法的设计中,我对电子书归纳了一系列的指标,并将指标归类,并入不同的维度,最后对不同维度给予不同的权重,从而得到一个计算电子书“得分”的公式,所有处于范围内的电子书根据“得分”的高低进行排序,最终形成一份 榜单。算法思路敲定后最重要的一个问题就是,指标的归一化。因为在我所设计的算法中,同一个维度下可能存在不同类别的指标,例如点击量vs点击阅读转化 率,这两个指标数值的差距是极大的,一个是至少以万计的,一个是(0,1)之间的小数,按照我的算法,这两个量是要给予权重后相加的,而对于两个大小差异如此庞大的数,直接相加是不是就相当于直接忽略了点击阅读转化率这个指标的影响呢?除此之外,点击量、转化率其单位不一样,怎么可以直接相加?

于是,利用我的常识,我决定对数据进行归一化,以解决以上存在的问题。

那么,如何进行归一化呢?为了隐去单位,将有量纲量变为无量纲量,必须用指标除以一个同一类型的量,例如点击量/其他点击量,为了将数值差距减小,将指标的 值缩小至(0,1)范围内。这样,我得到了一些看似可行的“归一化”方法,即将点击量/所有书籍点击量之和,或者点击量/所有书籍中点击量的最大值,这样,问题看似解决了。

但由于心中对我所采取的归一化方法不是很确定,因此我在网络上查询了相关资料。归一化的作用主要有两个:去掉量纲,使得指标之间具有可比性;将数据限制到(0,1)区间,使得运算更为便捷。在对归一化进行了解的过程中,我发现了另一个数学工具:数据标准化,它看似和归一化相同,但实际上是不同的。数据标准化主要是一个统计学的用法,用以将数据缩小至一定范围,并成为一个标准值,数据的标准化可以解决以下问题:在指标体系的建立过程中,由于不同性质的数据,其直接相加不能正确反映不同作用力的综合结果,必须考虑改变指标数据的性质,使所有指标对测评方案的作用力同趋化,再 相加才能得出正确结果。这里就需要用到数据的标准化。

最后我决定采取最简单的归一化方法,线性归一化。公式为(x- xmin)/(xmax-xmin)。其中xmin为所有书籍中点击量的最小值,xmax为所有书籍中点击量最大值。采取这样的归一化后,我发现,归一化同时也能解决使得指标趋同的问题。原本点击量、转化率的数值差别很大,但归一化后,其数值均变为(0,1)之间,这样不仅纵向能显示出不同书籍的差异,横向也能缩小不同指标间的“作用力”,使得点击量这个数值较大的值在归一化后,其对指标评价结果值的影响和转化率趋同,而非一个天一个地。

最后,列出常用的归一化方法:

1、线性转换:y=(x-MinValue)/(MaxValue-MinValue

2、对数函数转换: y=log10(x)

3、反余切函数转换:y=atan(x)*2/PI

4、线性与对数函数结合

另外还有一些常用的数据标准化方法:

例如:z-score规范化(或零-均值规范化)

y=(x-X的平均值)/X的标准差

关于归一化的了解和运用,让我接触到了归一化等方法对于综合指标的数值计算、统计分析、数据挖掘等不同应用场景的基础作用,以后若有机会继续接触排行算法、推荐系统等相关数据算法方面的工作,还需要进行数据挖掘技术的相关学习。

(写于2014年10月)


    关注 王小狸


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册