数据挖掘就是寻找数据中隐含的知识并用于生产产业价值。我们在数据中(尤其在大量的数据中)找到一些价值。
##数挖掘有什么用处?
数据挖掘是一种方法,就用它去解决一些问题,比较常见的问题有
分类问题就是判断一个事物是否符合相关的标准,如判断一条新闻是社会新闻还是时政新闻,就是对已知类别的数据进行学习,为新的内容注明一个类别。
聚类与分类不同,聚类的类别预先是不清楚的。聚类就是要去发现这些类别,适合一些不确定的类别场景。
简单来说,回归问题可以看作解线性方程,最大的特点就是生成的结果是连续的,而分类和聚类的结果是分散的。
通过使用回归的方法构建一个模型拟合已知的数据,然后测量因变量的结果。
python的标准库是其核心的扩展,有两个能帮助学习的常用包的方法:
第三方库
名称 | 含义 |
---|---|
NumPy | Python 语言扩展程序库,支持大量的维度数组与矩阵运算。 |
SciPy | 集成了数学、科学和工程的计算包, 它用于有效计算 Numpy 矩阵,使 Numpy 和 Scipy 协同工作。 |
Matplotlib | 专门用来绘图的工具包,可以使用它来进行数据可视化。 |
pandas | 数据分析工具包,它基于 NumPy 构建,纳入了大量的库和标准数据模型。 |
机器学习
机器学习常用的库也有 4 个,包含了基础数据挖掘、图像处理与自然语言处理常用算法。它们可以支撑 日常工程中的常见算法处理方案
名称 | 含义 |
---|---|
scikit-learn | 基于 SciPy 进行延伸的机器学习工具包,包含大量的机器学习算法模型,有 6 大基本 功能:分类、回归、聚类、数据降维、模型选择和数据预处理。 |
OpenCV | 非常庞大的图像处理库,实现了非常多的图像和视频处理方法,如图像视频加载、基 础特征获取、边缘检测等,处理图像通常都需要其支持。 |
NLTK | 比较传统的自然语言处理模块,自带很多语料,以及全面的传统自然语言处理算法, 比如字符串处理、卡方检验等,非常适合自然语言入门使用。 |
Gensim | 包含了浅层词嵌入的文本处理模块,以及常用的自然语言处理相关方法,如 TF-IDF、 word2vec 等模型。 |
深度学习平台
平台名称 | 开发平台 | 优点 |
---|---|---|
TensorFlow | 谷歌 | 相对成熟、应用广泛、服务全面、提供学习视频和其认证计划。 |
PyTorch | 支持更加快速地构建项目。 | |
PaddlePaddle | 百度 | 中文文档全面,对于汉语的相关模型比较丰富。 |
根据前人总结的方法论,我们在开始做数据挖掘的时候需要有一些准备。
对于要解决的问题往往有共同点,针对每一类型的问题,就可以用相对应的算法,比如
比如:电影质量是好还是差,风险内容是有风险还是无风险,情感是正向的还是负向的。
分类是有监督的学习过程,分类问题首先要有一批已经有标签结果的数据,经过分类算法的学习,就可以预测新的数据和新的未知数据的分类。如果缺少这些数据信息,就没有办法进行分类,就要考虑使用其他的算法,如聚类算法。或者处理数据,通过人工进行标注。
分类方法中包含3中情况:
由于分类问题众多,所以用来解决分类问题的算法也非常多,比如:KNN算法,决策树算法,随机森林,SVM等等,都可以解决分类问题。
跟聚类不同,聚类是无监督的,简单来说就是,只知道一些数据,而且需要为这些数据分类,划分的类有多少个不清楚,数量的基数很大。
聚类就是要划分小组,通常小组之间可能有4中情况:
与分类十分相似,都是根据已知的数据去学习,然后为新的数据进行预测,不同的地方是,分类方法输出的结果是离散的,回归的方法输出的结果是连续的
这张图说明不管是线性的还是非线性的数据,都可以使用回归分析。
可以看到,数据散落在坐标系上,通过学习你可以得到一条线,较好地拟合了这些数据。这条线可能不 通过任何一个数据点,而是使得所有数据点到这条线的距离都是最短的,或者说是损失最小的。根据这 条线,如果给出一个新的 x,那么你就能算出对应的 y 是多少。
关联问题的方法就是关联分析,这是一种无监督学习,它的目标就是挖掘隐藏在数据中的关联模式并加以利用,分析关联是要在已有的数据中寻找数据的相关关系,所以,关联分析被广泛地用于各种商品销售分析、相关推荐系统分析、用户行为分析等情况。
每个问题都可以通过相应的机器学习算法来进行解决。但 是,在实践的时候,很多问题不是靠一个算法、一个模型就能解决的,往往要针对具体的细节使用多个 模型以获得最佳效果,所以就要用到模型集成。
模型集成也叫做集成学习,就是整合多个模型来提升整体的效果。
既然是要合并多个模型,那么很容易想到训练多个并列的模型,或者串行地训练多个模型。
标准率相关指标是在模型评估时最受关注的指标,它直接反映了一个模型对于样本数据的学习情况,是一种标准化的检验。
我们把这 1000 张图放进分类器进行分类计算,每张图都会得到一个预测结果,通过对预测结果的统计 可以知道,被模型预测为 “是” 的图片有 770 张,被模型预测为 “否” 的图片有 230 张。这个时候每张图 上会有两个结果:一个人工标注结果、一个模型预测结果。根据这两个数据的统计,可以得到一个混淆 矩阵:
样本 1000 份 | 模型预测:是 | 模型预测:否 |
---|---|---|
人工标注:是 | 745(TP) | 55(FN) |
人工标注:否 | 25(FP) | 175(TN) |
矩阵中包含以下 4 种数值:
泛化能 力反映的是模型对未知数据的判断能力,因为在数据挖掘中,数据的维度 通常有很多,而且数据也都是非标准值,任意记录之间的数据都会存在着差异,所以泛化能力好的模型 在数据存在着波动的情况下,仍然能够做出正确的判断。
我们通过两个指标可以评估模型的泛化能力是好还是坏,那就是过拟合(overfitting)和欠拟合 (underfitting)。
过拟合:模型在训练集上表现良好,而在测试集或者验证集上表现不佳。这就是说,模型对样本学习有 些过度了,已经进入了死记硬背的程度,而不是掌握了普适规律,这个时候可以说泛化能力比较差。
欠拟合:在训练集和测试集上的表现都不好。这就是说模型连最基本的内容都没有学到,比如老师教你 1+1=2、1+2=3,考试也考 1+1=2,结果还是做错了。
eg:通常情况下,我们的小猪图都像左侧一样,右侧有两张图,上面一张可以看出仍然是小猪图,但是后背 上的线条有一个缺口,如果此时模型告诉我们,这个后背上有个缺口,这不是小猪图,那么这时就出现 了过拟合(判断条件过于苛刻)。右下侧是一张小羊图,如果模型告诉我们这个也有四条腿,这个是小 猪,那就是欠拟合(特征学习不完全)。
考试也考 1+1=2,结果还是做错了。
eg:通常情况下,我们的小猪图都像左侧一样,右侧有两张图,上面一张可以看出仍然是小猪图,但是后背 上的线条有一个缺口,如果此时模型告诉我们,这个后背上有个缺口,这不是小猪图,那么这时就出现 了过拟合(判断条件过于苛刻)。右下侧是一张小羊图,如果模型告诉我们这个也有四条腿,这个是小 猪,那就是欠拟合(特征学习不完全)。