什么是机器学习

  • 定义: 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
  • 通俗上讲:就是让机器去学习,让机器去执行
  • 学习的目的是"减熵"(热力学第二定律:一个孤立的系统倾向于增加"熵")

机器学习的必要性

  • 很多软件无法靠人工编程来解决,如:自动驾驶、计算机视觉、自然语言处理
比如说:鸢尾花的识别难以用人工编程(特性很多)

sklearn中提供了该数据集,主要内容有

150个样本数据
四个Attribute:
  • sepal length in cm
  • sepal width in cm
  • petal length in cm
  • petal width in cm
class:
  • Iris-Setosa
  • Iris-Versicolor
  • Iris-Verginica

数据

萼片长度萼片宽度花瓣长度花瓣宽度种类
5.13.51.40.2se(0)
7.03.24.71.4ve(1)
6.33.262.5vi(2)
  • 数据的整体叫做数据集(dataset)
  • 每一行数据称作一个样本(sample)
  • 每一列就是一个样本的特征(feature)
  • 最后一列是标记(label)

前面的特征我们一般用X表示(矩阵),后面用y表示(向量)
每一行可以表示为特征向量

机器学习的基本任务

根据学习的任务模式 (训练数据是否有标签),机器学习可分为四大类:

  • 有监督学习 (有标签)
  • 无监督学习 (无标签)
  • 半监督学习 (有部分标签)
  • 增强学习 (有评级标签)

深度学习只是一种方法,而不是任务模式,因此与上面四类不属于同一个维度,但是深度学习与它们可以叠加成:深度有监督学习、深度非监督学习、深度半监督学习和深度增强学习。迁移学习也是一种方法,也可以分类为有监督迁移学习、非监督迁移学习、半监督迁移学习和增强迁移学习。

监督学习(分类和回归)

在监督学习中,数据 = (特征,标签),而其主要任务是分类和回归。以NBA球员詹姆斯的个人统计为例

分类

如果预测的是离散值 (discrete value),例如比赛结果赢或输,此类学习任务称为分类 (classification)。

如果预测的是连续值 (continuous value),例如詹姆斯效率 65.1, 70.3 等等,此类学习任务称为回归 (regression)。

总结: 监督学习给机器的训练数据拥有"标记"或者"答案"
监督学习 (supervised learning) 利用输入数据及其对应标签来训练模型。这种学习方法类似学生通过研究问题和参考答案来学习,在掌握问题和答案之间的对应关系后,学生可自己给出相似新问题的答案了。

更多分类任务举例:

当输出变量取有限个离散值时,预测问题变成为分类问题

二分类(两个类别中选择一个作为预测结果)
  • 给定的图片只有猫和狗,判断是猫还是狗
  • 判断是否是垃圾邮件
  • 银行判断给客户发放信用卡是否有风险
  • 判断病患是良性肿瘤还是恶性肿瘤
  • 量化交易中判断某只股票的涨跌
多分类
  • 手写数字识别(识别0~9)
  • 复杂图像识别(猫狗鸟)
  • 信用卡风险等级
多标签分类(复杂机器学习算法))


回归(用于预测输入变量和输出变量之间的关系,输出是连续型的值)

结果是一个连续数字的值,而非类别

  • 房价预测:面积,地点,卧室数量,房龄。。。。
  • 股票的价格
  • 市场分析(双十一某个店铺卖多少货 )

无监督学习

无监督学习 (unsupervised learning) 是找出输入数据的模式。比如,它可以根据电影的各种特征做聚类,用这种方法收集数据为电影推荐系统提供标签。此外无监督学习还可以降低数据的维度,它可以帮助我们更好的理解数据。

在无监督学习中,数据 = (特征,)。
除了根据詹姆斯个人统计来预测骑士队输赢或者个人效率值外,我们还可以对该数据做聚类 (clustering),即将训练集中的数据分成若干组,每组成为一个簇 (cluster)。

假设聚类方法将数据聚成二个簇 A 和 B,如下图

后来发现簇 A 代表赢,簇 B 代表输。聚类的用处就是可以找到一个潜在的原因来解释为什么样例 1 和 3 可以赢球。难道真的是只要詹姆斯三双就可以赢球?

其他角度分类:

批量学习和在线学习
参数学习和非参数学习

开发环境

anaconda(开源的Python包管理器)

下载地址 https://www.anaconda.com
Anaconda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换

IDE(集成开发环境) JupterNoteBook 交互式开发环境

  • 基本操作(新建python文件。。。)
  • 快捷键
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐