数据挖掘技术:从预处理到预测
什么是数据挖掘?
如果你在科学领域工作,你可能会花费50%以上的时间来分析各种形式的数据。然而,数据分析是一个庞大而复杂的领域,当涉及到对什么数据应用什么技术的问题时,很容易迷失方向。这就是数据挖掘的切入点——广义地说,数据挖掘是利用统计技术来发现数据集中的模式或关联。
每个人的数据都是不同的——它总是高度上下文化的,并且可以在不同实验的基础上有所不同。对于您的数据究竟需要什么,我们无法提供具体的技术建议——这个领域太广泛了!相反,我们在这里要做的是提供有关关键步骤的高级提示,以便最大限度地利用数据分析管道。
预处理
您可能会花费大量时间格式化和清理数据以供进一步分析。这通常被称为“数据争吵”(如果你想听起来很花哨,也可以称为“数据工程”)。尽管很费力,但这可能是任何数据分析管道中最必要的步骤。
确保你的数据质量高显然是一项足够困难的工作——2016年的一篇论文表明,五分之一的遗传学论文存在数据错误,这是由于微软Excel将基因名称自动格式化为日期造成的。即使是最简单的健康检查也很容易被忽视——一位在医疗数据库工作的朋友最近看到一张官方表格自豪地说,一个5岁的女孩身高180厘米——在开始分析之前,即使只是粗略地看一下原始数据,也可以为你以后省去很多麻烦。
数据预处理一般包括以下步骤:
•平滑噪声数据——生物记录可能非常嘈杂,因此经常需要过滤数据(脑电图或神经记录是噪声数据的好例子)。
•聚合你的数据——你的数据可能会被不同的记录设备同时收集,可能在不同的时间或空间分辨率,因此需要聚合到相同的表格或矩阵,可能有适当的子采样。
•输入缺失的值——花点时间对分析脚本中缺失的值或nan(“Not-a-Number”)执行适当的错误处理,可以节省进一步调试分析管道的时间。
•去除错误的数据点(令人震惊的是,6英尺高的孩子并不能构成特别可靠的数据集)。
了解你的数据
一旦您完成了所需的数据清理工作,采取步骤探索您正在使用的数据对于确定要执行的最合适的分析至关重要。我们可以将这种方法分为描述和预测两大类:
描述
数据探索
数据分析的一个大陷阱就是无法查看数据。然而,现实世界的实验通常会产生复杂的高维结果,当您的表格数据集有7维时,简单地查看原始值并不像看起来那么简单。
降维技术在这里很有用——它们允许您将高维、复杂的数据转换为低维空间(2D或3D),使它们在视觉上更直观。像PCA、t-SNE或Autoencoders这样的降维技术是开始探索数据的常用方法。
了解你的数据有多密集或稀疏,你的数据是否正态分布,以及你的数据如何协变,这些都是探索性分析期间要解决的问题,以便建立更好的预测模型。
聚类
K-means是聚类数据的首选技术,针对不同的应用程序有多种算法变体。这是一种无监督学习技术,通常用于没有预定义的类,并希望了解数据如何分组或是否分组的情况。
K-means很受欢迎,因为它可以在几个简单的步骤中运行:
•你选择“k”个组,这些组的中心是随机初始化的(通常值得先在2D图中检查数据,看看是否可以用肉眼识别任何明显的聚类)。
•对于存在的每个数据点,计算到每组中心的距离,并将距离最短的点归类到组中。
•一旦所有数据点被分组,每组的中心将被重新计算(通过取组中所有点的平均向量)。
•重复这些步骤,直到组中心不再改变,从而得到最终的组。为了保持一致性,运行几次K-means是很重要的。
分类
然而,通常情况下,您可能已经有了预定义的类,并希望看到您的实验数据适合其中的哪个类。K-nearest neighbors (KNN)是这里最常用的算法——它是一种监督学习技术,给定一个数据点,算法将输出该点的类成员关系。KNN还可以用于识别数据中的异常值。
(注意:KNN中的“K”与K-means中的“K”不同——这里的“K”指的是用于对新数据点进行分类的相邻数据点的数量,而不是组)。
在KNN中,计算每个测试数据点到所有邻居的距离,并按升序排列。取顶部的“k”距离,并使用该子集中最频繁的类来定义该数据点的类。对所有数据点重复此操作,直到所有数据点都被标记。
数据的最佳语言
数据可视化变得越来越重要,生成图表所需的工具也越来越重要。
•在许多科学和工程领域,MATLAB仍然主导着数据可视化,这是由于该程序的遗留性、集成性和相当大的社区。
•无论是在学术界还是工业界,Python的使用都在飞速增长。由于该语言的语法简单干净,开源性质,与许多其他现有语言、机器学习框架(Tensorflow/PyTorch/Scikit-Learn)和科学计算库(numpy, pandas)的兼容性,Python在过去几年里已经牢固地确立了自己作为数据科学和分析的首选语言的位置。Python的主要绘图库包括用于2D绘图的matplotlib和seaborn,以及用于基于浏览器的交互式可视化的bokeh。这些库可能有一个陡峭的学习曲线,但功能强大,并提供了很大的灵活性。
•以统计为中心的语言,如R及其绘图库,如'ggplot',也因其易于使用和美观的绘图设计而变得越来越广泛。
•值得注意的是,Python和R都允许在Jupyter notebook中编写代码,这是一种灵活且可扩展的格式,允许将文本和图形嵌入用于生成它们的代码中,以实现最终的可重复性。(相信我——这绝对是天赐之物,当你试图拼凑出六个月前你到底做了什么来生成这个数字时。
预测
所以,你的数据基本都算出来了。现在怎么办呢?你能利用你从探索性分析中获得的见解来做一些有用的事情,并做出预测吗?
回归
回归模型是一种更简单但功能更强大的分析方法,用于理解数据中的关系,并从中生成预测。最常见的类型之一是线性回归。线性回归模型,顾名思义,试图定义一组自变量(预测变量)和它们对应的因变量(目标变量)之间的线性关系(想象:“y=mx+c”来自学校)。这通常使用最小二乘法来完成,该方法试图拟合一条“最佳拟合线”,使每个点与直线本身垂直差的平方和最小化。这种拟合措施的成功被报道为“r平方”值(也称为“决定系数”)。一般来说,线性回归模型用于预测和建模具有连续变量的时间序列。
另一方面,逻辑回归用于因变量为二进制(True/False, Yes/No)时,例如在分类问题中。重要的是,即使模型中的因变量和自变量没有线性关系,也可以使用逻辑回归。
(注意:如果你的数据不能很好地拟合一条线,你也可以尝试多项式回归,它可以将曲线拟合到你的数据。只是要注意过度拟合-你不希望模型太接近你的数据点拟合曲线!)
在构建模型时,记住交叉验证也很重要——也就是说,将数据分离为训练集和测试集。交叉验证意味着用一部分数据训练你的模型,然后通过比较“测试”数据上的预测与实际值来测试模型的工作情况,从而衡量你的模型的预测能力。通过这种方式,交叉验证也有助于减少过拟合。
总结
虽然这篇简短的指南只涵盖了可以应用于数据的一小部分技术,但希望能给您一些关于数据管道的思考。请记住,您的数据是独一无二的——花点时间深入研究,您将获得回报!