zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

机器学习之特征工程(二)详解大数据

机器学习数据 详解 工程 特征
2023-06-13 09:20:26 时间

本节主要介绍数据和特征处理。

https://github.com/liuleigit/ML_tutorial

一 特征处理     (1)数值型
                 包括标准化和归一化,参看 http://blog.csdn.net/leiting_imecas/article/details/54986045
                 特征可能不能通过线性的方式缩放。例如特征符合指数分布,此时可以使用log变化可以将指数域变化到对数域
                 把连续的值分段,变成离散的值。例如数值在0-100,0-30表示为向量000,30-80表示为001,80-100表示为100.
                  1 .有时离散型变量更容易理解;   离散化后方便给不同数值段提供不同的权重
             1. one-hot encoding(dummy variabel, 哑变量)
                  NLP中常用。例如对于[体育,娱乐,财经]三个维度, he likes football、basketball and singing 就可以被映射为[2, 1,0]
                工业上作用非常重要。  时间型即可以看做连续型,也可以看做是离散型
                    可以看下 sklearn.feature_extraction.text   CountVectorizer
                   sklearn.feature_extraction.text   CountVectorizer传参ngram_range
                  参考http://blog.csdn.net/leiting_imecas/article/details/52127815
               1. 加减平均:商品价格高于平均价格多少;用户在某个商品类下消费超过平均用户多少;用户连续登录天数
                  举例a) user_id category:   10001 女裙, 10002 男士牛仔。  直接使用userid会使特征矩阵十分稀疏,所以经常先对user做聚类,再组合
              1.前者只踢掉原本特征里和结果预测关系不大的;后者(SVD或者PCA等)做特征的计算组合构成新特征
               1.过滤型 工业中偏Linear的模型可以使用,非linear的模型不常用
                  c)缺点:没有考虑特征之间的关联作用,可能把有用的关联信息误剔除。例如特征1和特征2单独作用小但组合起来作用大
                  d) python包:SelectKBest, SelectPercentile, GenericUnivariateSelect
 from sklearn.datasets import load_iris 

 from sklearn.feature_selection import SelectKBest 

 from sklearn.feature_selection import chi2 

 iris = load_iris() 

 X, y=iris.data, iris.target 

 X.shape 

(150, 4) 

 X_new = SelectKBest(chi2, k=2).fit_transform(X, y) 

 X_new.shape 

(150, 2)

              2.包裹型                 a)把特征选择看做一个特征子集搜索问题,筛选各种特征子集,用模型评估效果; 实验性的删除相关性低的特征                 b)典型的包裹型算法为 递归特征删除算法 recursive feature elimination algorithm                    举例,LR算法计算出各个特征的权重,删除5%权重低的特征,重新训练模型;如果删除后准确率或某个评估值依然达到要求,可以 对新模型再删除5%特征,依次进行,知道评估值低于要求                    sklearn.feature_selection.RFE   (recursive feature elimination)               3. 嵌入式 纬度超级大时常用。例如5亿纬度-》几千万纬度                  a)根据模型来分析特征的重要性                   b)最常用的方式是正则化方式做特征选择                  c)举例,最早的电商用LR做CTR预估,在3-5亿维的系数特征上用L1正则化的LR模型,生育2-3千万的feature, 意味着其他的feature重要度不高                  

 from sklearn.svm import LinearSVC #一般倾向于使用在线性模型 

 from sklearn.datasets import load_iris 

 from sklearn.feature_selection import SelectFromModel #借助模型选择 

 iris = load_iris() 

 X,y=iris.data, iris.target 

 X.shape 

(150, 4) 

 lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X,y) 

 model = SelectFromModel(lsvc, prefit=True) 

 X_new=model.transform(X) 

 X_new.shape 

(150, 3)