社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

聊聊机器学习的套路

超人汪小建 • 5 年前 • 404 次点击  
阅读 148

聊聊机器学习的套路

前言

这里说说机器学习问题分析的一般性过程,尽管存在各种各样的机器学习问题,但大体上的步骤及最佳实践都有一定的套路。

理解问题

首先得理解要解决的是什么问题,比如

  • 业务上要解决什么问题
  • 该问题涉及到的信息管道有哪些
  • 如何采集数据,数据源在哪
  • 数据是完整的吗,数据刻度最小是多少
  • 数据是定期发布的还是实时获取的
  • 确定影响模型的有价值因素
  • 工作量

以上等等等等。

ETL处理

待收集的数据可能是表格数据、一串实时数据,N维矩阵或其他类型数据,同时也可能是多种存储介质,通过ETL处理将混合的数据源转成我们需要的格式,生成结构化数据类型。

数据预处理

对于收集的数据,可能存在缺陷,比如空值、异常值或数据产生器本身引起的偏差。这些缺陷可能导致模型效果不佳,同时为了优化更快收敛,需要做数据标准化处理,所以需要进行数据预处理。

比如缺失值可以简单设为0、列平均值、中值、最高频率值、甚至是稳健算法和knn等等。

比如标准化数据集,使数据集正态分布,平均值为0标准差为1。而且还达到了特征缩放效果。

模型定义

机器学习主要就是模型问题,我们通过机器学习来对现实进行抽象建模,以解决现实问题。所以机器学习主要工作就是使用哪种模型来建模,尽管各种大大小小模型一大堆,但大体上也有些套路。

  • 要完成的任务是预测结果还是对数据进行分类,前者是回归问题,后者是分类问题。
  • 对于分类问题,如果需要数据标记,则是监督学习,否则是非监督学习,使用聚类技术。
  • 数据是否为连续的,是的话考虑序列模型,比如自回归和RNN之类的。
  • 尽量使用简单模型,如果能用比如用单变量或多变量的线性回归或逻辑回归。
  • 简单模型解决不了的情况,可通过多层神经网络解决,比如复杂的非线性。
  • 使用了多少个维度的变量,将作用大的特征提取出来,并把不重要的特征去掉,比如用PCA降维。
  • 不是监督也不是非监督?考虑强化学习?

损失函数

损失函数用于衡量模型质量,它可以度量模型预测值与实际期望之间的差距,选择不合适的函数可能会影响模型的准确性,甚至影响收敛速度。

模型训练

数据准备好了,模型定义好了,就可以开始训练模型。训练中涉及几个关键术语:迭代,表示模型计算和调整的一次过程;批,数据集每次以一批为单位输入到模型中;epoch,每当整个数据集被处理完称为一个epoch。

另外,训练模型前先调整模型的初始权重,以便能更快更好地收敛。不能初始化为0,否则将导致学习失败。一般可以使用标准化技术将权重初始化。

数据集分割

一般将整个数据集分成三组,比例是7:2:1,第一组为训练集,用于调整模型参数;第二种为验证集,用于比较多个模型直接的表现;第三组为测试集,用于测试训练得到的模型准确性。

模型效果

模型训练完后要看效果如何,要看看泛化的能力。

对于回归问题,可以通过下面几个指标来了解拟合效果。

  • 平均绝对误差
  • 中值绝对误差
  • 均方误差等等

对于分类问题,可以通过下面几个指标来了解分类效果。

  • 准确性
  • 精确率
  • 召回率
  • F值
  • 混淆矩阵

对于聚类问题,可以通过下面几个指标来了解聚类效果。

  • 轮廓系数
  • 同质性
  • 完整性
  • V度量

-------------推荐阅读------------

我的开源项目汇总(机器&深度学习、NLP、网络IO、AIML、mysql协议、chatbot)

为什么写《Tomcat内核设计剖析》

我的2017文章汇总——机器学习篇

我的2017文章汇总——Java及中间件

我的2017文章汇总——深度学习篇

我的2017文章汇总——JDK源码篇

我的2017文章汇总——自然语言处理篇

我的2017文章汇总——Java并发篇


跟我交流,向我提问:

欢迎关注:


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/O75n2xzZuL
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/26416
 
404 次点击