机器学习之特征工程(二)详解大数据
2023-06-13 09:20:26 时间
本节主要介绍数据和特征处理。
https://github.com/liuleigit/ML_tutorial
包括标准化和归一化,参看 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)
相关文章
- 快速入门Python机器学习(十)
- Tablesaw——Java统计、机器学习库
- R语言机器学习之Task对象可视化(mlr3包系列)
- 机器学习基础:缺失值的处理技巧(附Python代码)
- 机器学习_knn算法_2
- [NC | 论文简读] devCellPy是一个机器学习支持的管道,用于自动注释复杂的多层单细胞转录组数据
- PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享|附代码数据
- Neuron综述:机器学习在大数据影像研究临床转化中的挑战
- 机器学习算法:随机森林
- 10大机器学习算法,Python与R代码比较
- 机器学习数据自动化分析神器-dataprep
- machine learning使用机器学习深度挖掘Neo4j(neo4jwith)
- 一文看懂机器学习与大数据风控 | 雷锋网公开课
- 机器学习问答数据集:这是保险领域首个开放的QA语料库
- 一个框架解决几乎所有机器学习问题
- 你在数据预处理上花费的时间,是否比机器学习还要多?