数据挖掘之数据预处理和特征工程

数据挖掘之数据预处理和特征⼯程
天⽓晴  ⼩马真的是怕冷星⼈ 天天都是在冷冷冷中度过 哈哈哈
周六周⽇休息了两天 学习了线代 这两天忙于新学期选课 从今天下午开始 ⼜要努⼒这周的项⽬任务啦
今⽇⽬标:
1. m a tla b实现数据预处理和特征⼯程
2. 对matlab中的SVM算法代码进⾏了解
/*
本⽂重点讲解:数据归⼀化、数据标准化、特征⼯程中的特征选择
其中⽤Matlab代码实现了归⼀化、标准化、PCA降维算法(使⽤⾃带的pca函数)
*/
数据挖掘五⼤流程:
1.获取数据
2.数据预处理
数据预处理是从数据中检测,纠正或删除损坏,不准确或不适⽤于模型的记录的过程
可能⾯对的问题有:数据类型不同,⽐如有的是⽂字,有的是数字,有的含时间序列,有的连续,有的间断。也可能,数据的质量不⾏,有噪声,有异常,有缺失,数据出错,量纲不⼀,有重复,数据是偏态,数据量太⼤或太⼩
数据预处理的⽬的:让数据适应模型,匹配模型的需求
3.特征⼯程
特征⼯程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。其中创造特征⼜经常以降维算法的⽅式实现。可能⾯对的问题有:特征之间有相关性,特征和标签⽆关,特征太多或太⼩,或者⼲脆就⽆法表现出应有的数据现象或⽆法展⽰数据的真实⾯貌。
特征⼯程的⽬的:1) 降低计算成本,2) 提升模型上限
4. 建模,测试模型并预测出结果
5.上线,验证模型效果
数据预处理 Preprocessing & Impute
数据⽆量纲化
在机器学习算法实践中,我们往往有着将不同规格的数据转换到同⼀规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为
将数据“⽆量纲化”
中⼼化(Zero-centered或者Mean-数据“⽆量纲化”。数据的⽆量纲化可以是线性的,也可以是⾮线性的。线性的⽆量纲化包括中⼼化(Zero-centered或者Mean-subtraction)处理和缩放处理(Scale)。中⼼化的本质是让所有记录减去⼀个固定值,即让数据样本数据平移到某个位置。缩放的本质是subtraction)处理和缩放处理(Scale)。
通过除以⼀个固定值,将数据固定在某个范围之中,取对数也算是⼀种缩放处理。
(1)数据归⼀化(Normalization,⼜称Min-Max Scaling)
当数据(x)按照最⼩值中⼼化后,再按极差(最⼤值 - 最⼩值)缩放,数据移动了最⼩值个单位,并且会被收敛到[0,1]之间,⽽这个过程,就叫做数据归⼀化(Normalization,⼜称Min-Max Scaling)。注意,Normalization是归⼀化,不是正则化,真正的正则化是regularization,不是数据预处理的⼀种⼿段。
数据归⼀化公式
Matlab实现代码:
%导⼊数据集和导⼊数据两种
%(1)导⼊数据集
load wine_SVM;  %wine表⽰数据集
[m,n]  = size(wine);高斯扩散模型
normal = zeros(m,n);
for i = 1:m
ma = max( wine(i,:) );          %求数据集的最⼤值
mi = min( wine(i,:) );            %求数据集的最⼩值
normal(i,:) = ( wine(i,:)-mi )./( ma-mi );            %对数据集进⾏归⼀化
连战祖籍
end
wine_normal = normal;
%(2)导⼊数据
A = [-1,2; -0.5,6; 0,10; 1,18] %导⼊数据
%数据归⼀化代码
A_nor = (A - min(A)) ./ (max(A)-min(A))
Matlab点除符号的使⽤
点除符号和除号的使⽤区别
matlab 矩阵中每⾏或每列的最⼤值和最⼩值
已知矩阵a:
1、矩阵a每列的最⼤值
[max_a,index]=max(a);
或者[max_a,index]=max(a,[],1);
其中max_a是最⼤的数值,index是最⼤的数值所处的位置。【最⼩值由min替换max即可】
2、矩阵a每⾏的最⼤值
[max_a,index]=max(a,[],2);
其中max_a是最⼤的数值,index是最⼤的数值所处的位置。【最⼩值由min替换max即可】
【注意,有时需要除0以外的最⼩值,可以将矩阵中的0值置为NaN:  a(find(a==0))=NaN;
将NaN重新置为0:a(find(isnan(a)==1))=0;】
(2)数据标准化(StandardScaler):把数据变成标准正态分布
均值为0,⽅差为1的正态分布(即标准正态分布),⽽这个过        当数据(x)按均值(μ)中⼼化后,再按标准差(σ)缩放,数据就会服从为均值为0,⽅差为1的正态分布
程,就叫做数据标准化(Standardization,⼜称Z-score normalization)。
数据标准化公式
Matlab实现代码:
%导⼊数据集和导⼊数据两种
%(1)导⼊数据集
load wine_SVM;  %wine表⽰数据集
[m,n]  = size(wine);
normal = zeros(m,n);
for i = 1:m
铁布衫
mea = mean( wine(i,:) );          %求数据集的均值
va = var( wine(i,:) );          %求数据集的⽅差
前卫体协
normal(i,:) = ( wine(i,:)-mea )/va;        %对数据集进⾏标准化
end
angolawine_normal = normal;
%(2)导⼊数据
A = [-1,2; -0.5,6; 0,10; 1,18]; %导⼊数据
%数据标准化代码
A_nor = (A - mean(A)) ./ var(A)
(3)StandardScaler 和 MinMaxScaler选哪个?
看情况。⼤多数机器学习算法中,会选择StandardScaler来进⾏特征缩放,因为MinMaxScaler对异常值⾮常敏感。在PCA,聚类,逻辑回归,⽀持向量机,神经⽹络这些算法中,StandardScaler往往是最好的选择。
MinMaxScaler在不涉及距离度量、梯度、协⽅差计算以及数据需要被压缩到特定区间时使⽤⼴泛,⽐
如数字图像处理中量化像素强度时,都会使⽤MinMaxScaler将数据压缩于[0,1]区间之中。
建议先试试看StandardScaler,效果不好换MinMaxScaler。
特征⼯程(Feature Engineering)
特征提取(feature extraction):从⽂字,图像,声⾳等其他⾮结构化数据中提取新信息作为特征。⽐如说,从淘宝宝贝的名称中提取出产品特征提取(feature extraction):
类别,产品颜⾊,是否是⽹红产品等等。
特征创造(feature creation):
特征创造(feature creation):把现有特征进⾏组合,或互相计算,得到新的特征。⽐如说,我们有⼀列特征是速度,⼀列特征是距离,我们就可以通过让两列相处,创造新的特征:通过距离所花的时间。
特征选择(feature selection):从所有的特征中,选择出有意义,对模型有帮助的特征,以避免必须将所有特征都导⼊模型去训练的情况。
特征选择(feature selection):
今天重点学习特征选择
我们有四种⽅法可以⽤来选择特征:过滤法,嵌⼊法,包装法,和降维算法。
(1)过滤法( Filter)
1)⽅差过滤:这是通过特征本⾝的⽅差来筛选特征的类。⽐如⼀个特征本⾝的⽅差很⼩,就表⽰样本在这个特征上基本没有差异,可能特征中的
⽆论接下来的特征⼯程要做什么,都要优先消除⼤多数值都⼀样,甚⾄整个特征的取值都相同,那这个特征对于样本区分没有什么作⽤。所以⽆论接下来的特征⼯程要做什么,都要优先消除⽅差为0的特征。
在现实中,我们只会使⽤阈值为0或者阈值很⼩的⽅差过滤,来为我们优先消除⼀些明显⽤不到的特征,然后我们会选择更优的特征选择⽅法继续削减特征数量。
降低计算成本。
需要遍历特征或升维的算法们,⽽过滤法的主要⽬的是:在维持算法表现的前提下,帮助算法们降低计算成本
过滤法的主要对象是:需要遍历特征或升维的算法
2)相关性过滤<;卡⽅(分类问题)、F检验(分类和回归)、互信息>:我们希望选出与标签相关且有意义的特征,因为这样的特征能够为我们提供⼤量信息。如果特征与标签⽆关,那只会⽩⽩浪费我们的计算内存,可能还会给模型带来噪⾳。我们的⽬的是要删除与标签⽆关的特征,保留与标签相关且有意义的特征。
分类问题)的相关性过滤。卡⽅检验计算每个⾮负特征和标签之间的卡⽅统计量,并依照卡⽅统计量由⾼到卡⽅过滤是专门针对离散型标签(即分类问题
卡⽅过滤陈力生
低为特征排名,我们可以借此除去最可能独⽴于标签,与我们分类⽬的⽆关的特征。
F检验,⼜称ANOVA,⽅差齐性检验,是⽤来捕捉每个特征与标签之间的线性关系的过滤⽅法。它即可以做回归也可以做分类,其中F检验分F检验,⼜称ANOVA,⽅差齐性检验
类⽤于标签是离散型变量的数据,⽽F检验回归⽤于标签是连续型变量的数据。
(包括线性和⾮线性关系)的过滤⽅法。和F检验相似,它既可以做回归也可以做分类。不互信息法
互信息法是⽤来捕捉每个特征与标签之间的任意关系(包括线性和⾮线性关系)
过互信息法⽐F检验更加强⼤,F检验只能够出线性关系,⽽互信息法可以出任意关系。它返回“每个特征与⽬标之间的互信息量的估计”,这个估计量在[0,1]之间取值,为0则表⽰两个变量独⽴,为1则表⽰两个变量完全相关。
3)通常来说,先使⽤⽅差过滤,然后使⽤互信息法来捕捉相关性。
(2)嵌⼊法(Embedded)
优点: 嵌⼊法是⼀种让算法⾃⼰决定使⽤哪些特征的⽅法,即特征选择和算法训练同时进⾏。在使⽤嵌⼊法时,我们先使⽤某些机器学习的算法和模型进⾏训练,得到各个特征的权值系数,根据权值系数从⼤到⼩选择特征。这些权值系数往往代表了特征对于模型的某种贡献或某种重要性,⽐如决策树和树的集成模型中的feature_importances_属性,可以列出各个特征对树的建⽴的贡献,我们就可以基于这种贡献的评估,出对模型建⽴最有⽤的特征。因此相⽐于过滤法,嵌⼊法的结果会更加精确到模型的效⽤本⾝,对于提⾼模型效⼒有更好的效果。并且,由于考虑特征对模型的贡献,因此⽆关的特征(需要相关性过滤的特征)和⽆区分度的特征(需要⽅差过滤的特征)都会因为缺乏对模型的贡献⽽被删除掉,可谓是过滤法的进化版。
缺点: 过滤法中使⽤的统计量可以使⽤统计知识和常识来查范围(如p值应当低于显著性⽔平0.05),⽽嵌⼊法中使⽤的权值系数却没有这样的范围可——我们可以说,权值系数为0的特征对模型丝毫没有作⽤,但当⼤量特征都对模型有贡献且贡献不⼀时,我们就很难去界定⼀个有效的临界值。这种情况下,模型权值系数就是我们的超参数,我们或许需要学习曲线,或者根据模型本⾝的某些性质去判断这个超参数的最佳值究竟应该是多少。
(3)包装法(Wrapper)
包装法也是⼀个特征选择和算法训练同时进⾏的⽅法,与嵌⼊法⼗分相似,它也是依赖于算法⾃⾝的选择,⽐如coef_属性或
feature_importances_属性来完成特征选择。但不同的是,我们往往使⽤⼀个⽬标函数作为⿊盒来帮助我们选取特征,⽽不是⾃⼰输⼊某个评估指标或统计量的阈值。包装法在初始特征集上训练评估器,并且通过coef_属性或通过feature_importances_属性获得每个特征的重要性。然后,从当前的⼀组特征中修剪最不重要的特征。在修剪的集合上递归地重复该过程,直到最终到达所需数量的要选择的特征。区别于过滤法和嵌⼊法的⼀次训练解决所有问题,包装法要使⽤特征⼦集进⾏多次训练,因此它所需要的计算成本是最⾼的。
(4)降维算法
什么是维度?
对于数组和Series来说,维度就是功能shape返回的结果,shape中返回了⼏个数字,就是⼏维。索引以外的数对于数组和Series来说,维度就是功能shape返回的结果,shape中返回了⼏个数字,就是⼏维。

本文发布于:2024-09-22 15:39:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/68597.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:特征   数据   模型   算法   标签   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议