特征少,可解释性不强,特征多可以提供更多的信息用来描述问题
数据特征维度成千上万但是样本量稀少,就属于高维小样本数据集,容易过拟合,特征维度越大,训练时需要的样本量会呈指数形式增长
如果获取的样本量很少,有限样本或者是小样本呢会导致高维空间数据稀疏,随着特征维数的增加,基于距离的测度的作用会被消弱。
特征约简
特征提取: 降维
- 主成分分析PCA
- 核主成分分析KPCA
- 典型相关分析CCA
- Fisher线性判别分析LDA
- 核线性判别分析KPCA
特征数目是减少了,但是其可解释性不高
特征选择
可以根据特征和因变量的相关程度
不同于距离度量,依赖性度量只能描述线性关系,信息度量可以衡量特征间,特征与类别的非线性关系,信息度量大部分只能处理离散型特征,也就是类别特征
传统的嵌入式特征选择:是基于正则项L1 会使得特征的系数朝着0的方面前进,较小的系数会使得系数朝着0前进,那些不为0的系数对应的特征就是最终的特征子集
评语:传统的特征选择,我觉得仅仅在线性回归得时候才有用,其他得时候仿佛已经是上一代得技术了。
参考:特征选择方法综述
李郅琴,杜建强,聂
斌,熊旺平,黄灿奕,李
欢
江西中医药大学 计算机学院,南昌 330004
序列到序列模型 Seq-to-Seq Model
传统得词语对齐、翻译规则抽取,离散得表示
神经网络翻译采用连续得空间表示方法,表示词语短语和句子,在翻译建模上不需要词对齐、翻译规则抽取等传统机器学习翻译得必备步骤。,完全采用神经网络完成从源语言到目标语言得映射。
一种是将句子打上标签,有开始有结束,人为得加上句子得起始结束标志,称为端到端得模型End-to-End Model
另一种是编码器解码器模型 Encoder-Decoder Model 编码器读取源语言将其编码为维数固定得向量,解码器读取该向量,依次生成目标语言词语序列
编码器解码器 输入隐藏输出
并且编码器和解码器可以进行联合训练
编码器解码器模型是通用的框架,可以由不同的神经网络实现
语料库基本上一开始就是为了统计机器翻译设计的,把机器翻译堪称求解概率的问题.
基于编码器解码器结构的神经机器翻译是一种通用的模型,并不是完全针对机器翻译任务来设定的,存在
1 受限制的词典大小和句子长度:要求词典大小固定,实现词典大小无限制或者是高效的处理未登录词的问题。
2 难以高效的利用外部的先验知识
3 注意力机制,不足之处是生成目标语言时,并没有考虑到历史注意力信息,并且约束机制较差。生成目标词语并不需要过多的关注源语言的信息,存在不翻译和过度翻译的问题。完善注意力机制是研究的难点和热点。
4 神经网络构架单一:基于编码器解码器的神经机器翻译在架构上比较简单,仅仅能够捕捉到句子级词语信息。
神经网络依据其拓扑结构特点可以分成多种类型,比如前馈神经网络,卷积神经网络,循环神经网络。
循环神经网络主要应用于处理序列数据,特别是变长序列数据。循环神经网络使得不同长度的输入序列,其输入向量维数都相同,并且每个时间点上可以采用相同的变换函数和参数,适合处理变长序列数据。循环结构可以捕捉到所有前驱状态。在一定程度上解决了长距离依赖问题。
门限循环单元 GRU gated recurrent units 将长短时记忆循环单元中的输入门和遗忘门合并成更新门update gate 并且引入了重置门reset gate ,用更新门控制当前状态需要遗忘的历史信息和接受的更新信息,用重置门控制候选状态有多少信息是从历史信息中得到的。该结构是对长短时记忆神经网络的简化,并且降低了计算量。
递归神经网络是循环神经网络的变形结构,一树形结构进行组织,用于结构化预测和表示,适合表示自然语言句法结构。
神经网络没有外部记忆External Memory 对变量和数据长时间存储能力很弱,与外部信息交互很难。
基于注意力的神经机器翻译将源语言句子编码为向量序列,而不是一个固定的向量,在生成目标语言词语时,能够利用与词生成相关的语言词语信息,所对应的词语在源语言中可以连续存在,也可以离散分布,注意力机制实现的双语词汇对应关系称之为软对齐 soft-alignment,传统统计机器学习硬对齐,该方法对目标语言词语对齐长度不做限制,可以避免对齐方法中的对空问题。基于注意力的神经翻译在解码时能够动态的获取源语言相关信息。注意力机制是一种无监督的模型,不同时刻的注意力之间没有明显的约束条件,并且求注意力分配权重时候,需要计算源语言句子中的所有词语的权重,很耗时耗费计算资源。
局部注意力 和 全局注意力 局部注意力仅仅需要关注源语言编码中的一个小的上下文窗口,可以显著的减少计算向量。
注意力机制对源语言和目标语言词语对应关系建模,是无监督的模型。统计翻译词对齐包含丰富的信息,可以控制一个源语言词语可以对应目标语言词语的数量。将机器统计翻译词对齐信息引入注意力机制是一种可行的方法。
在神经网络中增加外部记忆,解码时候交互,可以扩展神经网络的表达能力,外部记忆可以将当前时刻的重要的中间信息存储起来。
字符级神经网络机器翻译是为了解决未登录词、词语切分词语形态变化等问题提出的一种神经机器翻译模型,主要是减少输入和输出的粒度。
字符级神经机器翻译要求输入和输出均以字符为基本单位,通过在编码器和解码器上增加字符到词语之间的映射机制。
规模受限词语表问题
神经机器翻译为了加快训练速度,将双语词典句子长度限制在一定的范围之内,词典由语料中频率较高的词语组成,数量限制在3万到8万之间,其余词统一应用于unk符号表示,句子长度限定为50词以内,这种限制加剧了未登录词oov问题,同时低频词也难以学到高质量表示。
未登录词是语料中部分词语超出词典的覆盖范围,导致词语不能够被准确翻译,神经机器翻译在词典大小限定条件下,未登录词数量增加,翻译效果也严重下降,语言是动态变化的系统,词语数量也很难固定下来。
实现大规模的翻译词典
大规模的翻译词典采用词典较大与3万到8万相比,或者是大小无限制,一般是指目标语言词典。
多模态神经机器翻译利用资源不限于文本,研究主要集中在于利用图像信息提高神经机器翻译效果。这类方法采用两个编码器,一个编码器对文本信息编码,与普通的神经机器翻译相同,另一个编码器对图像信息编码。在解码的时候,通过注意力机制将不同模态的信息应用在翻译中。
提高语言的解释性,基于编码器解码器的神经机器翻译,实现了源语言到目标语言的直接翻译,但是翻译过程很难得到充分的语言学解释。但是可以从词语级神经网络中抽取隐含的句法结构关系
- Feature 特征变量,也叫自变量,是样本可以观测到的特征,通常是模型的输入。
- Label 标签,也叫目标变量,需要预测的变量,通常是模型的标签或者输出。
- Train Data 训练数据,有标签的数据,由举办方提供。
- Test Data 测试数据,标签未知,是比赛用来评估得分的数据,由举办方提供。
- Train Set 训练集,从Train Data中分割得到的,用于训练模型(常用于交叉验证)。
- Valid Set 验证集,从Train Data中分割得到的,用于验证模型(常用于交叉验证)。
1.3 数据预处理(Data Preprocessing)
刚拿到手的数据会出现噪声,缺失,脏乱等现象,我们需要对数据进行清洗与加工,从而方便进行后续的工作。针对不同类型的变量,会有不同的清洗和处理方法:
- 对于数值型变量(Numerical Variable),需要处理离群点,缺失值,异常值等情况。
- 对于类别型变量(Categorical Variable),可以转化为one-hot编码。
- 文本数据是较难处理的数据类型,文本中会有垃圾字符,错别字(词),数学公式,不统一单位和日期格式等。我们还需要处理标点符号,分词,去停用词,对于英文文本可能还要词性还原(lemmatize),抽取词干(stem)等等。
在做特征抽取的时候,我们是尽可能地抽取更多的Feature,但过多的Feature会造成冗余,噪声,容易过拟合等问题,因此我们需要进行特征筛选。特征选择可以加快模型的训练速度,甚至还可以提升效果。
特征选择的方法多种多样,最简单的是相关度系数(Correlation coefficient),它主要是衡量两个变量之间的线性关系,数值在[-1.0, 1.0]区间中。数值越是接近0,两个变量越是线性不相关。但是数值为0,并不能说明两个变量不相关,只是线性不相关而已。
- Feature和Label的相关度可以看作是该Feature的重要度,越接近1或-1就越好。
- Feature和Feature之间的相关度要低,如果两个Feature的相关度很高,就有可能存在冗余。
除此之外,还可以训练模型来筛选特征,比如带L1或L2惩罚项的Linear Model、Random Forest、GDBT等,它们都可以输出特征的重要度。在这次比赛中,我们对上述方法都进行了尝试,将不同方法的平均重要度作为最终参考指标,筛选掉得分低的特征。
1.5.4 模型验证(Validation)
在Test Data的标签未知的情况下,我们需要自己构造测试数据来验证模型的泛化能力,因此把Train Data分割成Train Set和Valid Set两部分,Train Set用于训练,Valid Set用于验证。
- 简单分割
将Train Data按一定方法分成两份,比如随机取其中70%的数据作为Train Set,剩下30%作为Valid Set,每次都固定地用这两份数据分别训练模型和验证模型。这种做法的缺点很明显,它没有用到整个训练数据,所以验证效果会有偏差。通常只会在训练数据很多,模型训练速度较慢的时候使用。
- 交叉验证
交叉验证是将整个训练数据随机分成K份,训练K个模型,每次取其中的K-1份作为Train Set,留出1份作为Valid Set,因此也叫做K-fold。至于这个K,你想取多少都可以,但一般选在3~10之间。我们可以用K个模型得分的mean和std,来评判模型得好坏(mean体现模型的能力,std体现模型是否容易过拟合),并且用K-fold的验证结果通常会比较可靠。
如果数据出现Label不均衡情况,可以使用Stratified K-fold,这样得到的Train Set和Test Set的Label比例是大致相同。