zoukankan      html  css  js  c++  java
  • 机器学习简单介绍

    机器学习不是科幻电影。
     
    机器学习目的是解放生产力
     

    机器学习原理

    机器学习: 机器自主获取事物的规律。 
     
    要让机器可以 “学习”,必须将生活中的数据(包括但不限于图像、文字、语音)数值化,将不同事物的变化和关联转化为运算。 
     
    机器学习可以成立的原因是:概念和数值、关系和运算可以相互映射
     

    机器学习的种类

    • 按照是否有标签划分

            1、有监督
           训练哈士奇就是典型的有监督学习,每一次的指令都是一个数据样本(Sample),被摸头(正确)和挨打(错误)就是数据样本的标签(Label),给数据样本打上标签的过程就叫做标注(Labeling)。
     
            2、无监督
            告诉机器一些特征(Features),例如:是否有角,是否长翅膀,让机器自己去 “聚类”, 这就是一次无监督的学习。
            无监督学习没有给定事先标记过的训练示例,自动对输入的数据进行分类或分群。 根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习。
     
    • 按照处理问题场景划分

            1、分类和回归
            给定一个样本特征 , 我们希望预测其对应的属性值 , 如果 是离散的, 那么这就是一个分类问题,反之,如果 是连续的实数, 这就是一个回归问题。
     
            2、聚类
            如果给定一组样本特征 , 我们没有对应的属性值 , 而是想发掘这组样本在 维空间的分布, 比如分析哪些样本靠的更近,哪些样本之间离得很远, 这就是属于聚类问题。
     

    机器学习三要素——数据、模型、算法

    数据

    数据 也就是源数据, 指还未转换为机器可以识别的数据样本 
     
    向量空间模型(VSM, Vector Space Model): 负责将格式(文字、图片、音频、视频)转化为一个个向量。

     

     模型

    1. 模型如何得到
    模型是机器学习的结果,而这个学习的过程称为训练(Train) 一个训练好的模型可以被理解成一个函数:y=f(x) 这个 y 可能是一个数值(回归),也可能是一个标签(分类)  
     
    2. 什么是训练 
    根据已经被指定的 f(x) 的具体形式 —— 模型类型,结合训练数据,计算出其中各个参数的具体取值的过程。 比如一个线性模型:y=f(x)=ax^2+bx+c 训练就是为了找到其中 a、b、c 的值

    算法

    算法 :训练过程需要依据某种章法进行运算。这个章法,就是算法。 
    损失函数(Loss Function): 需要用一个函数来描述 y' 与 y 之间的差别,这个函数叫做损失函数(Loss Function) 
    代价函数(Cost Function): 损失函数针对一个训练数据,对于所有的训练数据,我们用代价函数来描述整体的损失 。
    目标函数: 因为代价函数表示的是整个模型付出的代价,所以代价要越小越好。因此我们就得到了一个学习目标,就是找到目标函数。 
    优化算法: 为了让 J(Θ) 达到最小就要使用优化算法。
     

    模型构造

    数据 + 算法 = 模型

    1. 数据准备    
        数据预处理:收集数据、清洗数据、标注数据。     
        构建数据的向量空间模型。     
        将构建好的向量空间模型分为训练集、验证集和测试集。 
    2. 训练     
        训练的核心是算法 
    3. 测试     
        测试集数据 --输入--> 模型(预测结果)--> 将预测结果与原本的预期进行比较 
    4. 衡量当前模型的质量 
        按照一定的规则计算模型质量的衡量指标(Precision、Recall、F1Score 等等),根据指标的数值来衡量当前模型的质量。
     

    训练集、验证集和测试集

    - 训练集(Train Set):用来做训练的数据的集合。
    - 验证集(Validation Set):在训练的过程中,每个训练轮次结束后用来验证当前模型性能,为进一步优化模型提供参考的数据的集合。 
    - 测试集(Test Set):用来测试的数据的集合,用于检验最终得出的模型的性能。  
     
    每个集合都应当是独立的,和另外两个没有重叠。 
    其中数据量最大的是训练集,通常训练集和测试集比例为8/2或9/1或7/3。 
    整体数据量不大,模型又相对简单时,验证集和测试集也可以合二为一。
     

    训练的过程

    1. 编写训练程序   
        - 选择模型类型;    
        - 选择优化算法;    
        - 根据模型类型和算法编写程序。 
    2. 训练 -> 临时模型 
    3. 在训练集上运行临时模型,获得训练集预测结果。 
    4. 在验证集上运行临时模型,获得验证集预测结果。 
    5. 综合参照第 3 步和第 4 步的预测结果,改进模型。 
    6. 回到第 2 步,反复迭代,直到结果满意或者已经无法继续优化
     

    模型评估

    当我们训练出了一个模型以后,为了确定它的质量,我们可以用一些知道预期预测结果的数据来对其进行预测,把实际的预测结果和实际结果进行对比,以此来评判模型的优劣。

     分类模型评判指标: Precision、Recall 和 F1Score 

    精准率:Precision=TP/(TP+FP),即在所有被预测为 Class_A 的测试数据中,预测正确的比率。 
    召回率:Recall=TP/(TP+FN),即在所有实际为 Class_A 的测试数据中,预测正确的比率。 F1Score = 2*(Precision * Recall)/(Precision + Recall)

     回归模型的偏差和过拟合

    对训练集样本拟合程度的角度,可以分为两类:欠拟合(Underfitting)和过拟合 (Overfitting)。

    欠拟合:如果一个模型,在训练集上的预测结果就不佳,指标偏低,那一般是欠拟合的问题。 (没有学到训练数据的普遍规律)
    过拟合:如果在训练集上指标很好,而在验证/测试集上指标偏低,则很可能是过拟合问题。(学习的太好了,太关注局部特征)

    经验误差和泛化误差

    经验误差:在训练集上的误差称为“训练误差”或“经验误差”。 (真实值和预测值的误差)
    泛化误差:在测试集上的误差称为“泛化误差”。
    评价策略:哪一个模型的经验误差和泛化误差上相近又小
     
    回归模型的评价指标 MSE (Mean Squared Error)叫做均方误差。 
    这里的y是测试集上的输出。 
    用 真实值-预测值 然后平方之后求和平均。

     模型优化

    模型的优化可以从三个方面来进行:数据、算法和模型

    数据(特征工程)
     - 对数据进行归一化(Normalization,又译作正规化、标准化)等操作。
     - 采用 Bootstrap 等采样方法处理有限的训练 / 测试数据,以达到更好的运算效果。
     - 根据业务进行特征选取:从业务角度区分输入数据包含的特征,并理解这些特征对结果的贡献。
     
    调参(算法参数)
    我们训练模型的目的就是为了得到模型对应公式中的若干参数。这些参数是训练过程的输出,并不需要我们来调。 除了这些参数外,还有一类被称为超参数的参数,例如用梯度下降方法学习 LR 模型时的步长(Alpha),用 BFGS 方法学习 Linear-chain CRF 时的权重(w)等。 
     
    超参数是需要模型训练者自己来设置和调整的 
    通过调参方法来减轻调参工作量,例如 Grid Search 等。 调参没有固定的规律可以遵循,往往有很多运气成分,但靠瞎猜基本不可能得出好的结果,还是要按一定的方法来做。
     
    算法选择
    1. 算法选对的,别选贵的。前沿的不一定是好的。 
    2. 数据最重要,我丑话在先。
  • 相关阅读:
    wp之动态初始屏幕
    C#实现简易ajax调用后台方法
    扩展JavaScriptSerializer之Camelcase属性名
    wp之切换图片动画
    JQuery.Ajax用法
    工欲善其事,必先利其器
    asp.net中使用自定义的config文件
    windows phone7 学习笔记15——Bing Maps
    wp7屏幕截图代码
    windows phone7 学习笔记13——Panorama和Pivot
  • 原文地址:https://www.cnblogs.com/wuzc/p/12785939.html
Copyright © 2011-2022 走看看