探求性数据分析(Exploratory Data Analysis,EDA)是一种数据分析方法,旨在通过作图、制表、拟合方程和计算特征量等方式,在尽量少的假设前提下探索数据的结构和规律。
数据科学库 - Pandas:用于数据分组、筛选和整合,支持时间序列分析。 - Numpy:处理大型多维数组和矩阵。 - Scipy:处理线性代数、概率论、积分计算等任务。
数据可视化库 - Matplotlib:创建各类图表,如直方图、散点图等。 - Seaborn:提供丰富的可视化选项,包括时间序列图、联合图和小提琴图等。
数据初步观察
- 使用 head()
查看数据准确性,通常查看前五行数据。
- 使用 shape
获取数据集的维度。
数据概览
- describe()
提供统计数据,包括计数、平均值、方差、最小值、中位数和最大值等。
- info()
了解每列的数据类型,检查是否存在特殊符号或异常值。
缺失值检查
- 使用 isnull()
查看每列的缺失情况。
- 利用 sort_values()
对数据集进行排序,以便查看缺失值和异常值。
异常值检查 - 应用3σ原则:假设数据仅含随机误差,计算标准差并确定异常值区间。 - 利用箱线图:根据实际数据绘制,直观展示数据分布情况,无需数据满足正态分布假设。
总体分布概况 - 许多模型假设数据符合正态分布。当数据不符合正态分布时,可以进行如下转换: - Z-Score标准化:基于原始数据的均值和标准差进行标准化。 - Box-Cox变换:适用于连续响应变量不符合正态分布的情况。 - Yeo-Johnson变换:通过构建一组单调函数对随机变量进行转换。
评估偏度和峰度 - 偏度衡量数据分布的不对称性。 - 峰度研究数据分布的尖锐程度。
当某范围内的预测值较少时,可将其视为异常值处理或删除。若频数正常,则需对数据进行处理,如进行对数变换,使数据分布更加均匀。
数字特征 - 相关性分析:评估变量间的相关性。 - 特征的偏度和峰度可以通过可视化展示。
类别特征
- 使用 unique()
函数去除重复元素。
- 箱型图和小提琴图可用于直观识别数据中的离群点。
- 条形图可用于展示类别特征的频数。
数据和特征决定了机器学习的下限,而模型和算法只是逼近这个下限。数据清洗是特征工程前必不可少的步骤。
数据清洗的主要目标是将脏数据转化为高质量数据,包括处理缺失值、异常值、数据分桶和特征归一化/标准化等。
数据分桶可以加速计算、增强模型的鲁棒性。常见的分桶方法包括等频分桶、等距分桶、Best-KS分桶和卡方分桶。
数据转换包括归一化、标准化、对数变换、数据类型转换、独热编码和标签编码等。
特征工程是指将原始数据转换为适合模型训练的特征,目的是提升模型性能。
特征构造 - 数值特征:尝试加减组合或提取统计特征。 - 类别特征:尝试交叉组合或使用嵌入方法。 - 时间特征:挖掘时间信息,提高模型性能。
特征选择 - 特征是否发散:方差接近0的特征应被剔除。 - 特征与目标的相关性:高相关性特征优先选择。
降维 - PCA降维:减少特征数量,保持原有数据信息。
模型调参是决定最终结果的关键步骤。常见的调参方法包括贪心调参、网格调参和贝叶斯调参。
回归分析 - 回归分析用于理解变量间的相关性,并建立数学模型。
长尾分布 - 长尾分布可能导致采样和估值不准确,需要特别注意。
欠拟合与过拟合 - 欠拟合:模型在训练集和验证集上表现均不佳。 - 过拟合:模型在训练集上表现良好但在测试集上表现不佳。
正则化 - L1正则化和L2正则化用于防止过拟合。
调参方法 - 贪心调参:动态选择影响最大的参数。 - 网格调参:在指定范围内自动调参。 - 贝叶斯调参:利用概率模型优化超参数。
通过融合多个模型可以提升机器学习性能。模型融合方法包括简单加权融合、堆叠法和Boosting/Bagging等。
简单加权融合 - 回归:使用算术平均或几何平均。 - 分类:使用投票法。
堆叠法(Stacking) - 基于初始模型的预测结果,构建新的模型。
混合法(Blending) - 采用类似Stacking的方法,但只使用一部分训练集。
Bagging - 基于自助采样法,多个模型并行训练,最终结果基于多个模型的预测结果。
Boosting - 串行训练,后续模型纠正前序模型的错误,最终加权结合。