机器学习概念性总结

发布于:2023-01-01 ⋅ 阅读:(286) ⋅ 点赞:(0)

目录

机器学习分为监督学习和无监督学习。

对Python中几个流行的机器学习模块做概要介绍:

—— Sklearn(Scikit-Learn)模块

1. sklearn功能组成

2. sklearn的使用

—— TensorFlow 模块

—— PyTorch 模块

—— Keras 模块

—— Gensim 模块

—— Caffe 模块


机器学习分为监督学习和无监督学习。

—— 监督学习:

在处理数据过程中以标签数据为预测目标方向进行模型创建,包括分类和回归两种模型。

  1. 分类模型:从已标记的数据中学习如何预测为标记数据的类别,比如手写数字识别、车牌识别等等,目标变量是离散型数据。
  2. 回归模型:是对连续变量进行预测的一类模型,它分析预测自变量和因变量之间的关系,比如根据父母的身高统计数据去预测下一代的身高数据、股票跌/涨等等。

—— 无监督学习:

训练数据由一组输入向量组成,不包含任何相应的目标值(标签字段),目标是发现数据中的相类似的数据组(称为聚类)或判断输入空间内的数据分布(称为密度估计),或将高维数据投影到低维子空间等等。无监督学习的模型包括聚类、关联规则、生存分析等等。

如图所示是针对一个具体业务问题进行机器学习(数据挖掘)的流程,称为CRISP(CRoss Industry Standard Process)。

对Python中几个流行的机器学习模块做概要介绍:

—— Sklearn(Scikit-Learn)模块

它是为有监督和无监督机器学习设计的高级算法框架,作为Python科学计算生态系统的组成部分,它构建在NumPy和SciPy库之上。NumPy是位于Python之上进行数值计算的模块,SciPy构建在NumPy之上,涵盖了更具体的数值例程,如优化和插值;而sklearn则是为机器学习而构建的框架,实现了机器学习的Python接口。

由于sklearn是基于NumPy和SciPy两个模块的,所以在Python中使用时首先需要安装这两个模块。另外,如果安装了mkl模块,将会大大提高NumPy的运行效率,所以最好也要安装mkl模块。mkl是Intel的数学核心函数库(Math Kernel Library),提供了经过高度优化和线程优化处理的数学功能,面向性能要求较高的科学、工程及金融等领域的应用。

1. sklearn功能组成

sklearn提供了六大部分的功能,它们分别是:

  •  分类(Classification):分类是预测新数据(一条新数据可对应一个新对象)属于哪一个类别的模型,应用场景较多,如垃圾邮件检测、图像识别等。其算法包括支持向量机(SVM)、最近邻模型、随机森林树、随机梯度下降法、决策树等等。
  • 回归(Regression):回归是用来对连续性变量进行预测的一类模型,应用场景也较多,如病人对药物的反应预测、债券价格预测、销量预测等。其算法包括支持最小二乘法、向量回归(SVR)、岭回归、Lasso等等。
  • 聚类(Clustering):聚类是按照类似“物以类聚,人以群分”的原则,自动对相似数据进行分组的一种模型。应用场景也很丰富,如客户分群、文本分类、产品分类等。其算法包括K-Mean、谱分类、Mean Shift、DBSCAN等等。
  • 数据降维(Dimensionality reduction):数据降维是一种减少特征(变量)数量的方法。通常应用于可视化、提高效率等场景方面。其常见的算法包括主成分分析(PCA)、特征选择、非负矩阵分解等等。
  • 数据预处理(Preprocessing):数据预处理主要用来进行特征提取和正则化(标准化),在数据挖掘或机器学习的各个阶段都可以发现它的身影,一般也称为ETL(Extract、Transform and Loading)。数据预处理使用的方法可谓多种多样,包括一般的统计方法、分类、聚类等模型都可以应用。
  • 模型选择(Model selection):模型选择是一个比较、验证、进而确定最优参数和合适模型的过程。常用的方法包括网格搜索、交叉验证以及各种指标的对比(如AUC、F1-Score等)。sklearn提供了从样本数据中创建训练数据和测试数据的方法。

这六大功能提供了监督学习和无监督学习的各种模型,同时也提供了数据进入模型前的各种预处理功能。其中分类和回归属于监督学习的范畴,聚类等属于无监督学习的范畴。

2. sklearn的使用

sklearn自带了一些案例数据,这些数据位于Python安装目录的\Lib\site-packages\sklearn\datasets子目录下,sklearn为这些数据提供了专门的访问接口,用起来很方便。使用sklearn的基本流程如下:

  1. 导入相关模块(sklearn下面有各种各样的预处理、算法等具体模块);
  2. 导入数据,并切分为训练集和测试集;
  3. 选择算法,并训练算法,创建模型;
  4. 使用测试数据

—— TensorFlow 模块

TensorFlow由 Google Brain 团队开发,能将复杂的数据结构传输至人工智能神经网中进行分析和处理,可用于语音识别或图像识别等,它可在小到一部智能手机,大到数千台数据中心服务器上运行。TensorFlow是开源的,任何人都可以将其集成到自己的应用中。

—— PyTorch 模块

PyTorch是使用GPU和CPU优化的深度学习张量库。它具备两种高级特性:一个是张量计算 (像 numpy 那样), 并且具有强大的 GPU 加速功能;另一个是具备深度神经网络, 它构建在一个 tape-based 自动求导系统之上。PyTorch 的设计是与Python深度集成的,不是一个 Python 绑定到 C++ 框架。

—— Keras 模块

Keras是一个高层神经网络API,采用Python编写而成。它基于Tensorflow、Theano以及CNTK后端,可以进行快速的原型设计和快速试错,能够把使用者的想法迅速表达出来,支持CNN和RNN,并可对CPU和GPU无缝切换。

—— Gensim 模块

Gensim是一款开源的Python工具包,可以在非结构化文本中学习隐层的主题向量表达,支持TF-IDF、LSA、LDA、word2vec等多种主题模型算法,支持流式训练,并提供了诸如相似度计算、信息检索等一些常用任务的API接口。

—— Caffe 模块

Caffe全称为Convolutional Architecture for Fast Feature Embedding,是一个计算CNN相关算法的框架,采用纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口,可以在CPU和GPU之间无缝切换。