一、特征工程
全部资料可在小红薯上shou【小Apex数据分析师】
1、为什么需要对数值类型的特征做归一化?
归一化是特征工程中的一项重要步骤,它主要应用在数值类型的特征。归一化的目的是将不同尺度和范围的特征转化为相同的尺度,以便于训练机器学习模型时更好地进行优化和收敛。
1)避免特征之间的差异影响模型:
如果不同特征具有不同的尺度和范围,模型可能会受到影响,因为一些特征值的范围较大,而其他特征的是范围较小,这可能导致模型对某些特征更敏感,而对其他特征不敏感。
2)加速模型收敛:
在训练过程中,模型通过梯度下降等优化算法来更新参数,如果特征具有不同尺度,梯度下降可能需要更多的迭代才能找到最优解,通过归一化,可以加速模型的收敛过程。
3)提高模型繁华能力:
归一化可以帮助模型更好的捕捉数据中的模式,从而提高模型的性能和泛化能力。这对于支持向量机(SVM)和k临近(KNN)算法尤为重要。
4)防止数值溢出:
在一些数值计算中,特征的值如果相差过大,可能导致数值计算溢出或者不稳定,通过归一化可以减小这种可能性。
5)常见的归一化方法:最小最大缩放、标准化
最小最大缩放:将特征缩放到一个指定的范围,通常是【0~1】分布。
标准化:将特征转化为均值为0,标准差为1的标准正态分布。
2、怎样处理类别型特征?
1)独热编码(OneHot Encoding)
对于具有多个类别的特征,最常见的方法是使用独热编码。对于每个类别,创建一个新的二进制特征(0或1),表示样本是否属于该类别。这种方法适用于无序的类别。例如,如果有一个特征"颜色",可能有"红色"、"蓝色"和"绿色"三个类别,独热编码将创建三个新的二进制特征来表示这三个颜色。
2)标签编码(Label Encoding)
对于有序的类别,可以使用标签编码。这将为每个类别分配一个整数标签。但要注意,有序的标签在某些模型中可能被误解为具有一定的顺序关系。 例如,如果有一个特征"大小",可能有"小"、"中"和"大"三个有序的类别,标签编码将为它们分配整数标签。
3)Embedding
对于高基数(cardinality)的类别特征,独热编码可能导致维度爆炸,降低模型的训练效率。在这种情况下,可以考虑使用嵌入(Embedding)层,将类别映射到低维连续向量空间。这常用于处理自然语言处理(NLP)中的词嵌入。
4)Target Encoding
使用目标变量的统计信息对类别型特征进行编码。例如,对于每个类别,可以使用该类别对应的目标变量的平均值进行编码。这在一些分类问题中可能有助于提取类别与目标之间的关系。
5)Hashing Trick
对于高基数的类别特征,可以使用哈希技巧将类别映射到固定大小的特征空间。这有助于减小维度,但可能导致冲突。
3、什么是组合特征?如何处理高纬组合特征?
组合特征是通过将两个或多个原始特征进行组合而创建的新特征。这种特征工程的目的是提供更多关于数据的信息,可能有助于提高模型的性能。组合特征可以捕捉原始特征之间的交互作用,使模型更好地理解数据。
1)多项式特征
通过将原始特征进行多项式扩展,创建其高阶组合特征。例如,对于两个特征 (x) 和 (y),可以创建 (x2)、(y2)、(xy)等高阶组合特征。sklearn
中的PolynomialFeatures
类可以帮助实现这一过程。
2)特征交叉
选择特定的原始特征进行交叉,创建新的组合特征。这需要领域知识来选择哪些特征进行交叉。例如,如果有"年龄"和"收入"两个特征,可以创建一个"年龄收入"的组合特征。
3)Embedding
对于高基数的组合特征,可以使用嵌入(Embedding)层,将组合特征映射到低维的连续向量空间。这在处理自然语言处理(NLP)任务中比较常见。
4)特征选择
由于高维组合特征可能导致维度灾难,可以考虑使用特征选择方法来选择最具代表性的组合特征。这可以包括基于统计方法、模型的重要性等。
5)降维:
使用降维技术如主成分分析(PCA)来减少组合特征的数量,同时保留大部分信息。
4、怎样有效地找到组合特征?
1)领域知识
了解数据背后的业务领域是找到有意义的组合特征的关键。具有领域知识的人能够识别哪些特征可能具有重要的交互作用,从而引导特征组合的选择。
2)自动特征工程
利用自动特征工程的工具和算法,如基于遗传算法的特征工程、递归特征消除(Recursive Feature Elimination)等。这些方法可以帮助自动地组合原始特征,找到对目标变量影响较大的特征组合。
from sklearn)preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2, includebias=False)
Xpoly = poly)fittransform(X)
5、有哪些文本表示模型?他们各有什么优缺点?
文本表示模型是将文本数据转换为机器学习算法可以处理的数值形式的模型。以下是一些常见的文本表示模型及其优缺点:
1)词袋模型(Bag of Words, BoW)
优点:简单而直观,易于实现。将文本表示为单词的出现频率,忽略了词序,适用于许多自然语言处理任务。
缺点: 丢失了词序信息和语境信息。无法处理同义词和词语之间的关系。
2)TFIDF(Term FrequencyInverse Document Frequency)
优点: 强调了关键词的重要性,通过计算词频和逆文档频率来加权单词。
缺点:仍然忽略了词序和语境信息。对于文本中的长尾词汇,可能会过于稀疏。
3)词嵌入(Word Embeddings):
例如:Word2Vec、GloVe、FastText。
优点:捕捉了词语之间的语义关系,能够表示词语的分布式表示。能够处理同义词和词义之间的关系。
缺点:对于稀有词汇的处理可能不够有效。通常需要大量的训练数据。
4)文档嵌入:
例如:Doc2Vec、Paragraph Vectors。
优点:将整个文档表示为一个向量,考虑了整个文本的语境信息。
缺点:训练较慢,需要大量数据。可能不够灵活,难以处理变长文本。
5)BERT(Bidirectional Encoder Representations from Transformers):
优点: 使用Transformer模型,能够捕捉双向上下文信息,表现出色。在多项自然语言处理任务中取得了很好的效果。
缺点: 参数较多,训练较慢,需要大量计算资源。对于特定任务,可能需要微调。
6)ELMo(Embeddings from Language Models):
优点: 融合了上下文信息,通过组合不同层次的表示来获取更丰富的语境信息。
缺点: 训练较慢,需要大量数据。在某些任务上可能不如BERT表现。
6、如何缓解图像分类任务重训练数据不足带来的问题?
在图像分类任务中,数据不足可能导致模型的过拟合和性能下降。可以帮助缓解重训练数据不足带来的问题:
-
数据增强(Data Augmentation):
通过对原始图像进行随机变换和扭曲,生成额外的训练样本。这包括旋转、翻转、缩放、平移等操作。数据增强可以有效地扩大训练数据集,提高模型的泛化性能。 -
迁移学习(Transfer Learning):
利用在大规模数据集上训练的预训练模型的权重,将其用于目标任务。这种方法适用于原始数据不足的情况,可以通过在相对较小的数据集上微调预训练模型来提高性能。 -
微调(Finetuning):
在迁移学习的框架下,使用预训练模型的部分层次结构,保持其中一部分权重不变,只调整模型的特定层次以适应新的任务。这有助于在小型数据集上进行训练而不会过度拟合。 -
利用合成数据:
通过合成数据来增加训练集大小,特别是在原始数据有限的情况下。例如,可以使用图像生成技术创建具有不同背景、光照等变化的合成图像。 -
使用预训练的卷积神经网络(CNN):
使用在大型数据集上训练的预训练卷积神经网络,如在ImageNet上训练的模型。这样的模型通常已经学到了通用的特征表示,可以在小型数据集上提供更好的性能。 -
正则化技术:
使用正则化方法,如Dropout,来减少过拟合。Dropout可以在训练期间随机关闭网络中的一些神经元,有助于模型更好地泛化到新的样本。 -
激活函数选择:
使用合适的激活函数,如Leaky ReLU或Parametric ReLU,有助于防止某些神经元的过度激活,从而减轻过拟合。 -
集成学习:
将多个模型的预测结果进行集成,可以提高整体性能。常见的方法包括投票、平均等。