本文是作者阅读《图解机器学习算法》([日] 秋庭伸也、杉山阿圣、寺田学)的相关读书笔记。
读完的感受是:如果作为机器学习的入门书籍,行文和内容有点突兀,初学者通过几幅图也并不一定能懂多少。稍微有一点机器学习基础的人看,这本书都略微浅显,说了很多,但几乎都是浅尝辄止,用的示例也不太好。个人不推荐阅读。
1.简单介绍线性回归。
线性回归是用于预测回归问题的算法。算法根据训练数据计算参数,使得损失最小,这种做法是有监督学习算法的共同之处。
表示误差和学习参数之间关系的函数叫做 误差函数(或损失函数)。线性回归中,通常会用均方误差作为误差函数。 L ( w 0 , w 1 ) = ∑ i = 1 n [ y i − ( w 0 + w 1 x i ) ] 2 n L(w_0,w_1)=\frac{\sum_{i=1}^n[y_i-(w_0+w_1x_i)]^2}{n} L(w0,w1)=n∑i=1n[yi−(w0+w1xi)]2
2.一元回归、多元回归、多项式回归的区别。
简单介绍正则化。
正则化是防止过拟合的一种方法,与线性回归等算法配合使用。通过向损失函数增加惩罚项的方式对模型施加制约,有望提高模型的泛化能力。
过拟合是模型在验证数据上产生的误差比在训练数据上产生的误差大得多的现象,过拟合的一个原因是机器学习模型过于复杂。正则化可以降低模型的复杂度,有助于提高模型的泛化能力。
岭回归。
以岭回归的误差函数为例进行说明。简单起见,这里考虑对二次线性回归应用正则化的情况。 R ( w ) = ∑ i = 1 n [ y i − ( w 0 + w 1 x i + w 2 x i 2 ) ] 2 + α ( w 1 2 + w 2 2 ) R(w)=\sum_{i=1}^n[y_i-(w_0+w_1x_i+w_2x_i^2)]^2+\alpha(w_1^2+w_2^2) R(w)=i=1∑n[yi−(w0+w1xi+w2xi2)]2+α(w12+w22) 等号右边的第 1 项 ∑ i = 1 n [ y i − ( w 0 + w 1 x i + w 2 x i 2 ) ] 2 \sum_{i=1}^n[y_i-(w_0+w_1x_i+w_2x_i^2)]^2 ∑i=1n[yi−(w0+w1xi+w2xi2)]2 是线性回归的损失函数,第 2 项 α ( w 1 2 + w 2 2 ) \alpha(w_1^2+w_2^2) α(w12+w22) 被称为惩罚项(或者正则化项)。
其中 α ( α ≥ 0 ) \alpha(\alpha \ge 0) α(α≥0) 是控制正则化强度的参数, α \alpha α 越大,对学习参数的抑制越强; α \alpha α 越小,对训练数据过拟合的可能性越大。惩罚项具有 “对绝对值大的学习参数给予损失变大的惩罚” 作用。这个作用可以抑制学习参数变大。这里的 α \alpha α 其实就是一个超参数。
Lasso 回归。
Lasso 回归的惩罚项是学习参数的绝对值之和。 R ( w ) = ∑ i = 1 n [ y i − ( w 0 + w 1 x i + w 2 x i 2 ) ] 2 + α ( ∣ w 1 ∣ + ∣ w 2 ∣ ) R(w)=\sum_{i=1}^n[y_i-(w_0+w_1x_i+w_2x_i^2)]^2+\alpha(|w_1|+|w_2|) R(w)=i=1∑n[yi−(w0+w1xi+w2xi2)]2+α(∣w1∣+∣w2∣) Lasso 回归计算的是函数与某个四边形函数的交点。因此具有 学习参数容易变为 0 的特点。利用这个特点,我们可以使用学习参数不为 0 的特征来构建模型,从而达到利用 Lasso 回归选择特征的效果。这样不仅能提高模型的泛化能力,还能使模型的解释变容易。
逻辑回归是一种学习某个事件发生概率的算法。利用这个概率,可以对某个事件发生或不发生进行二元分类。所以,虽然算法的名字中包含 “回归” 二字,但其实是一种分类算法。
逻辑回归的基本思想与线性回归一样,对数据 x x x 乘以权重向量 w w w ,再加上偏置 w 0 w_0 w0 ,计算 w T x + w 0 w^Tx+w_0 wTx+w0 的值。与线性回归不同的是,为了计算概率,逻辑回归的输出范围必须限制在 0 和 1 之间,逻辑回归使用 S i g m o i d Sigmoid Sigmoid 函数 σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1 返回 0 和 1 之间的数值。
我们对输入数据 x x x 使用 S i g m o i d Sigmoid Sigmoid 函数 σ ( z ) \sigma(z) σ(z) ,即使用 p = σ ( w T x + w 0 ) p=\sigma(w^Tx+w_0) p=σ(wTx+w0) 计算标签为 y y y 的概率 p p p 。
间隔:训练数据中,最接近决策边界的数据与决策边界之间的距离,称为间隔。
线性支持向量机的学习方式是:以间隔最大化为基准,让决策边界尽可能地远离数据。
不允许数据进入间隔内侧的情况称为 硬间隔。但一般来说数据并不是完全可以线性分离的,所以要允许一部分数据进入间隔内侧,这种情况叫做 软间隔。
我们将间隔上的数据和间隔内侧的数据特殊对待,称为支持向量。支持向量是确定决策边界的重要数据。
软间隔的学习结果不容易受到偏离值的影响。在使用软间隔时,允许间隔内侧进入多少数据由超参数决定。
核方法的一个常见解释是 “将数据移动到另一个特征空间,然后进行线性回归”。
假设有一个比训练数据更高维的空间,训练数据中的每一个点都对应着这个高维空间中的一个点。在这个高维空间中,训练数据对应的点是可以线性分离的,实际的训练数据是来自该高维空间的投影。一旦有了这样的空间模型,模型就可以在高维空间使用支持向量机来学习决策边界。最后,将高维空间的决策边界投影到由原始特征形成的向量空间上,得到决策边界。
使用不同的核函数,得到的决策边界的形状也不同。但是使用核方法后,我们就无法清楚地知道支持向量机使用的是什么特征了。所以,核方法适合用于 相比特征的可解释性,更看重精度 的场景。
朴素贝叶斯是一个基于概率进行预测的算法,在实践中被用于分类问题。具体来说,就是计算数据为某个标签的概率,并将其分类为概率值最大的标签。朴素贝叶斯主要用于文本分类和垃圾邮件判定等自然语言处理中的分类问题。
朴素贝叶斯是自然语言分类的基础算法,但是不适合预测天气预报中的降水概率那种预测值是概率本身的情况。朴素贝叶斯基于 “每个单词的概率可以独立计算” 的假设,就是为了使概率的计算方法尽量简单。
随机森林的目标是利用多个决策树模型,获得比单个决策树更高的预测精度。
随机森林的多数表决就像找别人商量事情一样,不只听一个人的意见,而是在听取许多人的意见之后综合判断。机器学习也一样,通过创建多个模型,采取多数表决的方式,可以期待获得更为妥当的结果。
决策树是通过将训练数据按条件分支进行划分来解决分类问题的方法,在分割时利用了表示数据杂乱程度(或者不均衡程度)的不纯度的数值。决策树为了使表示数据杂乱程度的不纯度变小,对数据进行分割。
通过Bootstrap 方法 和 随机选取特征值 这两种方法,可以训练出具有多样性的决策树。
随机森林可以让我们知道每个特征对预测结果的重要度。
神经网络在输入数据和输出结果之间插入了中间层,能够学习复杂的决策边界。它既可以用于回归,也可以用于分类,但主要还是应用于分类问题。
神经网络通过设置中间层的方式,可以利用单一算法学习各种决策边界。通过调节中间层的数量及层的深度,神经网络可以学习更复杂的边界。
但是,神经网络模型变得复杂之后,容易过拟合,我们可以使用 E a r l y S t o p p i n g Early{\,}Stopping EarlyStopping(早停法) 的方法防止过拟合。 E a r l y S t o p p i n g Early{\,}Stopping EarlyStopping 进一步划分训练数据,将其中一部分作为训练中的评估数据。在训练过程中使用评估数据,依次记录损失等评估指标,以了解训练的进度。在训练过程中,如果评估数据的损失开始恶化,开始出现过拟合的趋势,就停止训练,结束学习。
KNN(K-Nearest Neighbor)算法是一种与众不同的机器学习算法,它只是机械地记住所有的数据。KNN 既可以用于分类,也可以用于回归。
相较于其他算法要经历 “根据训练数据计算最佳参数” 的训练阶段和 “使用计算出的学习参数进行预测” 的预测阶段,KNN 在训练阶段不进行任何计算,直到进入预测阶段之后才进行具体的计算。
算法使用训练数据对未知输入数据进行分类时的步骤如下。
最近邻点 K 的数量是一个超参数。在二元分类时,通常取 k 为奇数,这样多数表决才能决定结果是其中的哪一个。
当数据量较小或维度较小时,KNN 的效果很好,但是当数据量较大或维度较大时,建议考虑其他方法。
数据量较大时,由于要处理大量的训练数据,所以分类将变慢。这是由于在对未知数据进行分类时,KNN 需要在大量的训练数据上进行近邻搜索以找到最近的点。这就意味着需要同时存储大量的训练数据,也就意味着需要存储容量。为了高效地进行近邻搜索,人们经常借助于利用树结构存储训练数据的技术,但一般来说 KNN 不适合处理大规模的训练数据。
KNN 起作用的前提是 只要拥有的训练数据多,就能在未知数据的附近发现训练数据 这一假设。但对于高维数据来说,这个假设不一定成立。