美文网首页机器学习算法
《特征工程入门与实践》学习笔记

《特征工程入门与实践》学习笔记

作者: zTonyz | 来源:发表于2019-09-29 08:31 被阅读0次

    书本结构与框架:

    第1章~第5章

        机器学习流水线:探索性数据分析→ 特征理解→ 特征增强→ 特征构建→ 特征选择

    第6章~第7章

        特征提取:特征转换+ 特征学习

    第8章为案例分析,包含面部识别和酒店评论两个实战案例。

    1.特征工程简介

    数据科学家花80%以上时间用来获取、清洗和组织数据,超过75%的人表示,准备数据是流程中最不愉快的部分。

    - 特征工程是将数据转换为能更好地表示潜在问题的特征,从而提高机器学习性能的过程。

    - 属性一般是表格数据的列,特征一般只指代对机器学习算法有益的属性。

    - 特征工程的评估:以提高机器学习效果作为结果导向,来评估特征工程是否有效。

    监督学习(预测分析):

        回归:预测定量数据,使用均方误差MSE;

        分类:使用准确率等指标。

    无监督学习(将数据按特征行为进行分类):

        聚类:用轮廓系数silhousette_score;

        统计检验:用相关系数、t检验、卡方检验等评估转换后的效果。


    2.特征理解:我的数据集里有什么

    - 非结构化数据:没有组织结构,看起来只有一团数据,或只有一个特征,需要通过转换变为结构化。

    - 结构化数据:以表格形式组织,行是观察值,列是特征。

        - 定性数据:类别,描述某样东西的性质。

                - 定类等级:按名称分类,使用条形图/饼图进行可视化。

                - 定序等级:有自然排序属性,可计算中位数和百分位数,可用条形图/饼图、茎叶图、箱线图进行可视化。

        - 定量数据:数值,衡量某样东西的数量。

                - 定距等级:对数值的加减计算,得到均值和标准差,可用条形图/饼图、茎叶图、箱线图、直方图。

                - 定比等级:对数值的乘除运算,得到倍数和比例,可用茎叶图、箱线图、直方图。


    3.特征增强:清洗数据

    - 识别数据中的缺失值:探索性数据分析:可视化+缺失值统计+描述性统计,常见缺失值填充:0、unknow、?

    - 处理数据集中的缺失值:

            - 删除有害的行:删除脏数据并不完全是特征工程,清洗方便,快速探索;

            - 填充缺失值:均值、中位数

                    - fillna/Imputer填充缺失值;

                    - 在机器学习流水中填充值。

    - 标准化和归一化:

            - z分数标准化:减去均值 / 标准差;

            - min-max标准化:减去最小值 / 减去最大值;

            - 行归一标准化:保证每行都为单位范数。(采用L2范数,保证每行所有值的平方和等于1)。


    4.特征构建:我能生成新特征吗

    - 填充分类特征:找出一列中最常见的值来填充。

    - 编码分类特征

            1. 定类等级的编码:将数据转化为虚拟变量:0或1;

            2. 定序等级的编码:根据顺序,映射序号0、1、2...;

            3. 将连续特征分箱:将数值数据转换为分类变量。

    - 扩展数值特征:将原有的列进行乘积,衍生多项式特征交互。

    - 针对文本特征的构建:

                - 词袋法:通过单词的出现来描述文档,重复度高的单词更重要;

                - 词袋法的3个步骤:分词 → 计数 → 归一化(将词项在大多数文档中的重要性按逆序排列);

                - CountVectorizer:将文本列转换为矩阵,列为词项,单元值为每个文档中词项的次数;

                - TF-IDF向量化器:对单词给出权重,来表示其重要性;

                    - TF:衡量词在文档中出现的频率,一般会对词频进行归一化;

                    - IDF:衡量词的重要性,减少常见词的权重,加大稀有词的权重。


    5.特征选择:对坏属性说不

    - 在特征工程中实现更好的性能:

        1. 分类任务的性能指标:真阳性率和假阳性率、灵敏度和特异性等;

        2. 回归任务的性能指标:平均绝对误差、R平方等;

        3. 和预测性不相关的其它性能:训练时长、预测新实例的时长、需要持久化的数据大小。

    - 特征选择的类型:

        - 基于统计的特征选择(单变量方法):

            1. 使用皮尔逊相关系数:与响应变量越相关,特征就越有用;

            2. 使用假设检验:p值越低,特征与响应变量有关联的概率越大。

        - 基于模型的特征选择:

            1. 基于树模型:拟合决策树并输出重要性;

            2. 线性模型和正则化:

                - L1正则化(lasso正则化):将不显著特征的系数降为0;

                - L2正则化(岭正则化):将不显著特征的系数变得非常小;

                - 线性模型:常用logistics模拟和线性SVC模型。

    - 选用正确特征的选择方法:

        - 分类特征:SelectKBest,用卡方或者基于树的选择器;

        - 定量特征:用线性模型和基于相关性的选择器效果更好;

        - 二元分类问题:SelectFromModel和SVC效果更好。


    6.特征转换:数学显神通

    - 维度压缩的区别:特征转换、特征选择与特征构建

        - 特征选择:仅限于从原始列中选择特征,降维原理是隔离信号列和忽略噪声列;

        - 特征转换:改变数据内部结构的算法,构建数学上更优的超级列,用更少的的列解释数据点;

        - 特征构建:用几个列之间的简单操作(加减乘除等)构造新的列,从中捕获有效的交互特征。

    - 主成分分析PCA:无监督任务,不需要响应变量进行投影/转换

        将多个相关特征的数据集投影到相关特征较少的坐标系上;

        新的、不相关的特征(超级列)叫做主成分,本质上所有主成分相互垂直,彼此线性无关;

        原理:利用协方差矩阵的特征值分解;

        过程:一般建议在缩放数据上使用协方差矩阵,如果特征的尺度类似,也可以使用相关矩阵。

            1. 创建数据集的协方差矩阵;

            2. 计算协方差矩阵的特征值;

            3. 保留前k个特征值(按特征值降序排列);

            4. 用保留的特征向量转换新的数据点。

            * scikit-learn的PCA会在预测阶段将数据中心化,所以和手动计算过程数据不一样。

    - 线性判别分析LDA:有监督任务,一般用作分类流水线的预处理步骤;

        LDA不会专注于数据方差,而是优化低维空间,以获得最佳的类别可分性;

        基于类别可分性的分类有助于避免机器学习流水线的过拟合,LDA也会降低计算成本;

        原理:计算类内和类间散布矩阵的特征值和特征向量;

        过程:判别式与数据的方差基本垂直,符合类别分离的情况

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

            2. 计算类内和类间的散布矩阵;

            3. 计算类内和类间矩阵的特征值和特征向量;

            4. 降序排列特征值,保留前k个特征向量;

            5. 使用前几个特征向量将数据投影到新空间。

    PCA与LDA:在流水线中会一同使用,局限是都为线性转换,只能创建线性的边界


    7.特征学习:以AI促AI

    - 数据的参数假设:算法对数据形状的基本假设,特征学习算法能去除算法假设,依赖于随机学习。

    - 特征提取

            - 特征转换:PCA、LDA,基于数据可以进行特征值分解,为线性变换;

            - 特征学习:绕过参数假设,使用复杂的算法,一般使用深度学习;

    - 受限玻尔兹曼机(RBM)无监督的特征学习算法,使用概率模型学习新特征,RBM提取的特征在线性模型中效果最佳。

            浅层(2层:可见层+隐藏层)的神经网络;

            可以学习比初始输入更少或更多的特征,要学习的特征数量取决于要解决的问题;

            限制:不允许任何层内通信,每个节点可以独立地创造权重和偏差。

    - 学习文本特征——词向量

            - CountVectorizer和TF-IDF中,文档只是单词的集合;而学习文本特征关注上下文的处理;

            - 词嵌入:帮助机器理解上下文的一种方法,单词n维特征空间中的向量化,n是单词潜在特征的数量;

                - 上下文随语料库的变化而不同,静态的词嵌入不一定是最有用的;

                - 词嵌入依赖于学习的语料库。

        - Word2vec:出自Google,通过深度学习进行学习;

        - GloVe:出自斯坦福大学,通过一系列矩阵统计进行学习。

    书本中的案例和python代码下载:

    特征工程入门与实践-图书-图灵社区

    相关文章

      网友评论

        本文标题:《特征工程入门与实践》学习笔记

        本文链接:https://www.haomeiwen.com/subject/ckgpyctx.html