机器学习基础

机器学习的应用实例

  • 搜索引擎记录用户的点击,从中学习优化下次搜索结果
  • 垃圾邮件过滤
  • 商店的款台收费软件基于以前的统计知识,认为买尿布的人通常喜欢喝啤酒
    小明给孩子买完尿布又去买了啤酒,账单信息发现这两种商品经常一起买
  • 人脸识别
  • 自然语言处理
  • 产品推荐
  • 图像识别
  • 专家系统

机器学习就是将无序的数据转化为有用的信息

监督与无监督

  • 监督学习:机器知道预测什么,即目标变量的分类信息。包括分类和回归。
  • 无监督学习:数据没有类别信息,完成聚类和密度估计。还可以减少数据特征维度。
    聚类:将数据集合分成由类似对象组成的多个类
    密度估计:寻找描述数据统计值的过程

如何选择算法

想要预测目标变量的值,选择监督学习算法,否则选择无监督学习算法。

  • 监督学习,进一步确定目标变量类型。

  • 离散,分类算法

  • 连续,回归算法

  • 无监督学习,进一步确定分组

  • 将数据划分为离散的组是唯一需求,聚类算法

  • 还需要估计数据与每个分组的相似程度,密度估计算法

开发机器学习应用程序的步骤

  1. 收集数据
  • 网络爬虫从网站抽取数据
  • RSS反馈或API数据(RSS用以聚合经常发布更新数据的网站)
  • 设备传送的实测数据(滴滴打车的定位信息)
  1. 准备输入数据
  • 标准化数据格式(如List)
  • 数据类型(String,int)
  1. 分析输入数据
  • 无效数据
  • 异常数据
  • 可视化数据(多维降维分析特征值)
  1. 训练算法
  • 前两步格式化的数据输入到算法,训练抽取知识(模型参数)
  • 无监督学习不存在目标变量值,不需要这一步
  1. 测试算法
  • 监督学习通过实际目标变量值评估(如交叉熵)
  • 无监督学习也要用其他办法评估成功率
  • 算法不合格,回到第4步重新训练。问题常与数据有关,回到第1步重来
  1. 使用算法
  • 机器学习算法转化为应用程序,执行实际任务。

Python

  • 优势
  • SciPy和NumPy等库实现向量和矩阵操作,可读性强
    SciPy和NumPy使用底层语言(C和Fortran)编写,提高了计算性能
  • Matplotlib绘制2D,3D图形,可视化结果
  • 交互式shell环境,便于查看和检测程序内容
  • Java和C等强类型虽然快,但是开发效率低
  • 缺点
  • 性能低,运行效率不如Java或者C
  • Cython和PyPy工具可以编写强类型的Python代码,改进性能

你可能感兴趣的:(机器学习基础)