美文网首页
机器学习应用的实现步骤一:构建问题

机器学习应用的实现步骤一:构建问题

作者: 林杰Jim | 来源:发表于2020-02-03 12:37 被阅读0次

    从算法到应用

    在文章《机器学习算法的构成要素》中我们用数学语言定义了机器学习算法的五个要素,分别是:输入训练数据集 S、输入假设函数集 H、待优化目标函数 O、 优化方法 \mathcal{A} 和输出假设方程 h_s 。这五个要素是机器学习算法的实现基础,作为我们分析一个机器学习算法的框架。然而从算法理论到实践应用又包含了许多需要在实践中重复试错与改进的步骤。

    学习机器学习需要积累实践“经验”,在反复的尝试中不断改进算法,希望获得更好的结果。可实际上:

    人类对任务表现好坏的评价标准与机器所追求数学上的最优不尽相同。(Jim, 2019)

    如何把现实问题通过数学语言表示成机器可以去优化的函数,并用客观的优劣度量指标去表达主观的好坏评价标准,是实现机器学习应用过程中需要注意的。这篇文章将探讨一个机器学习算法从理论到实际落地为应用需要经历的步骤,并建立起一套完整的、可执行的机器学习应用设计到上线的流程框架。

    流程

    整个框架分为四个大流程,分别是构建问题、准备数据、建立模型和上线应用。在每个流程中又有多个子步骤。本文章关注在构建问题上。

    构建问题 -> 准备数据 -> 建立模型 -> 上线应用

    一、构建问题

    解决问题的之前要对该问题又深入的了解。机器学习作为一个工具的存在目的是解决特定的问题。在确定问题和使用场景之后,考虑问题是否适合用机器学习方法来解决?把场景抽象成哪类机器学习问题?

    根据Jason 的问题定义框架,定义一个问题有三步。首先我们需要解决前两步,即问题是什么?为什么需要解决这个问题?之后再思考如何去解决它。

    • Step 1: What is the problem?
    • Step 2: Why does the problem need to be solved?
    • Step 3: How would I solve the problem?

    ( Jason, 2013 - Problem Definition Framework )

    1、思考前提条件

    如何判断一个问题用机器学习方法来解决是否合适?需要满足以下三个必备条件:

    1. 有规律可循
    2. 编程很难实现
    3. 有足够的数据

    满足以上条件后,我们需要提出自己的假设,明白解决方案所依赖背后的假设,明白方案的局限性。

    2、明确适用范围

    满足前提条件后,需要明确要解决的问题是什么可以抽象为哪类?具体有:回归预测、分类、聚类、归因和异常检测等。

    • 回归: 通过连续值构建函数从而找到下一个预测值。
    • 分类: 对离散值进行分类并判断预测值所属类别。
    • 聚类: 识别输入样本的相似性并分门别类。
    • 归因: 找到一批数据中起对结果起关键作用的属性值。
    • 异常检测: 学习构建正常数据的范围用于识别非典型的输入。

    3、选择实现算法

    按照机器学习模型的训练方式不同,可以归为以下四个大类,选择哪种训练方式需要考虑问题的场景、数据量的大小质量和特征、实现难度等。

    机器学习算法类型 表示 特点
    有监督学习 (Supervised Learning) \{X, Y\} 学习将输入映射到输出的函数
    无监督学习 (Unsupervised Learning) \{X\} 在未标记样本中抽取隐藏信息
    半监督学习 (Semi-supervised Learning) \{X_{few}, Y_{few}\} 仅有少量有标记的样本
    强化学习(Reinforcement Learning) \{{S,R}\} 反复在条件中试错最大化回报奖励

    除此之外在一些更加细分的场景或者特定条件下,可以使用以下模型。

    其他模型 表示 特点
    深度学习(Deep Learning) \{X_{highDim}, Y\} 使用多层神经网络提取数据特征
    迁移学习(Transfer Learning) {\{X_{src},Y_{src}\}} -> \{X_{tar},Y_{tar}\} 迁移训练好的源域的模型到目标域

    4、设计评估指标

    如何用可量化的指标来衡量模型表现的好坏?在监督学习中,对回归问题我们尽可能拟合数据,而对处理分类问题要尽可能区分开数据。而对没有数据标签的非监督学习而言,算法需要从我们给予的数据中去发现“标签”的意义。以下是回归预测中用于度量预测结果好坏的常用的度量指标。

    指标(回归) 公式 特点
    平均平方误差(Mean Squared Error) MSE = \frac{1}{N}\sum(Y-\hat{Y})^2 预测值与真值之差的平方的期望值
    均方根误差(Root Mean Square Error) RMSE = \sqrt{\frac{1}{N}\sum(Y-\hat{Y})^2} 衡量预测值与真值之间的偏差
    平均绝对误差(Mean Absolute Error) MAE = \frac{1}{N}\sum|(Y-\hat{Y})| 所有样本差异在平均值上的权重都相等
    决定系数(Coefficient of Determination) R^2 = 1- \frac{\sum (Y-\hat{Y})^2}{\sum(Y-\bar{Y})^2} 描述样本预测值与真值的相关关系

    混淆矩阵(Confusion Matrix)是评价模型精度的一种标准格式,不仅可以用于计算准确率Acc,更可以用于计算召回率Recall 和精确率Precision 。矩阵的列表示标签的真实值,行表示模型的预测值。它们搭配组合成了以下四种类别。

    混淆矩阵(Confusion Matrix) True Pos True Neg
    Pred Pos TP FP
    Pred Neg FN TN

    下面是常见的几种度量标准,分别有不同的使用情形。Acc 只能说明样本被判断正确的比例,而RecallPrecision 还指示了样本没有被正确判断的比例。由于RecallPrecision 是一对此消彼长的指标,如何去权衡它们便是F值的作用,a为调节权重。在调RecallPrecision 时我们希望让它们都尽可能地大,因此引入AUC值来衡量分类效果。

    基础指标(分类) 表示 特点
    准确率(Accuracy) Acc = \frac{TP + TN}{TP + TN + FP + FN} 适用于正负样本分布均匀时
    召回率(Recall) Recall = \frac{TP}{TP + FN} 原始样本中,正样本被预测正确的概率
    精确率(Precision) Precision = \frac{TP}{TP+FP} 预测的正样本中,被预测正确的概率
    平衡指标(分类) 表示
    F值(F-measure) F = \frac{(a^2+1) Precision \times Recall}{a^2(Precision + Recall)} a 为平衡召回率和精确率的权重
    F1值(F1-score) F1 = \frac{2 \times Precision \times Recall}{Precision + Recall} a=1 时表示召回率和精确率同等重要
    ROC曲线(Receiver Operating Characteristic) x-axis:FPR <br />y-axis:TPR 反映分类起分类效果,可用于选择合适的阀值 a
    AUC曲线(Area Under Curve) S_{ROC} 值越高表示模型排序能力越强

    上面是一些常见的回归与分类算法预测结果的衡量指标。在使用之前要注意每个指标都存在自身的局限性。

    总结

    考虑使用机器学习作为解决问题手段的时候需要明确问题是什么?是否适用于机器学习的场景。然后抽象问题为模型,考虑使用哪种算法能够满足场景和局限。最后设计评估指标,用于描述对模型好坏的判别标准。

    简单概括:

    1. 发现问题
    2. 抽象问题
    3. 为问题选择一个解决模型
    4. 设计评价模型好坏程度的指标

    引用

    相关文章

      网友评论

          本文标题:机器学习应用的实现步骤一:构建问题

          本文链接:https://www.haomeiwen.com/subject/oglhxhtx.html