机器学习基础
2017-05-07 本文已影响7人
谢小帅
机器学习的应用实例
- 搜索引擎记录用户的点击,从中学习优化下次搜索结果
- 垃圾邮件过滤
- 商店的款台收费软件基于以前的统计知识,认为买尿布的人通常喜欢喝啤酒
小明给孩子买完尿布又去买了啤酒,账单信息发现这两种商品经常一起买 - 人脸识别
- 自然语言处理
- 产品推荐
- 图像识别
- 专家系统
机器学习就是将无序的数据转化为有用的信息。
监督与无监督
- 监督学习:机器知道预测什么,即目标变量的分类信息。包括分类和回归。
- 无监督学习:数据没有类别信息,完成聚类和密度估计。还可以减少数据特征维度。
聚类:将数据集合分成由类似对象组成的多个类
密度估计:寻找描述数据统计值的过程
如何选择算法
想要预测目标变量的值,选择监督学习算法,否则选择无监督学习算法。
-
监督学习,进一步确定目标变量类型。
-
离散,分类算法
-
连续,回归算法
-
无监督学习,进一步确定分组
-
将数据划分为离散的组是唯一需求,聚类算法
-
还需要估计数据与每个分组的相似程度,密度估计算法
开发机器学习应用程序的步骤
- 收集数据
- 网络爬虫从网站抽取数据
- RSS反馈或API数据(RSS用以聚合经常发布更新数据的网站)
- 设备传送的实测数据(滴滴打车的定位信息)
- 准备输入数据
- 标准化数据格式(如List)
- 数据类型(String,int)
- 分析输入数据
- 无效数据
- 异常数据
- 可视化数据(多维降维分析特征值)
- 训练算法
- 前两步格式化的数据输入到算法,训练抽取知识(模型参数)
- 无监督学习不存在目标变量值,不需要这一步
- 测试算法
- 监督学习通过实际目标变量值评估(如交叉熵)
- 无监督学习也要用其他办法评估成功率
- 算法不合格,回到第4步重新训练。问题常与数据有关,回到第1步重来
- 使用算法
- 机器学习算法转化为应用程序,执行实际任务。
Python
- 优势
- SciPy和NumPy等库实现向量和矩阵操作,可读性强
SciPy和NumPy使用底层语言(C和Fortran)编写,提高了计算性能 - Matplotlib绘制2D,3D图形,可视化结果
- 交互式shell环境,便于查看和检测程序内容
- Java和C等强类型虽然快,但是开发效率低
- 缺点
- 性能低,运行效率不如Java或者C
- Cython和PyPy工具可以编写强类型的Python代码,改进性能