机器学习 - 模型评估指标

(本系列的 Jupyter Notebook 可以到我的码云下载。)

概述

在机器学习中,针对一个任务通常会训练若干个模型,然后对这些模型进行评估,最后选出一个或几个最佳的模型投入实际应用环境中。那么如何评估训练后的模型呢?这就是本篇教程要说明的问题。

在评估一个模型时,通常都会用到几个评估指标:混淆矩阵、正确率、精确率和召回率、受试者工作特征曲线等,下面分别来看一下这些指标。

继续阅读全文 »

机器学习 - k近邻

(本系列的 Jupyter Notebook 可以到我的码云下载。)

概述

k近邻(k-Nearest Neighbors, kNN)是最简单的机器学习算法,它既可以用于分类任务,也可以用于回归任务。所谓 k近邻,就是“k个最近的邻居”的意思,该算法的思想就是找到与测试样本特征最相近的 k 个已知样本,用这 k 个已知样本的标签(分类)或数值(回归)来确定该测试样本的标签或数值。比如我们把人类和阿凡达作为样本集来判断一个拥有蓝皮肤、长耳朵和黄眼睛的新生儿属于哪个物种,我们就从人类和阿凡达中找出几个(比如3个)与这个婴儿特征最相近的生物,结果我们找出的这 3 个生物都是阿凡达,那么我们可以判断这个新生儿属于阿凡达。再比如我要在闲鱼网上卖一本《数据结构与算法》(因为我有两本),为了进行合理的定价,我比较了书名相同、新旧程度也最相近的 3 本书之后,发现它们的价格分别为 $19.00, $21.00, $20.00, 于是我就把我的这本定价为它们的均价:$20.00

那么现在问题来了,如何找出与测试样本最近的邻居呢?要回答这个问题,首先要回答另一个问题:如何计算两个样本的相近程度?

继续阅读全文 »

Matplotlib 简明教程

简介

Matplotlib 是 Python 最基础的可视化库,利用它可以绘制出质量很高的各种图形,例如:条形图、盒图、直方图、散点图、饼图等等。在机器学习中,通常使用 Matplotlib 来展现数据,观察数据,从而分析出数据模型。另外,Matplotlib 也是其他更高层 Python 可视化库的底层实现,例如 seaborn 等。
在 API 方面,Matplotlib 提供了一个名为 matplotlib.pyplot 的工具集,该工具集可以让 Matplotlib 像 MATLIB 一样的方式进行绘图。关于 matplotlib.pyplot 的更详细的说明,请参见 官方文档

继续阅读全文 »

神经网络 - 反向传播算法推导

算法推导

符号说明

  • $C$ 表示 cost function
  • $w^l_{j,i}$ 表示第 $l-1$ 层的第 $i$ 个神经元到第 $l$ 层的第 $j$ 个神经元的 weight
  • $b^l_i$ 表示第 $l$ 层的第 $i$ 个神经元的 bias
  • $a^l_k$ 表示第 $l$ 层的第 $k$ 个神经元的输出(activation)
  • $P_{l}$ 表示第 $l$ 层的神经元数量
  • $f$ 表示激活函数(activation function)
  • $z^l_k$ 表示第 $l$ 层的第 $k$ 个神经元的输入,即

$$ z^l_k = \sum^{P_{l-1}}_{k_{l-1}=1} w^l_{k,k_{l-1}} a^{l-1}_{k_{l-1}} + b^{l}_{k_l} \tag{1} $$

继续阅读全文 »