分类
在之前的文章中,我们介绍了线性回归的基本概念 DJL-Java开发者动手学深度学习之线性回归,并使用高层API实两简单线性回归模型 DJL-Java动手学深度学习之线性回归实现,有预测结果。
回归可以用来预测不少的问题,如我们之前讲的,预测房价、股票、球赛的胜负次数。同时,我们有时遇到的问题并不是预测问题,而是一个分类问题。比如:
- 今天中午午饭吃什么?
- 某个邮件,是否属于垃圾邮件?
- 某个图片,是喵星人还是汪星人?
- 某个人接下来最可能看哪种类型的电影?
- 某个人在特定时间段内,最喜欢购买哪种商品?
通常,机器学习可以通过分类来描述两种微妙差别的问题:
- 我们只对样本类别感兴趣,既哪种类别。
- 我们希望通过对样本类型进行分析,找出每种类别出现的概率。
而往往,这两者的界限很模糊。其中的原因可能是:即使我们只关于分类问题,我们依然要使用分类的概率。
分类问题
我们从一个简单的图片分类问题开始讲起 。假如每次给定一个图片,我们可以用一个标量来表求每一个像素,那么每个图片对应的特征可以表求为 { x 1 , x 2 , x 3 , . . . , x n } \{x_1,x_2,x_3,...,x_n\} {
x1,x2,x3,...,xn} 。另外,我们假设每个图片属于喵星人和汪星人的一种。
接下来,我们就可以选择如何用标签进行表求。我们有两个明显的选择:最直接的想法是选择 ( y ∈ { 1 , 2 } ) (y \in \{1, 2\} ) (y∈{
1,2}), 其中整数分别代表 { 狗 , 猫 } \{狗, 猫\} {
狗,猫}。 这是在计算机上存储此类信息的有效方法。 如果类别间有一些自然顺序, 比如说我们试图预测 { 小 学 , 中 学 , 初 中 , 高 中 , 大 学 } \{小学,中学,初中,高中,大学 \} {
小学,中学,初中,高中,大学}, 那么将这个问题转变为回归问题,并且保留这种格式是有意义的。
幸运的是,一般的分类问题并不与类别之间的自然顺序有关。 统计学家很早以前就发明了一种表示分类数据的简单方法:独热编码(one-hot encoding)。 独热编码是一个向量,它的分量和类别一样多。 类别对应的分量设置为1,其他所有分量设置为0。 在我们的例子中,标签 ( y ) (y) (y)将是一个二维向量, 其中 ( 1 , 0 , 0 ) (1, 0, 0) (1,0,0)对应于“猫”、 ( 0 , 1 , 0 ) (0, 1, 0) (0,1,0)对应于“狗”, (