首页 > 其他分享 >part1模型开发基本流程

part1模型开发基本流程

时间:2022-12-17 12:33:34浏览次数:65  
标签:验证 流程 学习 part1 算法 数据 模型 sklearn

1 机器学习概述

1.1 什么是机器学习

人工智能是计算机科学的一个分支,企图了解智能的实质,并产生一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统。

机器学习,使用算法解析数据并从中学习,然后对真实世界中的事件做出决策和预测。与传统的解决特定任务、硬编码的软件程序不同,机器学习使用大量的数据进行训练,并通过算法从数据中学习如何完成任务。

机器学习来源于早期的人工智能领域,传统的算法包括决策树、聚类、分类、支持向量机、集成学习等。

根据学习的数据源的性质,机器学习算法可以分为监督学习(分类问题)、无监督学习(聚类问题)、半监督学习,它们之间的区别在于样本是否被标记(有无标签)。

深度学习专门用于指定深度神经网络,是利用深度神经网络解决特征表达的一种学习过程,可以大致理解为包含有多个隐含层的神经网络结构。为了提高神经网络的训练效果,对神经元之间的连接方式和激活函数等方面做出了调整。

深度学习在大多数的场景中应用于监督学习(需要大量有标记的样本数据),当然随着深度神经网络模型的发展,也出现了无监督模型。

强化学习也是机器学习的一个分支,其主要任务不仅在于认知识别,还强调如何基于环境去行动,以取得最大化的预期奖励。强化学习通常包括状态(status)、奖励(rewards)、行为(action)。

1.2 人工智能的发展趋势

按照发展程度不同,分为弱、强、超人工智能(artificial narrow、general、super intelligence)。

弱人工智能只专注于完成某个特定任务,如语音识别、图像识别和翻译,是擅长单个方面的人工智能。其中的学习数据大都是统计数据,以此从中归纳出模型。

强人工智能属于人类级别的人工智能,在各方面都可以和人比肩,人脑能处理的脑力活动它通常也能胜任。强人工智能能够进行思考、计划、解决问题、抽象思维、理解复杂理念、快速学习和从经验中学习等操作,使人工智能在无监督学习的情况下可以处理前所未见的细节 ,并且可以与人类开展交互式学习。

超人工智能在很多领域都比最聪明的人类大脑都聪明很多,包括科学创新、通识、社交技能等等。此时的人工智能已经不是人类能够理解和想象的。

2 机器学习的准备工作

机器学习中应当循序渐进地学习相关的数学知识,并结合机器学习中的相关案例,不应当止步于成熟的机器学习编程框架及调参技巧,应当从本源上理解算法的本质。

2.1 知识准备

  1. python编程基础

    python的基础语法、基本数据类型的操作、函数的定义和调用、正则表达式。

  2. 数据处理基础

    熟悉主流的库,先熟悉数据处理和图形呈现的库,如NumPy、Pandas、Matplotlib及Seaborn,设计具体场景时,如数据库、图形、文本时,也需要进一步熟悉。

  3. 机器学习初级、中级能力

    在上面的基础语法和常用数据库熟悉的基础上,可以进行实战阶段,python中主流的机器学习的库为Sklearn、Keras、TensorFlow及PyTorch。机器学习阶段推荐使用Sklearn、神经网络的学习推荐使用Keras框架。

    模型开发的基本流程:数据预处理→建立模型→模型验证→模型调优

  4. 机器学习高级能力

    搭建主流的神经网络

    搭建分布式集群神经网络环境

    理论投产能力

    在具备以上技能之后,进阶分为两个方向:深度和广度。

    深度上就是理论投产能力,因为理论的更新是快于函数库的更新,而理论的投产能力是将论文或者新的数学构思通过算法的形式实现。因此需要掌握一些算法知识,包括精确算法、近似算法、启发式算法、演化算法、递归算法、贪婪算法及各类优化算法等,这部分内容多数与数据结构相关联。此外,根据具体的应用场景,需要对特定的方向进行更深入的学习,如计算机视觉、模式识别、视频跟踪、医学图像处理、强化学习、深度学习、神经网络、自然语言处理、网络信息安全等。

    从广度上,更注重架构整合的能力。理想状态下,机器学习在提取数据、训练及预测时,不存在或者说忽略了性能问题。但在实际情况下,需要注意不同数据源的整合、算力的分布架构、模型的迭代或者交付、模型接口的相应情况等诸多方面。

2.2 环境准备

①安装编译语言python;②安装包;③安装适用于python的集成开发环境(Integrated Development Environment,IDE)。

Python 3 -m pip install SomePackage==X.XX.x    # 安装包,并指定版本号
Python 3 -m pip install "SomePackage>=X.XX.x"  # 指定最小版本号
Python 3 -m pip install --upgrade SomePackage  # 更新包的版本
# 断网时,使用预先下载的whl文件也可以安装包
Python 3 -m pip install SomePackage.whl

2.3 模型开发的工作流程

机器学习开发的主要流程
预处理 建模 验证 调优

数据预处理、建立模型、验证模型、优化模型;在优化模型后,还需要对新模型进行重新的验证,即需要重新训练并验证。

  1. 数据预处理——提高数据挖掘的质量

    数据预处理是指对所收集的数据进行分类或分组前做的审核、筛选、排序、转化、变形等必要的处理方法。在现实情况中,采集的数据并不能被计算机识别,或者用于训练的效果不佳,从而出现数据缺失、数据分布不均衡、数据结构不合理、数据不可识别。

  2. 建立模型——生成能够充分反映数据的数学表示

    该步骤应当根据不同的场景选择适合的模型,在选型完成后,利用数据对模型进行训练,模型训练的过程是利用数据对模型参数进行调整的一个过程。

  3. 验证模型——对模型预测效果的数学分析

    验证模型是模型开发中的一个重要步骤,有助于找到最佳的模型。在这里,会将数据集随机划分为训练集、验证集、测试集。

    训练集是用于建立预测模型的子集。

    验证集用于评估训练阶段所建立的模型的性能。它通过对模型参数进行精细调整,从而选择最佳性能模型。但并非所有建模算法都需要一个验证集。

    测试集是检验最终选择的最优模型的性能的子集。

    根据实际的应用场景,验证方法分为:分类验证、聚类验证、回归验证。

    分类验证——用于检验分类结果的办法,如ROC曲线、混淆矩阵。

    聚类验证——用于检验聚类结果的办法,如调整随机指数、调整交互信息得分。

    回归验证——用于检验回归结果的办法,如平均绝对误差、均方误差(MSE)、方差。

  4. 优化模型——提高模型的拟合效果

    在模型开发过程中,有些影响模型结构的参数并不会参与到模型本身的参数训练中,这些涉及模型结构的参数——超参数(Hyper-Parameter),在不改变原有模型本身参数(被训练的那些)的情况下,对超参数进行调整,可以改善模型在验证时的表现效果。

    优化的方法有:网格搜索(Grid Search)、随机搜索(Random Search)、弹性网络交叉验证、最小角回归交叉验证、LASSO交叉验证。

3 Sklearn概述

3.1 Sklearn的环境搭建与安装

Sklearn又称为scikit-learn,该库提供了机器学习中涉及到的4个流程的函数接口——数据预处理、建模、模型校验评估、模型调优,在建模方面提供的机器学习算法涵盖监督学习、无监督学习、半监督学习,包括但不限于分类、聚类、回归、降维等算法。

Python 3 -m pip install sklearn # 在线安装

离线安装时,在python官方库下载网站https://pypi.org,下载sklearn的whl安装包。https://pypi.org/project/scikit-learn

但注意:sklearn存在依赖库,对python、numpy、scipy的版本有要求。

所以需要先行安装这些依赖环境或者依赖库,然后才能继续安装sklearn。

3.2 Sklearn常用类及结构

3.2.1 数据源、数据预处理、特征提取

1 数据源

在机器学习模型开发过程中,首先要做的就是数据预处理。因为采集到的数据并不一定适用于模型训练,如文本数据、不同维度取值范围差异过大的数据;同时采集到的数据本身的结构存在缺陷的数据,如存在缺失的数据,这样的数据被称为“脏数据”。而这样的数据需要“清洗”,这个清洗过程就是数据预处理。

在sklearn中提供了一些函数接口,用于生成或者得到符合训练标准的数据。

数据源(sklearn.datasets),该模块提供加载数据集的实用程序,以及人工数据生成器(如何制作自己的数据集???)的方法。

对于加载数据集的实用程序(Loader),其类通常以sklearn.datasets.load _ <数据名称> 或者 sklearn.datasets.fetch _ <数据名称>

# 调用鸢尾花数据源
from sklearn import datasets
import numpy as np
import pandas as pd

iris = datasets.load_iris()
a=iris.data
b=iris.target.reshape([150,1])
c=np.hstack([a,b])
irisall_pd=pd.DataFrame(c)

irisall_pd.shape,type(irisall_pd) # ((150, 5), pandas.core.frame.DataFrame)

☆☆ 数据源生成器

在聚类或者分类的实验场景中,需要可供练习的数据源,因为外部的一些数据源无法满足训练的需求,所以通过自己生成数据的方式完成训练,具体代码如下:

from sklearn.datasets import make_blobs

x,y=sklearn.datasets.make_blobs(n_samples=20,centers=4,n_features=2,random_state=0)
Y=y.reshape([20,1]) # x是二维数组,y是一维数组,无法直接纵向合并,reshape返回新对象
data=np.hstack([x,Y])
'''
y.resize([8,1])  resize 直接修改了原始对象y,返回修改后的原始对象
data=np.hstack([x,y])
'''
data_pd=pd.DataFrame(data)
data_pd
type(data),type(data_pd)
# (numpy.ndarray, pandas.core.frame.DataFrame)

2 数据预处理

引用数据源,通常用于模型的实验或者为练习提供数据。一般数据(数值形式,区别于文本数据和图像数据)的预处理过程:

一般数据预处理(sklearn.processing)——包括但不限于缩放、中心化、归一化、二值化。除此之外,对于非一般数据,比如文本数据和图像数据,也存在对应的预处理方法,称之为特征提取。

特征提取(sklearn.feature_extraction)——从原始数据中提取特征,目前包括从文本和图像中提取特征的方法。值得注意的是,对文本数据提取和图形数据提取在不同的模块。

文本数据提取(sklearn.feature_extraction.image)——从图形数据中抽取特征,其方法有补丁提取、像素到像素阶梯连接图转化(Graph of Pixel Gradient Connections)等。

3.2.2 模型建立

模型建立是模型开发整个流程中最关键的环节,其他环节都是围绕模型而存在的。

  • 聚类(sklearn.cluster.*)——其将特征相近的数据划分到同一类,不需要对数据本身标注标签。此类中,收录了几乎全部主流的聚类方法,如K-means聚类、均值偏移聚类、亲和传播、DBSCAN等。
  • 降维(sklearn.decomposition.*)——该模块包括矩阵分解算法,如主成分分析(PCA)、NMF(非负矩阵分解)、独立成因分析,降维属于一种无监督学习方法。
  • 高斯过程(sklearn.gaussian_process.*)——高斯过程既可以用于分类,也可以用于回归,其假设前提是大量独立的,均匀微小的随机变量的总和近似的符合高斯分布,通过对训练数据的高斯假设,生成相应的拟合函数。
  • 广义线性模型(sklearn.linear_model.*)——包括岭回归、贝叶斯回归、LASSO和弹性网络回归。
  • 流形学习(sklearn.manifold.*)——流形学习的本质是从高维数据中恢复低维流形结构,即找到高维空间中的低维流形,是一种降维方法,包含ISOMAP、局部线性嵌入等嵌入方法。
  • 高斯混合(sklearn.mixture.*)——包含高斯混合建模方法,前提是任意模型满足高斯模型的叠加组合。
  • 多类别、多标签分类(sklearn.multiclass.*)——多类别学习算法,包括一对多、多对多、纠错输出码等方法。
  • 朴素贝叶斯(sklearn.naive_bayes.*)——基于贝叶斯定理和强(朴素)特征独立性假设的监督学习方法
  • 最临近方法(sklearn.neighbors.*)——最邻近算法是聚类中常见的一种方法,也可用作分类。
  • 半监督学习(sklearn.semi-supervised.*)——利用少量标记数据和大量未标记数据进行分类,代表性方法有标签传播和标签扩散。
  • 支持向量机(sklearn.svm.*)——可用于分类、回归等场景。
  • 决策树(sklearn.tree.*)——决策树算法,可用于分类、回归等场景。
  • 集成学习(sklearn.ensemble.*)——基于集成的分类、回归和异常检测方法。

以上是sklearn中提供的主流机器学习算法,当然,它也提供深度学习的模型实现,但是更全面的模型实现在Keras中。

3.2.3 模型验证

在模型建立完成并训练后,需要对模型的实际效果进行检验——对所训练的模型进行量化上的效果验证。

模型验证(sklearn.metrics.)和部分sklearn.model_selection.,以及成对验证(Pairwise Validation)、双聚类验证(Biclustering)。

采用ROC方法也可以对模型进行验证。

3.2.4 模型调优

在模型验证之后,如果仍然不能满足业务场景对模型的要求,此时需要提高模型的性能。

在sklearn中,模型调优主要是对参数的尝试(穷举、随机或者给定参数集合),并通过验证得到最优解的超参数。

涉及到的类为sklearn.model_selection.*

标签:验证,流程,学习,part1,算法,数据,模型,sklearn
From: https://www.cnblogs.com/olin25/p/16988826.html

相关文章

  • SpringBoot启动流程
    1.简述Springboot启动是通过Application启动类实现@SpringBootApplication(exclude={MongoAutoConfiguration.class,MongoDataAutoConfiguration.class},......
  • 【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 测试按项目流程阶段划分
    按软件项目流程可划分为单元测试、集成测试、系统测试和验收测试四类测试。(1)单元测试UnitTesting是指对软件中的最小可测试单元进行检查和验证。其中单元测......
  • OSI七层模型及对应的传输协议
    网络分层功能:高层=>负责主机之间的数据传输;中层=>负责网络互连;低层=>负责介质传输;OSI七层模型:高层包含:应用层、表示层、会话层;中层包含:传输层和网络层;低层包含:数据链路层和......
  • 功能测试用例的编写思路及流程
    功能测试用例的编写需要按照一定的思路进行,而不是想到哪写到哪,一般测试机制成熟的公司都会有公司自己自定义的测试用例模板,以及一整套的测试流程关注点,测试人员在测试......
  • RequestMappingHandlerMapping请求地址映射流程!
    上篇文章里,我们讲解了RequestMappingHandlerMapping请求地址映射的初始化流程,理解了@Controller和@RequestMapping是如何被加载到缓存中的。今天我们来进一步学习,在接收到......
  • 数据库设计流程
    对于上图的解读,菱形中是对对象的行为,矩形是大的对象类,有两边的矩形是细分类每两个图形中间都要连线,线上划一圈表示从属关系,表示做,l表示被做,和l一般在菱形两边,......
  • 1、Git的安装及基本工作流程
    基本的Git工作流程如下:1.在工作目录中修改某些文件。2.对修改后的文件进行快照,然后保存到暂存区域。3.提交更新,将保存在暂存区域的文件快照永久转储到Git目录中。......
  • 编辑ONNX模型的python代码
    参考:(8条消息)编辑ONNX模型的python代码_Alexa2077的博客-CSDN博客编辑ONNX的python代码一、ONNX模型的基本操作1,加载ONNX模型2,保存ONNX模型3,OP节点列表4,输入节点名称5,输......
  • 19 Java内存模型与线程_JVM层面的锁优化
    目录1锁优化历史2自旋锁与自适应自旋2.1关于自旋锁2.1自旋锁优化:自适应自旋3锁消除4锁粗化5轻量级锁6偏向锁1锁优化历史synchronized从JDK1.0到JDK1.5,效率......