数据归一化问题是数据挖掘中特征向量表示的关键问题,在不同特征排列的情况下,由于特征本身的表示方式不同,绝对值上的小数据有时会被大数据“吞噬”。 在这种情况下,需要对提取的features vector进行归一化处理,使各特征由分类器平等对待。 描述一些常见的标准化方法,并提供相应的python实现。 实际上很简单。
1,0,1 )标准化:
这是最简单容易想到的方法,通过遍历feature vector内的所有数据进行Max和Min的记录,以Max-Min为基数(即Min=0,Max=1)进行数据的归一化处理。
latex:{ x } _ { normalization }=frac { x-min } { max-min }
Python实现:
efMaxMinnormalization(x,max,min ) :
x=(x-min )/)/(Max - Min );
返回x;
寻找大小的方法直接使用np.max (和np.min )即可。 除非您喜欢在List中管理数字,否则请勿使用python中内置的max ) )和min ) )。
2、Z-score标准化:
该方法给出原始数据的均值(均值)和标准差(标准差),进行数据标准化。 处理的数据符合标准正态分布:平均值为0,标准偏差为1。 这里重要的是复合标准正态分布。 我个人认为,在一定程度上改变了特征的分布。 关于使用经验欢迎讨论。 我对这个标准化不太了解。 转换函数如下所示:
latex:{ x } _ { normalization }=frac { x- mu } {sigma }
Python实现:
defz_scorenormalization(x,mu,sigma ) :
x=(x-mu )/sigma;
返回x;
这里也可以使用mu (即平均值)为np.average )、sigma (即标准偏差)为np.std ) )。
3、Sigmoid函数
Sigmoid函数是具有s形曲线的函数,是良好的阈值函数。 (0,0.5 )呈中心对称,(0,0.5 )附近具有较大的倾斜,但数据趋向正无限和负无限时,拍摄的值无限地趋向1和0。 我个人认为用最喜欢的“规范化方法”引号括起来是因为Sigmoid函数在阈值分割方面也很好。 可以通过改变表达式来改变分割阈值。 在此,作为标准化方法,仅考虑以(0,0.5 )为分割阈值的点的情况:
latex:{ x } _ { normalization }=frac {1} { e } ^ {-x }
Python实现:
defsigmoid(x,useStatus ) :
if useStatus:
return1.0/(1NP.exp(-float ) ) x );
else:
返回浮点(x;
这里管理useStatus是否使用sigmoid的状态,便于调试和使用。
函数的基本性质:
定义域:“,”“,”值域:“1,1”“1,1”“函数可以在定义域内用连续光滑的函数在任何地方导出,导数为f((x )=f ) (x ) ) (1f ) (x )。 最初阶段大致呈指数增长; 随着它开始饱和,它的增加会变慢。最后,当它达到成熟时,它就会停止增加。
二、Sigmoid函数和逻辑回归Sigmoid函数之所以叫Sigmoid,是因为函数的图像想加上字母s。 该函数是一个有趣的函数,可以从图像中观察到一些直观的特性。 函数的可取值在0-1之间,且围绕0.5对称,越接近x=0,可取值的斜率越大。
机器学习中重要的预测模型的逻辑回归(LR )是基于Sigmoid函数实现的。 LR模型的主要任务是给出几个历史{X,Y},其中x是样本的n个特征值,y的取值{ 0,1 }表示正例和负例,通过学习这些历史样本可以获得数学模型,并给出新的LR模型是针对x预测其发生或不发生的二分类模型。 但实际上,发生一个事件时,往往得不到100%的预测,所以LR可以得到发生一个事件的可能性,超过50%则认为发生了事件,不足50%则认为不发生事件
从LR的目的来看,选择函数时需要满足两个条件。
1 .取值范围在0~1之间。
2 .对于一个事件的发生情况,50%是结果的分水岭,选择函数应以0.5中心对称。
根据这两个条件,Sigmoid很好地满足了LR的需要。 对于逻辑回归的具体实现和相关问题,可以看到本文的逻辑函数(sigmoid函数)-Wenjun’s blog,在此省略说明。