机器学习 - 梯度下降

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

概述

线性回归中我们令最小二乘函数的导数等于 $0$ 求得了最小二乘法的最优解。然而并不是所有的函数都可以用这种令导数等于 $0$ 的方法求得最优解,尤其是在机器学习中,一个模型可能有成千上万的参数,每个参数的指数也可能不为 $1$ 。因此我们需要一种更通用的求解最优化问题的算法。本篇介绍的梯度下降法就是最常用的一个。

梯度下降法的基本思想是用迭代的方式调整模型参数以减小损失函数的值。当损失函数达到最小值(或极小值)时模型的参数就是最优解。

继续阅读全文 »

机器学习 - 线性回归

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

概述

本篇教程讲述线性回归,那么什么是线性回归呢?

首先举个例子,我们去市场买牛肉,一斤牛肉52块钱,两斤牛肉104块钱,三斤牛肉156块钱,以此类推。也是说牛肉的价格随着牛肉斤数的增加而有规律地增加,这种规律可以用下图表示:

牛肉斤数vs价格

可以看到上述规律可以用一条直线来表述,这就是一个线性模型。用 $x$ 表示牛肉斤数,用 $y$ 表示价格,就得到下面的方程:


$$ y = 52x \tag{1} $$

这个方程就叫做回归方程,$52$ 叫做回归系数,求解回归系数的过程叫做回归

线性回归首先假设自变量和因变量是线性关系,然后通过对现有样本进行回归,进而计算出回归系数以确定线性模型,最后使用这个模型对未知样本进行预测。

继续阅读全文 »

机器学习 - 模型评估指标

(本系列的 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 的更详细的说明,请参见 官方文档

继续阅读全文 »