Python机器学习及实践——简介篇

机器学习简介篇

  • 1、机器学习总述
    • 1.1任务(Task)
      • 1.1.1监督学习(Supervised Learning)
      • 1.1.2无监督学习(Unsupervised Learning)
      • 1.1.3强化学习
    • 1.2经验(Experience)
    • 1.3性能(Performance)
  • 2、Python 编程库
    • 2.1 为什么要用 Python
    • 2.2 Python 机器学习的优势
  • 3、Python 环境配置
    • 3.1 Windows 系统环境
    • 3.2 Mac OS 系统环境
    • 3.3 Linux 系统环境
  • 4、Python 编程基础

1、机器学习总述

       机器学习隶属于人工智能(Artifical Intelligence,AI)研究与应用的一个分支。
       机器学习系统具备如下特点

  • 许多机器学习系统所解决的都是无法直接使用固定规则或者流程代码完成的问题,通常这类问题对于人类而言很简单。
  • 所谓具备 “ 学习 ” 能力的程序都是指它能够不断地从经历和数据中吸取经验教训,从而应对未来地预测任务。这种对未知地预测能力叫做泛化力(Generalization)。
  • 机器学习系统更加诱人地地方在于,它具备不断改善自身应对具体任务的能力。习惯称这种完成任务的能力为性能(Performance)。

       Tom Mitchell 的经典定义 : 机器学习一个计算机程序在使用既有的经验(E)执行某类任务(T)的过程中被认定为是“具备学习能力的”,那么它一定需要展现出:利用现有的经验(E),不断改善其完成既定任务(T)的性能( P)的特质。 (更倾向于机器学习实际应用)
       百度百科定义: 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及 概率论、统计学、逼近论、凸分析、算法复杂度理论 等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能.(更倾向于机器学习所涉及的理论基础)
       机器学习相关: 数据挖掘,模式识别,统计学习,计算机视觉,语音识别,自然语言处理。
       机器学习步骤:

数学基础
动手实践
机器学习典型方法
编程基础
数据科学竞赛
实际项目经验

       注:相比于理论能力,更看重实践能力,如果没有机器学习实战,可以有以下几条渠道刷经验:

  • 加入开源项目(github上找),争取成为contributer;
  • 参加国内外机器学习竞赛,拿名次,国内有天池、国外有kaggle。

       机器学习分解: 矩阵+优化+算法+统计。

1.1任务(Task)

1.1.1监督学习(Supervised Learning)

       监督学习是基于有标签的数据,关注事物未知表现的预测,一般包括分类问题(Classification)和回归问题(Regression)。

  • 分类问题: 对其所在的类别进行预测。类别既是离散的,同时也是预先知道数量的。
    例如,根据肿瘤大小预测是否是恶性肿瘤的问题。因为预测结果是离散的,也称为分类问题。
  • 回归: 同样是预测问题,只是预测的目标往往是连续变量。
    例如,根据房屋的面积预测房价的问题。因为要预测的房价是连续的,所以也称为回归问题。
           在监督学习中数据的属性(称为特征(Feature))可以是多个的,例如在预测是否是恶性肿瘤的问题中,数据可以有肿瘤大小、病人的年龄、细胞形状的一致性等多个特征。

1.1.2无监督学习(Unsupervised Learning)

       无监督学习是基于无标签的数据,无监督学习算法可以学习到数据集中的结构,倾向于对事物本身特性的分析,常用的技术包括数据降维(Dimensionality Reduction) 和聚类问题(Clustering)等。

  • 数据降维: 是对事物的特性进行压缩和筛选,这项任务比较抽象。
           例如,在识别图像中人脸的任务中,我们可以直接读取到图像的像素信息。若是直接使用这些像素信息,那么数据的维度会非常高。因此我们可以用数据降维的技术对图像进行降维,保留最具有区分度的像素组合。
  • 聚类问题: 是依赖于数据的相似性,把相似的数据样本划分为一个簇。不同于分类问题,大多数情况下不会预先知道簇的数量和每个簇的具体含义。
           例如,电商对用户的信息和购买习惯进行聚类分析,可以针对性的投放广告和促销信息。再比如Ng课程中举得无监督学习的例子有利用聚类算法对图像中的像素聚类,将图像分成不同的区域,以应用在计算机视觉、图像处理等问题中,例如建立图片的三维模型。课程中还举了一个鸡尾酒聚会的例子,在聚会上很多人同时讲话的场景中,分离出一个人的语音。

1.1.3强化学习

       强化学习是基于回报函数利用学习型算法进行学习,应用在需要作出一系列的决策的场景中。课程中举得例子是直升机飞行的例子。在直升机飞行中需要作出一系列正确的决策才会让飞机飞行起来,与此相反的是在预测是否是恶性肿瘤的问题中,对病人只需要做出一个决策,是否是恶性肿瘤。

       学习理论: 这部分会介绍如何证明算法的收敛性、如何选择模型来得到更好的效果、应该选用多大的数据集,如何debug算法等。

1.2经验(Experience)

       习惯性的把数据视作经验;事实上,只有那些对学习任务有用的特定信息才会被列入考虑范围。而我们通常把这些反映数据内在规律的信息叫做特征(Feature)。
       对于监督学习问题,我们所拥有的经验包括特征和 标记/目标(Lable/Target) 两个部分。我们一般用一个特征向量(Feature Vector) 来描述一个数据样本;标记/目标的表现形式则取决于监督学习的种类。
       无监督学习自然就没有标记/目标,因此也无法从事预测任务,却更加适合对数据结构的分析。正是这个区别,我们经常可以获取大量的无监督数据;而监督数据的标注因为经常耗费大量的时间、金钱和人力,所以数据量相对较少。
       通常把既有的特征,同时也带有目标/标记的数据集称作训练集(Training Set),用来训练我们的学习系统。
       另外,更为重要的是,除了标记/目标的表现形式存在离散、连续变量的区别,从原始数据到特征向量转换的过程中也会遭遇到多种数据类型:类别型(Catagorical)特征,数值型(Numerical)特征,甚至是缺失的数据(Missing Value)等。实际操作过程中,需要把这些特征转化为具体的数值参与运算。

1.3性能(Performance)

       所谓性能便是评价所完成任务质量的指标。为了评价学习模型完成任务的质量,我们需要具备相同特征的数据,并将模型的预测结果同相对应的正确答案进行对比。我们称这样的数据集为测试集(Testing Set)。而且更为重要的是,我们需要保证,出现在测试集中的数据样本一定不能被用于模型训练。In brief,训练集和测试集之间彼此互斥。
       对待预测性质的问题,我们经常关注预测的精度。具体来讲:分类问题,我们要更具预测正确类别的百分比来评价其性能,这个指标通常被称作准确性(Accuracy);回归问题无法使用类似的直播,我们通常会衡量预测值于实际值之间的偏差大小。

2、Python 编程库

2.1 为什么要用 Python

       网上流程一句话 “ 除了不能生孩子,Python 都能干 ” 足以见得 Python 是有多么强大。
       Python 作为一门解释型语言(Interpreted languages),也非常便于调试代码。同时,Python 免费使用和跨平台执行的特性也为这门编程语言带来了越来越多开源库的贡献值和使用者,而且许多著名的公司也将其纳入部门主要开发语言。因此,如果是初涉计算机编程的学者,学习 Python 语言无疑是明智之举。

2.2 Python 机器学习的优势

       Python 程序语言与机器学习实践上的结合有以下的优势:

  • 方便调试的解释型语言,源代码需要通过一个解释器(Interpreter)将其转化为独特的字节码。方便逐行调试,而不必保证一次性通过编译。
  • 跨平台执行作业;
  • 广泛应用编程接口,除了应用于编程人员自行开发所需使用的第三方程序,许多公司也都有自己的云平台并对外提供了相应的 API 接口;
  • 丰富完备的开源工具包,例如便于科学计算的 NumPy & SciPy 、Matplotlib、Scikit-learn、pandas 等,可看Python 工具包使用;
  • 方便的集成开发工具 Anaconda。

3、Python 环境配置

       Python 编程语言目前有两个版本,分别是 Python 2.x 与 Python 3.x。因为一些 “ 历史原因 ”,使得这两个版本不仅无法兼容,而且就连一些编程语法都不一致。所以在学习的时候要先确定自己用的是那一个版本的。

3.1 Windows 系统环境

3.2 Mac OS 系统环境

3.3 Linux 系统环境

4、Python 编程基础

       具体的可以《Python 编程从入门到实践》一书,需要学习的有:

  • Python 基本语法:如命令提示符、代码缩机、注释等;
  • Python 数据类型:数字(Number)、布尔值(Boolean)、字符串(String)、元组(Tuple)、列表(List)、字典(Dictionary);
  • Python 数据运算:算术运算(Arithmetic Operators)、比较运算(Comparision operators)、赋值运算(Assignment Operators)、逻辑运算(Logical Operators)、成员运算(Membership Operators);
  • Python 流程控制:分支语句(if)、循环语句(for);
  • Python 函数(模块)设计;
  • Python 编程库(包)的导入;
  • 自己写一个实践程序。
        小编机器学习学的一般,只是日常做做比记加深一下印象,望读者不吝赐教,谢谢!

你可能感兴趣的:(机器学习,Python机器学习及实践)