猪猪のAI笔记
  • README
  • 读书笔记
    • 1.特征工程
      • 1.1.数值空间
      • 1.2.文本数据
      • 1.3.词袋到TF-IDF
      • 1.4.分类变量
      • 1.5.数据降维:PCA
    • 2.自然语言
      • 2.1.处理文本的机器
      • 2.2.词频背后
      • 2.3.神经网络基础
      • 2.4.Word2Vec,词向量推理
      • 2.5.神经网络深入
    • 3.神经网络
      • 3.1.绪论
      • 3.2.机器学习
      • 3.3.线性模型
      • 3.4.前馈神经网络
      • 3.5.卷积神经网络
      • 3.6.循环神经网络
      • 3.7.网络优化
      • 3.8.注意力机制/外部记忆
      • 3.9.无监督学习
    • 4.XGboost
      • 4.1.基础和初探
  • 课程系列
    • CDA III
      • 1.数据挖掘
      • 2.特征工程
      • 3.自然语言
      • 4.神经网络
      • 5.支持向量机
      • 6.集成学习
      • 7.朴素贝叶斯
      • 8.决策树
      • 9.聚类
      • 10.模型评估
      • 11.关联规则
      • 12.计算题知识点
      • 13.计算题分析
    • 题库分析
      • 深度学习
      • 机器学习-01
      • 机器学习-02
      • 机器学习-03
      • 机器学习-04
      • 机器学习-05
      • 机器学习-06
      • 机器学习-07
      • 机器学习-08
      • 机器学习-09
      • 机器学习-10
      • Level III模拟(一)
      • Level III模拟(二)
    • 知识点
      • Transformer模型
      • ELMO,BERT,GPT
      • 正则化之L1,L2
      • 距离详解
    • K-RPA
      • RPA行业展望
      • 命名规范和开发原则
      • 脚本向导编程
      • K-RPA异常处理
      • K-RPA文件/目录操作
      • (高)K-RPA环境
      • (高)K-RPA命名规范和开发原则
      • (高)K-RPA脚本向导编程
      • (实)01:安装K-RPA
      • (实)02:脚本向导编程
      • (实)03:完整案例
      • (实)04:文件和集成
由 GitBook 提供支持
在本页
  • 1. 数据预处理
  • 1.1. 数据过滤
  • 1.2. 缺失值填补
  • 3. 初级转换
  • 4. 高级转换
  • 2. 特征工程概要
  • 2.1. 重要性
  • 2.2. 步骤
  • 2.3. 特征理解
  • 2.4. 特征改进
  • 3. 涵盖范围
  • 3.1. 特征建构:Feature Construction
  • 3.2. 特征选择:Feature Selection
  • 3.3. 特征转换:Feature Transformation
  • 3.4. 特征学习:Feature Learning

这有帮助吗?

  1. 课程系列
  2. CDA III

2.特征工程

1. 数据预处理

1.1. 数据过滤

    区隔化模型,替每个客群找出适合它的变量和模型,不同群的数据分别用不同类型来做评估。

形态
说明

Type 1

训练80% + 测试20%(训练数据做区隔化模型)

Type 2

训练80% + 测试20%(在测试数据做区隔化模型,测试不同群效果是否不同)

二种场景有所不同。

1.2. 缺失值填补

1.2.1. 直接忽略法

1. 针对所有数据

    有缺失值,整笔删除(机器学习中不允许空值)

  1. 特点:

    1. 最简单的方法

    2. 搜集数据量很多,缺失数据占一小部分,可删除

    3. 分类建模时,数据**分类标记(Class Label)**为空,无法正确分类,可删除

  2. 缺点:

    1. 数据缺失比例大时,造成数据流失。

2. 针对字段

  1. 字段有缺失值,整个字段删除

    1. 处理数据缺失最简单的方法

  2. 将整个字段转换成指示变量(Indicator Variable)

    1. 处理缺失的特殊方法

    2. 使用此方法理论基础:空值也是行为的一种呈现。

1.2.2. 人工填补

缺点:当数据缺失过多,耗时且人力负担沉重。

1.2.3. 自动填补

1. 类别型

  1. 填充一个通用常数,如:未知/Unknown,产生新类。

  2. 填充该字段的众数(Mode)

    1. 缺点:不够客观

    2. 可分群求众数(每一群的众数有所不同,分群填补可能更客观)

  3. 利用模型求出比较可能的值来填入:当做分类问题处理「精确的做法」。

注意点:算法选择上,要能接受输入字段有空值而依然能建立模型的算法:KNN、随机森林、XGBoosting是常用选择(也可建立数字预测模型)。

2. 数值型

  1. 填入通用常数,如:0。

  2. 填入该字段的整体平均值(Mean)、或中位数

    1. 缺点:不够客观

    2. 对统计结果影响不大

    3. 也可以分群做平均

  3. 利用模型求出比较可能的值来填入:当做数字预测问题处理。

注意点:算法选择上,要能接受输入字段有空值而依然能建立模型的算法(和分类一样)。

3. 初级转换

3.1. 类别字段编码

  • One-Hot Encoding(机器学习领域说法)

  • Dummying(统计和学术研究说法)

以上两种等价,叫法不同!

    虚拟变量小心虚拟变量陷阱(Dummy Variable Trap):变量之间会有多重共线性或高度相关的情形发生。通常做One-Hot Encoding后会删除其中一个栏位(少一个),防止虚拟变量陷阱。

例子:

([
    ["A"],
    ["B"],
    ["A"],
    ["C"],
    ["A"]
])
# 编码后生成(有值为1,无值为0):
([
    [1,0,0],    # A=1,B=0,C=0
    [0,1,0],    # A=0,B=1,C=0
    [1,0,0],    
    [0,0,1],    # A=0,B=0,C=1
    [1,0,0]
])
# A、B、C分别代表位置1,2,3,有值为1,无值为0,生成01矩阵
  • 多标签编码

    用于描述一个对象的多种不同的特征标签,标签会超过一个。

例子(多标签问题):

([
    ["A","B"], 
    ["C","D"],
    ["A","B"],
    ["E","B"],
    ["A","D"]
])
# 编码后生成(有值为1,无值为0):
([
    [1,1,0,0,0],    # A=1,B=1,C=0,D=0,E=0
    [0,0,1,1,0],    # A=0,B=0,C=1,D=1,E=0
    [1,1,0,0,0],    
    [0,1,0,0,1],    # A=0,B=1,C=0,D=0,E=1
    [1,0,0,1,0]
])

3.2. 顺序字段编码

    顺序字段编码时要特别注意数值的大小,数值大小也许会对计算产生影响,所以编码过程中需要思考数值本身具有的业务意义,再进行编码。

4. 高级转换

4.1. 一般化 Data Generalization

    方法一:类别型字段的一般化操作,利用概念阶层对类别进行提升(提升一层或其他),如下图:

    方法二:先把教育程度排序,分别计算每种值导致目标字段的概率,根据目标字段的概率进行替换(根据和目标字段关系运算)。

4.2. 离散化 Data Discretization

    一般是数值型字段转换成类别型,优点:

  1. 使数据精简,降低数据复杂度,让数据容易理解。

  2. 可支持许多无法处理数值型字段的算法。

  3. 提高分类器稳定性,提升分类模型准确度。

  4. 可找出输入字段在目标字段的趋势(Trend),有助于未来解读。

    离散化结果需要和目标值有一定的趋势,切割出数个区间来取代值域上众多的数据数值。

  1. 人工分离法

  2. 基本装箱法Binning Method

    1. 等宽(Equal-Width-Interval)装箱

    2. 等频(Equal-Frenquency-Interval)装箱法

    离散化的结果需要易于解释——这一点也十分重要。

2. 特征工程概要

    数据和特征决定了机器学习的上限,模型和算法只是在逼近这个上限,特征工程是机器学习成功的关键因素;特征工程目的是将字段转换为能更好表示潜在问题的特征,提高学习效能。

2.1. 重要性

  • 特征越好,灵活性越强

  • 特征越好,构建的模型越简单

  • 特征越好,模型的性能越出色

2.2. 步骤

  1. 建立机器学习模型的Baseline Model(基模型)

  2. 使用一种或多种特征工程技术处理原始数据

  3. 重新建立机器学习模型,并比较Baseline Model

  4. 效能大于某个临界值,代表它有益

    特征工程之前,特征理解和特征改进。

2.3. 特征理解

  • 数据是结构还是非结构

  • 字段类型:数值、类别、顺序、二元

  • 探索式数据分析 Exploratory Data Analysis

    • 描述性统计 Descriptive Statistics(生成数据质量报告)

    • 数据可视化 Data Vistualization

2.4. 特征改进

  1. 数据清洗

  2. 数据编码

    1. 标准化:Data Standardization

      1. Z-Score, Min-Max

    2. 一般化和离散化

    3. 数据归一化:Data Normalization

      1. L1归一化(两个值相加总和为1)

      2. L2归一化

  3. 非结构数据结构化

3. 涵盖范围

3.1. 特征建构:Feature Construction

运用外部数据

    使用外部特征数据(公司的、OpenSource)的领域知识来补充特征数据。

运用数据探索

    使用统计分析的图示查看每种特征引起的最终结果,并进行类似描述性分析的操作,最主要的是查看该特征的相关信息对目标值的影响,根据原始变量产生新的衍生性变量。

运用专家经验

    根据领域专家的知识经验选择相关特征。

运用数据分析

    (略)案例中使用了决策树做基本分析。决策树的一个核心问题,一次只能考虑一个字段,无法同时考虑两个字段。

degree参数
说明

degree = 2

degree = 3

3.2. 特征选择:Feature Selection

无效变量:不相关变量、多余变量

3.2.1. 无效变量

    维度的诅咒问题。

    两种方法删除无效变量:Redundancy和Irrelevancy

  • Redundancy:两个变量效果一致,多余了一个,这两个变量一起考虑或删除其中一个。

  • Irrelevancy:这两个变量和目标之间关系不密切,不相关,无法带来信息,直接移除。

3.2.2. 统计方式选择

    方差阈值化(Variance Thresholding,VT),计算每一个数值型字段的方差,如果方差低于某个阈值,那么该字段包含信息量不够,这样的字段可以拿掉。

  1. 方差不能事先标准化,尤其是Z-Score标准化,因此,如果特征集包含了不同单位(different units)时VT将会不起作用。

  2. 方差门槛值必须手工设定(设置阈值)。

如果每个特征方差都是0或1,那么VT将无法工作。

    如果是二元变量(男、女),那么VT的方法使用概率计算如:

    也可以使用统计检验的方式解决输入字段和目标字段不相关(Irrelevancy)的问题(VT不考虑和目标字段的关联关系)

目标类型
检验类型
检验方式

类别(离散)

类别

卡方检验/VT

类别(离散)

数值

ANOVA检验、T检验

数值(连续)

类别

ANOVA检验、T检验

数值(连续)

数值

相关系数

  1. 必须先计算卡方值

  2. 然后根据卡方计算p-value

2. T检验/ANOVA检验

    T检验之前

  1. 必须用F检验去检验每个字段样本变异数是否和母体相同:p-value越小代表变异数越有差异。

  2. 然后计算T检验的T-value,然后根据它计算p-value。

    ANOVA检验

  1. 先计算F-value

  2. 根据F-value查表算出p-value

3.2.3. 高度相关

3.2.4. 模型方式

    主要是解决共线性(Collinearity)问题,可使用:

  • 决策树:Decision Tree

  • 随机森林

  • XGBoost

  • 逻辑回归中的逐步回归:Logistic Regression - Stepwise

    主要协助选择并过滤出重要且不具有共线性的变量,KO多余变量Redundant。

3.2.5. 递归方式

    RFECV,RFE递归特征评估,CV交叉验证,反复训练一个模型,每次训练过后移除掉一个特征直到变差(Accuracy),递归式属于Wrapper Methods。

Wrapper Method包含:

  • 向前法(Forward)

  • 向后法(递归,Backward)

  • 双向法(Bi-Direcation)

3.3. 特征转换:Feature Transformation

  1. 线性的特征转换

    1. 和目标无关:PCA、NMF、SVD、TSVD

    2. 和目标有关:LDA

  2. 非线性特征转换:

    1. 和目标无关:Kernel PCA、t-SNE

    2. 和目标有关:神经网络

  1. 尽量减小损失

  2. 依旧可以执行高质量的预测

    这种特征转换的一个问题是:可解释性不足,如果您想要解释性特别强,就必须做特征选择。

3.3.1. 线性:PCA

    PCA——主成分分析,利用线性方式做维度消减,它会把特征投影到一个维度更小的空间,会保留大多数方差比较大的特征(非指导性技巧)——使用主成分取代原来的特征,如图:

    将左侧x,y两个特征直接转换成主成分,主成分分析步骤如:

  1. (隐藏步骤)处理之前做标准化

  2. 计算协方差矩阵(Variance-Covariance Matrix)

  3. 解出协方差特征值(Eigen Value)和特征向量(Eigen Vector)

  4. 特征值从大到小排序,排序后分第一主成分、第二主成分

3.3.2. 线性:SVD/TSVD

    潜在语意分析(Latent Semantic Analysis,LSA)就是衍生出来的模型,它从庞大文字数据中找出词汇所拥有的潜在语意关联性,是广泛用在自然语言上的降维方式。

    LSA可计算词汇语意相似度、词汇与文件相似度,它可以将词汇-文件的矩阵降维,转换为潜在语意空间,这个过程就会使用SVD矩阵分解技术(奇异值分解)。

    中间去掉了部分特征经过了特征转换,如图只转换前两个维度,忽略其他维度。左边相乘结果:左边词和文件的关系、右边是词和语义的关系。

    LSA的缺陷:

  1. LSA通过奇异值分解降维后,语义维度形成正交,矩阵中有可能有负值,造成解读困难:使用NMF/LDA解决。

  2. 奇异值分解费时,尤其是关键词量大时

  3. 新词加入时,需重新进行矩阵分解。

    取而代之将SVD替换成TSVD(Truncated SVD),它可以产生一个指定维度分解矩阵,运算速度更快。

3.3.3. 线性:NMF

    NMF(Non-negative Matrix Factorization)是一个非监督的线性维度降维技术,将原始空间对应到语义空间,它不会产生负值。

  1. 给定需要转换的特征维度r

  2. NMF的一个主要改动就是,生成的矩阵不会包含负值(非负矩阵)。

    NMF特征

  1. 原始矩阵中所有元素都是非负数

  2. 分解后矩阵中所有元素都是非负数

  3. 潜在语意控件维度不一定正交

    NMF步骤

3.3.4. 线性:LDA

    LDA(Linear Discriminant Analysis)是和目标有关的线性转换,它是一个分类的降维算法,利用线性区别。它的工作原理类似于PCA,但是二者新维度方向不同:

  1. PCA是最大化数据中的变异,并且保留数据中的变异,非监督

  2. LDA是把不同的两个类别之间的距离拉远(分开),监督

    LDA步骤

  1. 计算每个类别的平均值向量

LDA是希望把各类数据分得越开越好,PCA则是保留数据中的变异,注意二者区别。

    左侧LDA分类效果很好,每一类直接可以用垂直直线分开,而PCA的分类效果不好,LDA参考了目标字段(监督),PCA则不参考(非监督)。

3.3.5. 非线性:Kernel PCA

    PCA的一个扩展,使用核kernal函数,允许对非线性数据进行降维,比PCA多了一个核函数步骤。将原始坐标投影到一个线性可分的空间,核函数(此处核函数和SVM的核函数一模一样)如:

  1. RBF:高斯核函数

  2. Poly:多项式核函数

  3. Sigmoid:Sigmoid核函数

  4. Linear:线性核函数(使用Linear则是标准PCA)

Kernal(Linear) PCA = PCA,比PCA多一个核函数的过程,转换到另外的特征空间。

3.3.6. 非线性:t-SNE

    t-SNE(t-Distributed Stochastic Neighbor Embedding)是将复杂的高维数据降维到二维或三维(固定目标维度),有助于低维空间可视化,降维后相似数据会聚在一起,方便理解。

    步骤

t分布可以将原本高维空间彼此邻近的结构,在低维空间更近,原本更远的结构,低维空间更远。

3.3.7. 非线性:神经网络

    神经网络会参考目标字段(监督式),字段和字段相关性可通过神经网络学习来处理,后续做特征部分做详细说明。

3.3.8. 总结

算法
监督/非监督
线性/非线性

PCA

x

线性

NMF

x

线性

SVD,TSVD

x

线性

Kernel PCA

x

非线性

T-SNE

x

非线性

AutoEncoder

x

非线性

LDA

o

线性

NN/Deep Learning

o

非线性

3.4. 特征学习:Feature Learning

在示例中,最终都是运行决策树算法C 5.0,运行属性对目标的影响结果。

3.4.1. 类别:关联规则为基础

    决策树算法是通过不断迭代对数进行切割来划分数据集,表现很好,但是:

  1. 这类算法只能同时考虑一个属性

  2. 并且这类算法不去参考属性和属性之间的相关性

    字段相关性分两类:类别型、数值型,最终有三类:

  • Categorical-Type:类别型

  • Numerical-Type:数值型

  • Categorical-Numerical-Mix:混合型

1. CAM模型

    CAM(Classification based on Association Mining)模型用来解决相关性的组合型爆炸问题。

  1. 先把训练数据执行关联规则挖掘

  2. 此处的关联规则使用了多维度关联规则挖掘

  3. 关联规则挖掘分析之后再将数据执行传统决策树算法

数值型离散化,可以根据目标字段直接运行决策树得到数值分布结果。

3.4.2. 数值:神经网络为基础

    神经网络决策树(NDT,Neural Decision Tree):

NDT结合了神经网络和传统决策树来分析案例

3.4.3. 深度学习为基础

    Autoencoder架构:学习一个压缩表示法,它包含了一个encoder层和decoder层。

    中间的隐藏层会很多,越多隐藏层产生出来的特征有可能会越好(左右隐藏层是对称的),训练完成后保留Encoder的模型。

X = model.predict(X)

    没有使用目标字段,是非监督的,但又使用了监督方式在执行,所以又称为自监督(Self-Supervised)的方式学习。AE变种:

  • Auto Encoder:AE,标准的

  • Variational AE:VAE

  • Denoising AE:DAE

  • Sparse AE:SAE

    它是一个多层神经网络,称为自编码器,隐藏层的向量可以降维。

1. VAE:Variational AE

    VAE在编码器阶段添加了一个约束,产生的code服从单位高斯分布:Gaussian Distribution。

2. DAE:Denoising AE

    给定一个带有噪音的图像,让该Encoder具有抗噪的能力,它是一种学习对图片去噪(Denoise)的神经网络,实际过程中在输入内随机加入噪声数据,让机器执行后回复到无噪声的数据状态。

3. SAE:Sparse AE

    AE基础上限制每次得到的中间表示尽量稀疏,使自动编码器将每个输入表示为少量节点组合,中间的非零值节点称为活动节点。

4. RBM:受限波尔兹曼机

    也可用于深度学习网络,深度信念网络使用多个RBM堆栈而成,并可使用梯度相加法和反向传播算法进行调优。

  • Encoder和Decoder的权重实际是一样的

3.4.4. 词嵌入为基础

    词嵌入(Word Embedding)是一种将文本中词转换成数字向量的方法,把一个维数为所有词数量的高维空间嵌入到一个维数低得多的连续向量空间,每个单词或词组被映射为实数域上的向量,词嵌入结果就生成了词向量。

    词向量的数量远小于词本身的数量,词嵌入具有语义层的效果。

    词嵌入模型不考虑权重,词袋模型才考虑权重。

上一页1.数据挖掘下一页3.自然语言

最后更新于3年前

这有帮助吗?

缺失数据占整个字段所有数据比例过大(>50> 50%>50),直接删除

缺失数据占整个字段所有数据比例过大(>50> 50%>50),可使用这种方法

    另外一种方法:多项式特征/交互特征:degree决定了多项式最大项,如有两个特征x1,x2x_1, x_2x1​,x2​

    PolynomialFeatures默认交互特征:x1x2x_1x_2x1​x2​。

1ni∑i=1n(xi−μ)2\frac{1}{n_i}\sum\limits_{i=1}^n(x_i - \mu)^2ni​1​i=1∑n​(xi​−μ)2

    其中xxx是特征向量,xix_ixi​是特征值,μ\muμ是特征均值。注意:

Var(x)=p(1−p)Var(x)=p(1-p)Var(x)=p(1−p)

    男女编码成10,ppp是1的概率,1−p1-p1−p是0的概率,最终计算的Var(x)Var(x)Var(x)值越大越重要。

1. 卡方统计量χ2\chi^2χ2:

χ2=∑i=1n(Oi−Ei)2Ei\chi^2 = \sum\limits_{i=1}^n\frac{(O_i - E_i)^2}{E_i}χ2=i=1∑n​Ei​(Oi​−Ei​)2​

    真实值OiO_iOi​和期望值EiE_iEi​越接近表示二者无关,越不一致则表示二者有关,所以卡方值越大则表示二者关联性越高(越不一致)。

在95%置信水平之下,p−value<0.05p-value < 0.05p−value<0.05则为显著(重要)的关键字段

在95%置信水平之下,p−value<0.05p-value < 0.05p−value<0.05则为显著(重要)的关键字段

    两个特征高度相关(Redundant),计算两两之间过后移除掉其中一个,皮尔森>0.95>0.95>0.95的就可以直接移除。

    特征数量Pnew<PoriginalP_{new} < P_{original}Pnew​<Poriginal​,转换过后降低特征数量,这样做的缺点如:

    在协方差矩阵AAA中,求出满足Ax=λxAx=\lambda xAx=λx的λ\lambdaλ以及xxx,其中λ\lambdaλ是特征值,xxx是特征向量。

X=UDVT→X^=U^D^V^TX = UDV^T \to \hat{X}=\hat{U}\hat{D}\hat{V}^TX=UDVT→X^=U^D^V^T

NMF的分解写成V≈WHV \approx WHV≈WH,其中VVV是原始的d×nd \times nd×n特征矩阵(ddd是关键词,nnn是文件),WWW就是d×rd \times rd×r,HHH就是r×n r \times nr×n。

将矩阵W,HW, HW,H初始化,值为正

将HHH视为常数,更新WWW

将WWW视为常数,更新HHH

当W,HW, HW,H都收敛,停止计算

计算每个类别内SwS_wSw​和类别间SBS_BSB​的散布矩阵(Scatter Matrix)

解出Sw−1SBS_w^{-1}S_BSw−1​SB​矩阵的特征值(Eigen Value)和特征向量(Eigen Vector)

将特征值从大到小排序,保留KKK个特征向量

使用得到的KKK个特征向量将数据投影到新的空间

利用高斯分布来计算在高维数据中任意两点xi,xjx_i, x_jxi​,xj​的相似度HHH

在低维空间中,随机产生与高维空间中相同数量的数据点,并利用ttt分布计算低维空间两点yi,yjy_i,y_jyi​,yj​的相似度LLL。

更新数据点yiy_iyi​,拉近HHH和LLL的相似度分布

重复上述步骤,使得HHH和LLL的相似度分布趋近相同

S(t+1)>S(t)=BUYS(t+1) > S(t) = BUYS(t+1)>S(t)=BUY

    数据准备:先做Max-Min Normalization,将特征极值正规化到[0,1]范围,然后运行神经网络,将S(t)S(t)S(t)转换成S(t+1)S(t+1)S(t+1)新的坐标空间(隐藏层的组合函数坐标空间)。

图中μ1,μ2\mu_1,\mu_2μ1​,μ2​是平均值向量节点,而ho12,ρ22ho_1^2,\rho_2^2ho12​,ρ22​是标准差向量节点,中间得到的结果做随机抽样,得到中间表示法,服从单位高斯分布。

x1,x2,x12,x22x_1, x_2, x_1^2, x_2^2x1​,x2​,x12​,x22​
x1,x2,x12,x22,x13,x23x_1, x_2, x_1^2, x_2^2, x_1^3, x_2^3x1​,x2​,x12​,x22​,x13​,x23​