百面机器学习读书笔记

特征工程

将原始数据提炼出特征,提炼的结果作为算法和模型的输入使用。

对数值类型特征做归一化:

   
   是什么:
      把所有数据特征统一到一个大致相同的数值区间,消除数据特征之间的量纲影响,使得不同特征之间具有可比性
   
   常用方法:
      线性函数归一化 (Min-Max Scaling),进行线性变换,结果映射到[0,1]的分布上。
      零均值归一化(Z-Score Normalization),映射到均值为0、标准差为1的分布上。
   
   好处:
       有利于提升随机梯度下降计算速度。
       
       可以用等值图帮助理解,图形由椭圆形变为圆形后,x1 x2的更新速度变得更为一致,容易更快
       通过梯度下降找到最优解。
   
   使用场景:
        线性回归,逻辑回归,支持向量机,神经网络。
    
   不适用场景:
        决策树(依据特征增益比,跟是否归一化无关)

对类别型特征的处理

   是什么:
      类别特征值通常是字符串类型,很多算法中要转换成数值特征才能进行计算工作。
   
   编码如何使用在模型中:
      此处需要确认,例如某个类别特征比如 00100 独热编码以什么格式使用到算法中呢。
   
   三种编码方式:
      序号编码:通常用于处理类别间具有大小关系的数据。
      
      独热编码:用于处理类别间不具有大小关系的特征。
        
        类别取值较多的情况下需要注意:
            1、使用稀疏向量以节省空间,
            
            2、尽可能降低特征的维度(此处需要确认维度的含义,是降低特征个数还是降低某个特征下的取值个数)
                
                高维度会带来以下问题:
                    K近邻算法两点之间的距离难以衡量
                    
                    逻辑回归中,参数数量增大,常引起过拟合。
                    
                    过多的维度并没有对分类和预测有帮助

     二进制编码:本质上是利用二进制对ID进行hash映射
         
         步骤:先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。
         
         与独热编码相比:二进制编码存储空间少于独热编码

高维组合特征的处理

    
    是什么:
        为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。
        
        此处会用原来一阶特征的特征值组合起来当做特征项来使用。
    
    为什么可以提高拟合能力?
        此处需要确认提高的原因
    
    组合特征量级比较大的时候怎么办
        特征可以分为两类,有限的类别特征和大量的ID类型的特征。
        
        可以用降维的方式表示(此处需要确认如何降维),将用户和物品分别用k维的低维向量表示。
    
    组合带来的问题
        如果简单地两两组合,依然容易存在参数过多、过拟合等问题,而且并不是所有的特征组合都是有意义的。

    如何有效找到组合特征
        梯度提升决策树:方法的思想是每次都在之前构建的决策树的残差上构建下一棵决策树。
        此处需要确认梯度提升决策树使用

文本表示模型

    词袋模型:
        将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,
        向量中的每一维代表一个单词,而该维对应的权重则反映了这个词在原文章中的重要程度。
        
        单词权重计算公式:
            TFIDF(t,d)=TF(t,d)×IDF(t)。
            TF(t,d)为单词t在文档d中出现的频率,IDF(t)是逆文档频率。

            某个单词在所有文档中出现越多,该单词对应的TDF值越小。
            TDF公式=lg (总文件数量/单词出现的文件数量)
    
    Ngram模型:
        引入:将文章进行单词级别的划分有时候并不是一种好的做法,往往会忽略连续的词语。
        
        相同含义单词的词干抽取。
        
    主题模型:
        主题模型用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特性)
    
    词嵌入模型:
        词嵌入是一类将词向量化的模型的统称,
        核心思想是将每个词都映射成低维空间(通常K=50~300维)上的一个稠密向量(DenseVector)。
        
        与主题模型相比,主题模型有隐含的主题,K维空间有每一维。
        
        
        深度学习为什么比机器学习在文本表示方面更好?
            深度学习模型为我们提供了一种自动地进行特征工程的方式。
            
            模型中的每个隐层都可以认为对应着不同抽象层次的特征。
            
            卷积神经网络、循环神经网络为什么比全连接网络结构在文本表示方面做得更好?
                一方面很好地抓住了文本的特性,
                另一方面又减少了网络中待学习的参数,提高了训练速度,并且降低了过拟合的风险。
                此处需要确认卷积循环神经网络的原理

Word2Vec

    word2vec属于词嵌入模型:
        谷歌2013年提出的Word2Vec是目前最常用的词嵌入模型之一。
    
    CBOW 与 Skip-gram:
        
        神经网络表示:
            CBOW和Skipgram都可以表示成由输入层(Input)、映射层(Projection)
            和输出层(Output)组成的神经网络。
        
            输入层:
                使用独热编码表示,是N维输入向量。

            权重矩阵1:
                输入层与隐含层之间是N x K维的权重矩阵

            映射层(又称隐含层):
                取值可以由由N维输入向量以及权重矩阵1计算得到。

            权重矩阵2:
                连接隐含层和输出层之间的K×N维权重矩阵    


            输出层向量:
                输出层向量(N维向量)的值可以通过隐含层向量(K维)以及权重矩阵2计算得到。

            Softmax激活函数:    
                对输出层向量应用Softmax激活函数,可以计算出每个单词的生成概率。
            
            训练神经网络的权重:
                训练的目标是使得语料库中所有单词的整体生成概率最大化。
                
                权重矩阵有两个(权重矩阵1和权重矩阵2),学习这两个权重可以用反向传播算法实现。
                
           
        CBOW(Continues Bag of Words):
            CBOW的目标是根据上下文出现的词语来预测当前词的生成概率。

        Skip-gram: 
            Skip-gram是根据当前词来预测上下文中各词的生成概率.
            
    Word2Vec与LDA的区别和联系:
        | 11 | 22 |
        |  ----  |  ----  |
        | 神经网络 | 概率模型生成 |

    

            
            
            
            


        
        
        
    
            
         

你可能感兴趣的