1,为什么要对特征做归一化?
2,什么是组合特征?如何处理高维组合特征?
3,请比较欧式距离与曼哈顿距离?
4,为什么一些场景中使用余弦相似度而不是欧式距离?
5,One-hot的作用是什么?为什么不直接使用数字作为表示?
6,在模型评估过程中,过拟合和欠拟合具体指什么现象?
7,降低过拟合和欠拟合的方法?
深度学习
数据预处理中的重要技术–特征归一化
数据预处理:
深度学习中的数据预处理有哪些方式
1.数据归一化:包括高斯归一化、最大最小值归一化等
2.白化:许多深度学习算法都依赖于白化来获得更好的特征。所谓的白化,以PCA白化来说,就是对PCA降维后的数据的每一列除以其特征值的根号
为什么需要对于数据进行归一化处理,归一化的方式有哪些
1.为了后面处理数据方便,归一化可以避免一些不必要的数值问题
2.为了程序运行时收敛加快
3.同一量纲。样本数据的评价标准不一样,需要对其量纲化,统一评价标准。这算是应用层面的需求
4.避免神经元饱和。就是当神经元的激活在接近0或者1时会饱和,在这些区域,梯度几乎为0,这样,在反向传播过程中,局部梯度就会接近0,这会有效地"杀死"梯度
5.保证输出数据中数值小的不被吞食
归一化的方式主要有:线性归一化、标准差归一化、非线性归一化
什么是特征归一化
数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权
其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上
为什么要进行特征归一化
1.对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内
2.从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类的准确性
学习机器学习
什么是组合特征?如何处理高维组合特征
狭义的组合特征即将类别特征两个或者多个特征组合(数学里面的组合概念)起来,构成高阶组合特征
为了提高复杂关系的拟合能力,在特征工程中经常会把一届离散特征两两组合,构成高阶组合特征
可以使用降维的方法处理高维组合特征:
矩阵分解、特征筛选:
特征降维其实从大的方面讲有两条路可走:
基于原有的特征进行降维
基于原有的特征进行筛选
欧式距离和曼哈顿距离的比较
欧式距离:欧几里得度量是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离
意义:欧式距离越小,两个向量的相似度越大;欧式距离越大,两个向量的相似度越小
缺点:对异常数据敏感
欧式距离将向量各个维度之间的差异等同对待,(实际情况中,样本的不同属性重要程度往往不同)
优点:计算速度快
曼哈顿距离:欧式距离有一个局限是度量两点之间的直线距离。但实际上,在现实世界中,我们从原点到目标点,往往直走是不能到达的。曼哈顿距离加入了一些这方面的考虑
意义:曼哈顿距离也称为城市街区距离。可以看出在曼哈顿距离中,考虑了更多的实际因素。总之,在曼哈顿距离的世界中,规则是我们只能沿着线画出的格子行进
缺点:对异常值敏感
曼哈顿距离将向量各个维度之间的差异等同对待
优点:计算速度快
欧氏距离和曼哈顿距离的区别在于:它们对向量之间差异的计算过程中,各个维度差异的权值不同。向量各个属性之间的差距越大,则曼哈顿距离越接近欧式距离
余弦距离
余弦相似度,就是计算两个向量间夹角的余弦值
余弦距离就是用1减去这个获得的余弦相似度
由上面余弦距离可知,余弦距离的取值范围为[0,2],满足了非负性的性质
当向量的模长是经过归一化的,此时欧式距离与余弦距离有着单调的关系
在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧式距离的结果是相同的
什么时候用余弦距离,什么时候用欧式距离
总体来说,欧式距离体现在数值上的绝对差异,而余弦距离体现在方向上的相对差异
1)例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为(1,0);此时二者的余弦距离很大,而欧式距离很小;我们分析两个用户对不同视频的偏好,更关注相对差异,显然应当使用余弦距离
2)而当我们分析用户活跃度,以登陆次数和平均观看时长作为特征时,余弦距离会认为(1,10)、(10,100)两个用户距离很近;但显然这两个用户活跃度是有着极大差异的,此时我们更关注数值绝对差异,应当使用欧式距离
在日常使用中需要注意区分,余弦距离虽然不是一个严格意义上的距离度量公式,但是形容两个特征向量之间的关系还是有很大用处的。比如人脸识别,推荐系统等
One-hot的作用是什么?为什么不直接使用数字作为表示?
One-hot主要用来编码类别特征,即采用哑变量对类别进行编码。它的作用是避免因类别用数字作为表示而给函数带来抖动
直接使用数字会给将人工误差而导致的假设引入到类别特征中,比如类别之间的大小关系,以及差异关系等等
One-hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效
在实际的机器学习的应用任务中,特征有时候并不总是连续值,有可能是一些分类值,如性别可分为“ male ”和“ female ”。在机器学习任务中,对于这样的特征,通常我们需要对其进行特征数字化,如下面的例子:
有如下三个特征属性:
性别:[“male”,“female”]
地区:[“Europe”,“US”,“Asia”]
浏览器:[“Firefox”,“Chrome”,“Safari”,“Internet Explorer”]
对于某一个样本,如[“male”,“US”,“Internet Explorer”],我们需要将这个分类值的特征数字化,最直接的方法,我们可以采用序列化的方式:[0,1,3]。但是这样的特征处理并不能直接放入机器学习算法中。
One-Hot Encoding的处理方法
对于上述的问题,性别的属性是二维的,同理,地区是三维的,浏览器则是四维的,这样,我们可以采用One-Hot编码的方式对上述的样本“[“male”,“US”,“Internet Explorer”]”编码,“male”则对应着[1,0],同理“US”对应着[0,1,0],“Internet Explorer”对应着[0,0,0,1]。则完整的特征数字化的结果为:[1,0,0,1,0,0,0,0,1]。这样导致的一个结果就是数据会变得非常的稀疏。
使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点
将离散特征映射到欧式空间,是因为,在回归、分类、聚类等机器学习算法中,特征之间距离的计算或者相似度的计算是非常重要的,而我们常用的距离或者相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间
在模型评估过程中,过拟合和欠拟合具体指什么现象?
过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现好,但是在测试集和新数据上的表现较差
欠拟合是指模型在训练和预测时都表现不好。用模型在数据上的偏差和方差指标来表示就是,欠拟合的时候,偏差和方差都比较大,而过拟合时,偏差较小但方差较大
过拟合和欠拟合是导致模型泛化能力不高的两种常见原因,都是模型学习能力与数据复杂度之间失配的结果
降低过拟合和欠拟合的方法
欠拟合:
1.增加新特征,可以考虑加入特征组合、高次特征,来增大假设空间
2.添加多项式特征,这个在机器学习算法中用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强
3.减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数
4.使用非线性模型,比如核SVM 、决策树、深度学习等模型
5.调整模型的容量(capacity),通俗地,模型的容量是指其拟合各种函数的能力
6.容量低的模型可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging
过拟合:
1.正则化(Regularization)(L1和L2)
2.数据扩增,即增加训练数据样本
3.Dropout
4.Early stopping