机器学习:基本概念、一般步骤、工具



人工智能(Artificial Intelligence)

  • 通过计算机模拟人类智慧,以完成很多只有人类才可以完成,甚至连人类都无法完成的任务
  • 比如专家系统、图像识别、语音识别、自然语言处理、自动驾驶、推荐系统、人机博弈、电脑游戏、机器人等
  • 人类利用计算机完成了很多对人类而言非常困难的工作,但一些人类可以很容易解决的问题比如驾驶汽车、语言图像识别,计算机却很难解决,这是人工智能需要解决的问题
  • 早期人工智能只能解决简单的特定环境下的问题,比如国际象棋

机器学习(Machine Learning)

  • 通过分析已有的数据,从中学习,然后对新数据进行预测、决策、判断
  • 人们发现有些问题通过逻辑分析很难解决,还不如通过对已有的数据进行统计分析
  • 机器学习需要有海量数据进行训练,很多数据量小或是靠逻辑分析能解决的问题并不适合使用机器学习

深度学习(Deep Learning)

  • 传统的机器学习,需要人工选取特征值,计算机从数据中提取人工指定的特征值然后进行训练
  • 然而有些问题,靠人工的方式无法很好的提取特征值
  • 深度学习不需要人工指定特征值,而是自动提取简单的特征值,并组合成更复杂的特征值,然后进行训练
  • 深度学习使用的主要是神经网络
  • 如果没有特征可以提取,那深度学习效果就不佳

监督学习(Supervised Learning)

  • 给定样本集 (X, Y),机器从中推演出合适的模型 y = F(x),然后对新的 X 数据,通过 F 预测相应的 Y
  • 监督学习一般使用两种类型的目标变量:标称型和数值型
    • 标称型目标变量的结果只在有限目标集中取值,如真与假、动物分类集合
    • 标称型目标变量主要用于分类
    • 数值型目标变量则可以从无限的数值集合中取值,如 0.100、42.001、1000.743 等
    • 数值型目标变量主要用于回归分析

无监督学习(Unsupervised Learning)

  • 给定的样本集中只有 X 没有 Y,无监督学习要回答的是:从数据 X 中能发现什么?
  • 比如 "构成 X 的最佳的 6 个数据簇都是哪些"、"X 中哪三个特征最频繁共现"
  • 将数据集合分成由类似的对象组成的多个类的过程被称为聚类
  • 将寻找描述数据统计值的过程称之为密度估计

回归(Regression)一词的来历

  • 假设现在有一些数据点,我们用一条曲线对这些点进行拟合,寻找最佳拟合参数,这个拟合过程就称作回归
  • 回归由高尔顿发明,高尔顿 1877 年完成第一次回归预测:根据上一代豌豆种子的尺寸预测下一代豌豆种子的尺寸
  • 他发现个体小的豆子往往倾向于产生比其更大的子代,而个体大的豆子则倾向于产生比其小的子代
  • 高尔顿认为这是由于新个体在向这种豆子的平均尺寸回归,就是事物总是倾向于朝着某种平均发展
  • 高尔顿在多项研究上都注意到这个现象,所以尽管这个英文单词跟数值预测没有任何关系,但这种研究方法仍被称作回归

机器学习的一般步骤如下

  1. 收集数据
  2. 提取特征
  3. 转换数据
  4. 清洗数据
  5. 划分数据
  6. 选择算法
  7. 训练算法
  8. 验证算法
  9. 符合要求则继续,否则重新选择算法或重新训练算法,甚至是重新收集数据
  10. 使用算法

分类例子 - 专家系统 - 鸟类识别系统

  1. 收集大量已分好种类的样本数据
  2. 选择用于分析的特征(重量,翼展,有无脚蹼,不同部位颜色,等等)
  3. 取特征值 X 和种类 Y、转换数据格式、特征编码
  4. 清洗数据、处理缺失值、处理异常值、归一化或标准化、降维
  5. 分为两套独立的样本集:训练数据集和测试数据集,比如选择 90% 的样本作训练,10% 的样本作测试,需要保证有随机性
  6. 选择一种分类算法
  7. 使用训练数据集进行迭代训练,产生一个模型 F(X) = Y
  8. 将测试数据集的特征值作为模型的输入,模型判断出相应的种类
  9. 将模型判断的结果与测试数据集的实际种类作比较,得出该模型的精确度,如果精确度不符合要求,重新选择算法或重新训练算法,甚至是重新收集数据
  10. 使用该模型,通过特征值对新数据进行分类

工具

  • Python

    • 简单(脚本,高级数据类型如 Dict,正则表达式,操作文本文件,等等)
    • 流行(网上资料多,库多,SciPy、NumPy 等许多科学函数库都实现了向量和矩阵操作,MatplotLib 等库实现图形化)
    • 缺点是性能差些(可以通过使用 C 替代核心代码改善,实际上 NumPy 这些库就是 C 实现的)
  • 机器学习库

    简介
    scikit-learn(sklearn) 机器学习算法
    TensorFlow/Theano/Caffe 深度学习框架
    Keras 以 TensorFlow 或 Theano 为后端,提供友好易用的API,适合于简单快速的原型设计
    Spark MlLib 分布式、大数据、运算快,提供的算法可能比较基础,API 限制多

机器学习发展还是比较快的,工具的更新发展也比较快

应用

  • 计算机视觉: 估算年龄,人脸识别(甚至能区分双胞胎),美颜,换脸,关键点检测(画个人让其活动起来,自动给人的某部位化妆),对象检测定位(把图片里的物体找到并框起来),自动驾驶识别路况
  • 自然语言处理: 文字翻译,语音识别和翻译,图片里的文字识别和翻译,判断一句话的情绪好坏,判断一句话是否文明,人机对话,自动描述图片或视频的内容,根据描述生成代码
  • 强化学习: alphaGo
  • 金融: 机器建模交易,量化交易,个性化保险政策,识别欺诈行为
  • 医疗: 诊断
  • 艺术: 改变图片的风格(比如改成梵高的风格),自动写作
  • 其他: 比如根据动物特征分类、识别垃圾邮件、预测天气、预测路况、等等


posted @ 2020-02-06 01:21  moon~light  阅读(630)  评论(0编辑  收藏  举报