特征工程中常用的操作

1.特征工程中常用的操作

1.1数值型:

  • 幅度缩放(最大最小值缩放,归一化…)
  • 离散化/分箱分桶(等距:pd.cut,等频:pd.qcut)(特征交叉)
  • 统计值(Max,min,quentile)
  • 四则运算(加减乘除)
  • 幅度变化(有一些模型对输入数据有分布建设,LR建设输入连续值特征符合正太分布)
  • 监督学习分箱(用决策树建模,用决策树学习连续值划分方式,把决策树中间节点取出来作为特征组合)

1.2类别型:

  1. Onehot encoding 独热编码:对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征(如成绩这个特征有好,中,差变成one-hot就是100, 010, 001)。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的,使用都热编码,主要有以下优点:

    • 解决了分类器不好处理属性数据的问题,通常来说就是用来解决类别型数据的离散值问题。
    • 在一定程度上也起到了扩充特征的作用
    • 它的值只有0和1,不同的类型存储在垂直的空间
    • 使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点,这样会让特征之间的距离计算更加合理
    • 离散特征进行one-hot编码后,编码后的特征,其实每一维度的特征都可以看做是连续的特征。就可以跟对连续型特征的归一化方法一样,对每一维特征进行归一化。比如归一化到[-1,1]或归一化到均值为0,方差为1
    • 当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用PCA来减少维度。而且one hot encoding+PCA这种组合在实际中也非常有用。
    • 适用于特征无内在顺序,category数量 < 4

为什么特征向量要映射到欧式空间?
将离散特征通过one-hot编码映射到欧式空间,是因为,在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。

  1. Label encoding 标签编码: 将分类变量转换成连续的数值型变量。即是对不连续的数字或者文本进行编号,比如有一列,[dog,cat,dog,mouse,cat],我们把其转换为[1,2,1,3,2]。主要有以下优点:

    • 每个分类变量提供唯一的数字ID
    • 适用于非线性基于树的算法
    • 适用于特征存在内在顺序 (ordinal feature)
  2. Count encoding:先计算一个特征列数据集中的每一个分类出现的次数,然后就将这些分类用次数来代替,同一个分类被代替后,数值是一样的,有点和series.values_countt()有点类似,比如在一列描述成绩的特征集 T = { 好 , 中 , 差 , 好 , 好 , 中 } ⊤ T=\{好,中,差,好,好,中\}^\top T={,,,,,},这里“好”出现了3次,那么“好”就被3代替,以此类推,最终被Count encoding之后就是这样的 T = { 3 , 2 , 1 , 3 , 3 , 1 } T=\{3,2,1,3,3,1\} T={3,2,1,3,3,1}

  3. Target encoding:先看每一个分类特征对应的target值,然后计算相对应的target的平均数,最后用这个平均数来代替每一个分类特征

    • 适用于特征无内在顺序,category数量 > 4
    • 太过于依赖target,有很大的可能会有data leakage的风险

1.3时间型:

  • 时间点/时间段(星期几,几点钟)
  • 时间分组/分段(工作日,周末,法定节假日)
  • 时间间隔(距离当前为止)
  • 和数值型一起做统计特征的时候,会选取不同的时间窗
  • 组合

1.4文本型

  • 词袋模型
  • tf-idf
  • ida
  • word2vec/word embedding

2.模型优化有哪些方法

  • 梯度下降法(Gradient Descent)
  • 牛顿法和拟牛顿法(Newton’s method & Quasi-Newton Methods)
  • 共轭梯度法(Conjugate Gradient)
  • 启发式优化方法
  • 解决约束优化问题——拉格朗日乘数法
  • 正则化项

3.偏差、方差的含义

在机器学习中,我们用训练数据集去训练一个模型,通常的做法是定义一个误差函数,通过将这个误差的最小化过程,来提高模型的性能。然而我们学习一个模型的目的是为了解决训练数据集这个领域中的一般化问题,单纯地将训练数据集的损失最小化,并不能保证在解决更一般的问题时模型仍然是最优,甚至不能保证模型是可用的。这个训练数据集的损失与一般化的数据集的损失之间的差异就叫做泛化误差(generalization error)

而泛化误差可以分解为偏差(Biase)、方差(Variance)和噪声(Noise)。

1、偏差bias

偏差是指预测结果与真实值之间的差异,排除噪声的影响,偏差更多的是针对某个模型输出的样本误差,偏差是模型无法准确表达数据关系导致,比如模型过于简单,非线性的数据关系采用线性模型建模,偏差较大的模型是错的模型;

2、方差variance

方差不是针对某一个模型输出样本进行判定,而是指多个(次)模型输出的结果之间的离散差异,注意这里写的是多个模型或者多次模型,即不同模型或同一模型不同时间的输出结果方差较大,方差是由训练集的数据不够导致,一方面量 (数据量) 不够,有限的数据集过度训练导致模型复杂,另一方面质(样本质量)不行,测试集中的数据分布未在训练集中,导致每次抽样训练模型时,每次模型参数不同,输出的结果都无法准确的预测出正确结果;

3.1 如何判断模型的瓶颈是bias还是variance?

  • Bias的对象是单个模型,是期望输出与真实标记的差别。它描述了模型对本训练集的拟合程度。即欠拟合:模型不能适配训练样本,有一个很大的偏差
  • Variance的对象是多个模型,是相同分布的不同数据集训练出模型的输出值之间的差异。它刻画的是数据扰动对模型的影响。即过拟合:模型很好的适配训练样本,但在测试集上表现很糟,有一个很大的方差。

4.案例

请使用sklearn中的线性回归、随机森林、支持向量机,创建投票器,然后对"pima-indians-diabetes.data.csv"(数据位置:0.Teacher/Data)数据集进行分类

待更新。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值