数据分析总结
作者:互联网
引用:
数据分析——缺失值处理详解(理论篇) - 知乎 (zhihu.com)
了解数据
认识数据,知道数据的规模,取值情况,类型等
(92条消息) 机器学习数据分析方法CtrlZ1的博客-CSDN博客机器学习数据分析
数据预处理:
为什么要进行数据预处理:
原始数据普遍存在问题,通常为脏数据,必须加以处理才能用于分析,一方面要提高数据质量,另一方面为了更好的使数据适应特定的数据挖掘技术及工具。
-
数据缺失 (Incomplete) :属性值为空。
-
数据噪声 (Noisy):数据值不合常理。如 Salary = “-100”
-
数据不一致 (Inconsistent):数据前后存在矛盾。如 Age = “42” 和 Birthday = “01/09/1985”
-
数据冗余 (Redundant):数据量或者属性数目超出数据分析需要。
-
数据集不均衡 (Imbalance):各个类别的数据量相差悬殊。
-
离群点/异常值 (Outliers):远离数据集中其余部分的数据。
-
数据重复(Duplicate): 在数据集中出现多次的数据。
数据进行预处理的主要步骤:
数据清洗
对缺失数据、离群点和重复数据进行处理。
去除唯一属性
唯一属性通常是一些id属性,这些属性并不能刻画样本自身的分布规律,所以简单地删除这些属性即可。
处理缺失值
-
缺失数据的类型:
-
随机缺失:
随机丢失意味着数据丢失的概率与丢失的数据本身无关,而仅与部分已观测到的数据有关。也就是说,数据的缺失不是完全随机的,该类数据的缺失依赖于其他完全变量。
-
完全随机缺失:
数据的缺失是完全随机的,不依赖于任何不完全变量或完全变量,不影响样本的无偏性。简单来说,就是数据丢失的概率与其假设值以及其他变量值都完全无关。比如门店的计数器因为断电断网等原因在某个时段数据为空
-
非随机缺失
数据的缺失与不完全变量自身的取值有关。分为两种情况:
-
缺失值取决于自身的假设值(例如,高收入人群通常不希望在调查中透露他们的收入);
-
数据是否缺失取决于另外一个属性(假设女性通常不想透露她们的年龄,则这里年龄变量缺失值受性别变量的影响)
-
在前两种情况下可以根据其出现情况删除缺失值的数据,同时,随机缺失可以通过已知变量对缺失值进行估计。
在第三种情况下,删除包含缺失值的数据可能会导致模型出现偏差,同时,对数据进行填充也需要格外谨慎。
-
-
缺失值处理的三种方法:
-
不处理:
直接使用含有缺失值的特征
存在不处理缺失值,直接在包含空值的数据上进行数据挖掘的方法。如:贝叶斯网络和人工神经网络等
-
删除
-
删除含有缺失值的特征(列):特征的缺失率较高(大于80%),覆盖率较低,且重要性较低,可以直接将特征删除
-
删除含有缺失值的样本(行):对象有多个属性缺失值、被删除的含缺失值的对象与初始数据集的数据量相比较小
-
-
插补
-
人工填写:
当你对自己手头的数据集足够了解时,根据领域知识来补数据,可以选择自己填写缺失值。然而一般来说,该方法很费时,当数据规模很大、空值很多的时候,该方法是不可行的。一般不推荐。
-
特殊值填充
将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。一般作为临时填充或中间过程。有时可能导致严重的数据偏离,一般不推荐。
-
统计量填充
若缺失率较低(小于95%)且重要性较低,则根据数据分布的情况用基本统计量填充:最大值、最小值、均值、中位数、众数(非数值和数值型变量都一样)
-
热卡填充(就近补齐)
对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。
-
K最近距离邻法(KNN)
先根据某种距离度量选择出k个“邻居”,他们的均值就被用于插补缺失数据。这个方法要求我们选择k的值(最近邻居的数量),以及距离度量。KNN既可以预测离散属性(k近邻中最常见的值)也可以预测连续属性(k近邻的均值)。 根据数据类型的不同,距离度量也不尽相同:
-
连续数据:最常用的距离度量有欧氏距离,曼哈顿距离以及余弦距离。
-
分类数据:汉明(Hamming)距离在这种情况比较常用。对于所有分类属性的取值,如果两个数据点的值不同,则距离加一。汉明距离实际上与属性间不同取值的数量一致。
KNN算法最吸引人的特点之一在于,它易于理解也易于实现。其非参数的特性在某些数据非常“不寻常”的情况下非常有优势。 KNN算法的一个明显缺点是,在分析大型数据集时会变得非常耗时,因为它会在整个数据集中搜索相似数据点。此外,在高维数据集中,最近与最远邻居之间的差别非常小,因此KNN的准确性会降低。
-
-
回归
基于完整的数据集,建立回归方程,或利用机器学习中的回归算法。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关时会导致有偏差的估计。较常用。
-
多重插补(没太搞懂暂时)
多重填补方法分为三个步骤:
(1)插补:将不完整数据集缺失的观测行估算填充m次。请注意,填充值是从某种分布中提取的。模拟随机抽取并不包含模型参数的不确定性。更好的方法是采用马尔科夫链蒙特卡洛模拟(MCMC,Markov Chain Monte Carlo Simulation)。这一步骤将生成m个完整的数据集。 (2)分析:分别对(m个)每一个完整数据集进行分析。 (3)合并:对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。
-
-
离群点处理(待补)
噪声处理(待补)
数据清洗阶段结束后,得到没有错误的数据集
数据集成
将多个数据源中的数据结合成、存放在一个一致的数据存储,如数据仓库中。这些源可能包括多个数据库、数据方或一般文件。
数据规约(待补)
数据归约技术可以用来得到数据集的归约表示,它小得多,但仍接近地保持原数据的完整性。 这样,在归约后的数据集上挖掘将更有效,并产生相同(或几乎相同)的分析结果。
数据转化:
在了解数据转化之前,要对数据的类型有一个了解:
1. 数据类型:
-
数值型:
-
连续型:连续数据,指任意两个数据点之间可以细分出无限多个数值。如身高,体重,温度等(体重可以分出60,60.1,60.223等无限个数值)
-
离散型:不连续数据,这类数据在任何两个数据点之间的个数是有限的。如人数等。
-
-
非数值型:
-
类别型
-
定序型:存在排序问题。如成绩{低,中,高}
-
定类型:不存在排序问题(类别固定)。如颜色{红,黄,蓝},性别{男,女}
-
-
非类别型(字符串型):如地名:四川大学,成华大道等
-
2.类别转化:
对于非数值型,需要进行类别转换,即将非数值型转换为数值型,以方便机器学习算法后续处理。
-
定序型:可以使用序号编码(标签化),python label_encoding
如成绩,分为Average, Good, Best三档,序号编码可以按照大小关系对定序型特征赋予一个数值ID,例如Average表示为1,Good表示为2,Best表示为3,转换后依旧保留了大小关系。
-
定类型:可以使用
-
独热编码:(特征工程方面另看文章)
当所使用的算法基于空间向量时,需要进一步对特征进行oneHot编码,需要注意避免维度爆炸,当维度较大时应考虑采用降维方法,如PCA
Pandas 的 get_dummies
Sklearn 的 DictVectorizer
Sklearn 的 LabelEncoder+OneHotEncoder如颜色三原色,为Red, Green, Blue,独热编码可以把三原色变为一个三维稀疏向量,Red表示为(0,0,1),Green表示为(0,1,0),Blue表示为(1,0,0)。需要注意的是,在类别值较多的情况下,可以使用稀疏向量来节省空间,目前大部分算法实现均接受稀疏向量形式的输入。当然还有很多别的编码方式,如二进制编码等。
-
multi_one_hot:
当需要对特征进行多维编码时,可采用Multiple编码
对于某个属性对应的分类特征,可能该特征下有多个取值,比如一个特征表示对哪些物品感兴趣,那么这个特征不是单个值,而是有多个取值,样本1 在该属性下取值有1,2两种特征, 样本2 在该属性下有2一种特征, 样本3 在该属性下有3,4 两种特征,如果以类似one-hot编码的形式来定义特征应为样本1 [1,1,0,0] 样本2 [0,1,0,0], 样本3 [0,0,1,1]
-
-
字符串型,有多种表示方式,如词袋模型(Bag of Words),TF-IDF(Term Frequency-Inverse),主题模型(Topic Model),词嵌入模型(Word Embedding)
类别转化完成之后,所有的数据均转为了数值型。接下来要进行数据的标准化、正则化处理等
3.数据标准化,正则化
数据标准化:
数据标准化是将样本的属性缩放到某个指定的范围。
数据标准化的原因:
-
某些算法要求样本具有零均值和单位方差;
-
需要消除样本不同属性具有不同量级时的影响:①数量级的差异将导致量级较大的属性占据主导地位;②数量级的差异将导致迭代收敛速度减慢;③依赖于样本距离的算法对于数据的数量级非常敏感
常见的数据标准化方法:
-
归一化(min-max标准化):
为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使不同指标之间具有可比性。对于每个属性,设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的值x',其公式为:新数据=(原数据 - 最小值)/(最大值 - 最小值)
例如,分析一个人的身高和体重对健康的影响,如果使用米(m)和千克(kg)作为单位,身高在1.6-1.8m的数值范围内,体重特征在50-100kg的数值范围内,分析出来的结果会倾向于数值差别较大的体重特征。对数值型特征进行归一化可以将所有特征都统一到一个大致相同的区间内,以便进行分析。
当然,不是所有的机器学习算法需要对数值进行归一化,在实际应用中,通过梯度下降法求解的模型通常需要归一化,因为经过归一化后,梯度在不同特征上更新速度趋于一致,可以加快模型收敛速度。而决策树模型并不需要,以C4.5为例,决策树在节点分裂时主要依据数据集D关于特征x的信息增益比,而信息增益比跟特征是否经过归一化是无关的。
-
z-score标准化(规范化):
基于原始数据的均值(mean)和标准差(standarddeviation)进行数据的标准化。将A的原始值x使用z-score标准化到x'。z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。新数据=(原数据- 均值)/ 标准差
标签:数据分析,总结,特征,样本,数值,数据,缺失,属性 来源: https://www.cnblogs.com/VVblogs/p/16172321.html