概述

 
1. 熟悉业务,确定模型的输入输出

2. 根据输入构建数据集 

3. 根据数据特点,选择不同的算法来训练模型

 
特征与特征之间相互独立
- 机器学习 
- 全连接网络 

有前后依赖
- 卷积网络 
- RNN 

有区域/局部特征
- 卷积网络 
    

4. 模型评估:评价与优化

 
- 数据方向,更好的处理,更好的数据 
- 模型方向,更优的算法,更好的参数 

数据确定了规律的上限,模型在数据的基础上去找规律

数据中就没有要找的规律,模型再好也没用; 好的模型可以逼近数据中规律的上限 
项目模型的上限由数据集决定,换不同的模型只是逼近这个上限,不会超越
    

数据才是核心,才是最重要的

 
对于一个业务的数据,从不同的维度分析,展现为线性向量
如果能做到不重不漏,
一个简单的全连接就可以解决问题了
    
项目描述

熟悉业务

 
业务场景描述,

通常由业务人员提供纯业务需求,
由开发人员业务对应的数据或库表

开发人员熟悉业务时,基本全由开发提供 
    
业务输入与输出

了解业务需求后,确定模型的输入与输出

 
输入
- 业务/开发 提供的一个二维数据表,可能是csv或者数据库中的表 

输出
- 一组数
- 通常是原库表一行数据对应一个数 

给一组数据,期望得到一个数 
给n组数据,期望得到n个数 

房价预测,给一个具体房子的信息,期望得到房子的价格

数据空间转换

 
原始数据:业务/开发 提供的数据 
特征空间:模型计算输入的数据
输出空间:模型计算输出的数据
业务空间:业务/开发 期望模型输出的结果 

构建数据集
- 完成 原始数据 -- 特征空间 的转化,即将业务数据转化为 模型需要的特征向量,批次矩阵
- 这一步也叫特征工程 

模型设计
- 设计一个模型,完成  特征空间  -- 输出空间 的转化 
- 分类问题,输出空间,通常是标签所在one hot编码的空间 

业务空间 
- 具有业务含义的数据空间
- 可能是对,错,成立,不成立,0,1,A类,B类,C类...或者一个概率值等 
- 比如,疾病预测就是 异常/正常 
- 也有可能直接对接开发,模型输出结果要转化为开发想要的一个值 

完成 输出空间 -- 业务空间 的转换后,就大致构建了整体流程 

建立指标体系

特征分析提取

 
特征分析提取 
- 从抽象的事物/描述/数据中,提取能够代表该事物的类别信息
- 不同的类别尽量不重复不交叉,即最好相互独立,越全越好
- 最初的时候,尽量多提一些,最后再进行筛选/过滤 

比如买水果,用一组什么样的指标衡量一个水果:
色泽,口感,价格,营养,形状,距离,时间,季节,... 

这些指标大致决定了你是否愿意去买一些水果,
这些指标体系构建的越全,越好,越完善,预测的就越准确
    

度量,量化

 
将业务维度转化为数字,数字化的过程
- 离散量 
- 连续量 

数字化 
- 如果需求不是数字,那么第一步先需要数字化
    - 图像,音视频,文本...不管是什么,先转化为数字  

离散数据
- 类别数据通常是离散的
- 比如,男,女,正,反,就是离散量
- 通常使用 zero-index 索引编码,比如,正-0,反-1 

连续数据
- 连接的数据,比如房价,距离,面积等 
    

数据标注

 
每一条原始数据 都与一个数值/类别对应 

比如是否愿意买水果:愿意,不愿意 

愿意,还是 不愿意 是业务需求,人的需求,
业务只提供了两个类别,但你经过分析,发现一个现象:
有时,意愿不那么清晰,谈不上愿意还是不愿意,
针对这个情况,你可以一个类别:随意 

再比如,疾病的判断,比如检测是否得新冠,得就是得了,没得就是没得,不存在中间结果
但实际结果是通常概率判断的,90%就算你得了,低于90%算你没得 

但问题在于,80%-90%之间的情况,有不少也是得了新冠的,
那么就可以打破原来:得,不得 分类标准,再增加一类:疑似

这一类别的增加,可以让人明白,这个结果是擦边球,还是泾渭分明

说这些,是为了说明深入了解业务情况的重要性,不要把自己完全束缚于既定标准/规则之下 
- 这个道理同样适用于特征分析 

建立指标体系的三大模块

 
特征提取:业务分析,收集原始数据,量化,转化为特征向量

标签:每条数据对应一个数值/类别 

这个过程也叫,特征工程:feature engineering 

数据shape

机器学习

 
一个样本用一个向量表示,设向量的维数为C,即特征个数为C 

全体数据集shape为 [B,C]

深度学习

 
深度学习pytorch框架,卷积 
文本数据shape通常为[B,C,L]
图像数据shape通常为[B,C,W,H],本质上还是将[W,H] -- [L],
然后还是走[B,C,L]的计算方式 

此时,将机器学习[B,C]格式的数据输入到深度模型时,就需要转换一下shape 
[B,C] -- [B,C,1]

 
每个L都是一个维数为C的向量,明白这一点后,调用不同的模型时,
比如,RNN,将L的维度放在第二位,[B,L,C]
RNN类型的模型非常看重 样本/元素 之间的顺序,就是比较看重L 
    
此时,将机器学习[B,C]格式的数据输入到深度模型时,就需要转换一下shape 
[B,C] -- [B,1,C]

总结

 
数据shape 主要看使用的是什么模型 

因为数据会作为模型的参数传入 
    
数据抽样

 
在原始数据量大且高度重复时,抽样可降低计算量,精度受影响程度要视情况而定

若数据量少,或者重复数据不多时,不抽样

构建数据集

 


参考