总框架参考 https://github.com/liu-yang-maker/Easy-DL-Theory/blob/main/docs/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80.md

参考

常见机器学习分类_梦沁清风-CSDN博客_机器学习分类

机器学习算法分类 - 秋雨秋雨秋雨 - 博客园 (cnblogs.com)

机器学习分类 - 狂狷 - 博客园 (cnblogs.com)

机器学习

主要学习了一些机器学习的基础知识,教程很简单,这次笔记主要是按照教程的框架进行了一些本统计学上的拓展。其中主要学习到了:

  1. 切分数据集的原因、作用。
  2. 机器学习的误差来源,以及补充了一些ML,DL中的欠拟合和过拟合的方法。
  3. 了解了常见的机器学习方法,扩展了一下广义线性模型以及根据自己的理解写了一下常见的有监督方法。
  4. 对无监督做了一个简要的概括,补充了一下聚类的方法,以及降维的一些思想。

基本概念:

机器学习是指让计算机具有像人一样的学习和思考能力的技术的总成。总体来说是从一致的数据中获得归,并利用规律对位置的数据进行预测的技术。

机器学习的分类:

监督学习、无监督学习、强化学习

区别:

  1. 监督学习有标签,
  2. 无监督学习没有标签;
  3. 强化学习,没有标签、自我设置评价的标准

机器学习主要分为

  • 有监督,分类、回归
  • 无监督:聚类、降维

数据集

观测样本的集合,一条数据通常代表一个样本,一个样本有多维向量

比如有n个样本,记为 x 1 , x 2 , ⋯   , x n x_1, x_2, \cdots, x_n x1,x2,,xn,每个 x i x_i xi代表第 i i i个样本,假设为 m m m维,那就说明这个数据集是有个n个样本组成,其中每个样本有m个特征。

一般,我们拿到一个数据集合,需要切分数据集。为什么呢?因为就我们平时的学习而言,学习是要有学习案例的,其次,为了检验我们学习的效果,还需要经常进行检测(测试集,平时的期中考试和期末考试)。在学习的案例集合中,往往我们还会分出一部分来用于检测平时的学习效果,以便在平时的学习中就去改正我们的学习方法,从而在最后的期末考试中取得较好的成绩。

对上面的解释归纳一下就是:

(a) 训练集:平时课本,课后练习题的学习案例(这个案例,可能有答案,也可能没有

(b) 验证集:平时的小测验,(根据课本知识制定的练习题),可以用来检测平时的学习效果,调整平时的学习效果和方法。

© 测试集:期中考试、期末考试(以前没有练习过的题目)来检测最终的学习效果。学习使用

K-fold 交叉验证,配合使用

本质上,我们平时的学习,不断地根据平时的学习效果来加强我们对学习的吸收效果,都是为了具备更强的能力,以便于以后再遇到类似情况(学习环境)的时候,可以更好的应对、解决问题,取得高分(一般是模型的评价标准)。调参使用

关于评价标准,可以顺带提及一下,因为一般是进行分类和预测嘛,所以就先讲述一下我们对分类和预测的评价标准(对应最后期末考试的学习成绩)。检验效果使用

常见的数据集

除去深度学习常用的:fashion Miniset, MNIST, CIFAR-10, CIFAR-100, ImageNet\Large Movie Review Dataset, img2poem

还有经典的统计学数据集:

iris、diabetes, UCI的数据集、用于购物篮分析的数据集

找数据集的方法:阿里云、kaggle, github

误差分析

3-机器学习误差分析_老猫的博客-CSDN博客
泛 化 误 差 = 训 练 误 差 + 测 试 误 差 泛化误差 = 训练误差 + 测试误差 =+
泛化误差:在整个训练集中

训练误差:使用模型,对训练样本进行预测,得到的误差

测试误差:使用模型,对测试样本进行预测,得到的误差

由于一般学习的是,对训练数据集进行学习,并且预测评估,在自己上面得到一个好的结果之后;

根据这些误差的大小情况,可以得到根据训练数据预测得到的模型好坏。对于模型的模型,一般是分为两种,欠拟合和过拟合。

欠拟合:对训练数据拟合的不好,即还没有从原始的训练数据中找到学习规律。

过拟合:对训练数据拟合的过好,从原始数据中学习道了太多的规律,相当于只记住了原来数据集的规律,到测试数据集这里,就不会进行预测了,或者说预测效果很差。

过拟合和欠拟合的区别 - 知乎 (zhihu.com)

欠拟合、过拟合及其解决方法_willduan的博客-CSDN博客_欠拟合

欠拟合、过拟合及如何防止过拟合 - 知乎 (zhihu.com)

关于表达式的分解,其实跟在线性回归中的平方和分解是很像的:

其中:
S T = ∑ j = 1 s ∑ i = 1 n j ( x i j − x ‾ ) 2 x ‾ = 1 n ∑ j = 1 s ∑ i = 1 n j x i j \begin{aligned} S_T &= \sum_{j=1}^s \sum_{i=1}^{n_j}(x_{ij} - \overline{x})^2 \\ \overline{x} &= \cfrac{1}{n} \sum_{j=1}^s \sum_{i=1}^{n_j} x_{ij} \end{aligned} STx=j=1si=1nj(xijx)2=n1j=1si=1njxij
我们引入一个中间的统计量(每组内的均值),即 x ‾ ⋅ j = 1 n j ∑ i = 1 n j x i j \overline{x}_{\cdot j} = \cfrac{1}{n_j}\sum_{i=1}^{n_j} x_{ij} xj=nj1i=1njxij

那么就有
S T = ∑ j = 1 s ∑ i = 1 n j [ ( x i j − x ‾ ⋅ j ) + ( x ‾ ⋅ j − x ‾ ) ] 2 = ∑ j = 1 s ∑ i = 1 n j ( x i j − x ‾ ⋅ j ) 2 + ∑ j = 1 s ∑ i = 1 n j ( x ‾ ⋅ j − x ‾ ) 2 + 2 ∑ j = 1 s ∑ i = 1 n j ( x i j − x ‾ ⋅ j ) ( x ‾ ⋅ j − x ‾ ) = ∑ j = 1 s ∑ i = 1 n j ( x i j − x ‾ ⋅ j ) 2 + ∑ j = 1 s ∑ i = 1 n j ( x ‾ ⋅ j − x ‾ ) 2 \begin{aligned} S_T &= \sum_{j=1}^s \sum_{i=1}^{n_j}[(x_{ij} - \overline{x}_{\cdot j}) + (\overline{x}_{\cdot j} - \overline{x})]^2 \\ &= \sum_{j=1}^s \sum_{i=1}^{n_j}(x_{ij} - \overline{x}_{\cdot j})^2 + \sum_{j=1}^s \sum_{i=1}^{n_j}(\overline{x}_{\cdot j} - \overline{x})^2 + 2\sum_{j=1}^s \sum_{i=1}^{n_j}(x_{ij} - \overline{x}_{\cdot j})(\overline{x}_{\cdot j} - \overline{x}) \\ &= \sum_{j=1}^s \sum_{i=1}^{n_j}(x_{ij} - \overline{x}_{\cdot j})^2 + \sum_{j=1}^s \sum_{i=1}^{n_j}(\overline{x}_{\cdot j} - \overline{x})^2 \\ \end{aligned} ST=j=1si=1nj[(xijxj)+(xjx)]2=j=1si=1nj(xijxj)2+j=1si=1nj(xjx)2+2j=1si=1nj(xijxj)(xjx)=j=1si=1nj(xijxj)2+j=1si=1nj(xjx)2
其中
S E = ∑ j = 1 s ∑ i = 1 n j ( x i j − x ‾ ⋅ j ) 2 S A = ∑ j = 1 s ∑ i = 1 n j ( x ‾ ⋅ j − x ‾ ) 2 = ∑ j = 1 s n j ( x ‾ ⋅ j − x ‾ ) 2 \begin{aligned} S_E &= \sum_{j=1}^s \sum_{i=1}^{n_j}(x_{ij} - \overline{x}_{\cdot j})^2 \\ S_A &= \sum_{j=1}^s \sum_{i=1}^{n_j}(\overline{x}_{\cdot j} - \overline{x})^2 \\ &= \sum_{j=1}^s n_j(\overline{x}_{\cdot j} - \overline{x})^2 \end{aligned} SESA=j=1si=1nj(xijxj)2=j=1si=1nj(xjx)2=j=1snj(xjx)2
S E S_E SE代表的组内组内误差(是由随机误差引起的), S A S_A SA代表组间误差(是在 A j A_j Aj的水平下的样本均值于数据总平均的差异,是由水平 A j A_j Aj以及随机误差引起的)。

共同点:引入中间变量(统计量)

关于欠拟合、过拟合的解决方法

欠拟合:

  1. 减少正则化参数
  2. 使用集成学习方法,对多个弱学习器集成
  3. 添加多项式特征、使用非线性模型,核SVM、决策树、深度学习模型
  4. 采用更复杂的模型(增大模型容量)

过拟合:

  1. 正则化,加上正则化方法,earlystopping, dropout, 数据增强
  2. 获取更多数据(解决过拟合根本方法),例如图片中的图片旋转等
  3. 采用更简单的模型(减少层数,)
  4. 减少参数(变量个数)

交叉验证:

作用:找到最优的训练模型;K折重复多次,产生不同的分割,留一验证

其它的找参数的最优模型

有监督学习

线性回归

回归形式为 T = F ( X ) + ϵ T = F(X) + \epsilon T=F(X)+ϵ, X是一维的,则就是一元线性回归,X为多维的,就是多元线性回归。
F ( X ) F(X) F(X)是向量的线性组合, ϵ \epsilon ϵ是随机误差项。
误差项有一些假定:

  1. 服从均值为0, 方差为 σ 2 \sigma^2 σ2的正态分布
  2. 对于每一个样本,不同的 ϵ i , ϵ j \epsilon_i, \epsilon_j ϵi,ϵj之间线性无关 c o v ( ϵ i , ϵ j ) = 0 , ∀ i , j = 0 , ⋯   , n cov(\epsilon_i, \epsilon_j) = 0, \forall i, j = 0, \cdots, n cov(ϵi,ϵj)=0,i,j=0,,n.
  3. 自变量与随机误差之间相互独立。

拟合模型,一般的参数估计方法有:1. 矩估计,2. 极大似然估计,3. 最小二乘估计

广义线性模型

Lasso:
目标函数为: 损失函数 + L1正则项
1 2 N [ ∑ i = 1 N ( h θ ( x ( i ) − y i ) ) 2 + λ ∑ j = 1 k ∣ w j ∣ ] \cfrac{1}{2N}[\sum_{i=1}^{N} (h_\theta (x^{(i)} - y_i))^2 + \lambda \sum_{j=1}^k |w_j|] 2N1[i=1N(hθ(x(i)yi))2+λj=1kwj]
Ridge Regression(岭回归):

在线性回归中用于解决变量之间的多重共线性问题,引入了L2正则项;而在这里的回归中,主要是用于降低模型复杂度。

目标函数:损失函数 + L2正则项
1 2 N [ ∑ i = 1 N ( h θ ( x ( i ) − y i ) ) 2 + λ ∑ j = 1 k ∣ w j ∣ 2 ] \cfrac{1}{2N}[\sum_{i=1}^{N} (h_\theta (x^{(i)} - y_i))^2 + \lambda \sum_{j=1}^k |w_j|^2] 2N1[i=1N(hθ(x(i)yi))2+λj=1kwj2]
Elastic Net:

目标函数:损失函数 + L1正则和L2正则的加权和
1 2 N { ∑ i = 1 N ( h θ ( x ( i ) − y i ) ) 2 + λ [ ρ ∑ j = 1 M ∣ w j ∣ + ( 1 − ρ ) ∑ j = 1 M ∣ w j ∣ 2 ]   } \cfrac{1}{2N}\left\{ \sum_{i=1}^{N} (h_\theta (x^{(i)} - y_i))^2 + \lambda \left[ \rho \sum_{j=1}^M |w_j| +(1-\rho)\sum_{j=1}^M |w_j|^2\right]\ \right\} 2N1{i=1N(hθ(x(i)yi))2+λ[ρj=1Mwj+(1ρ)j=1Mwj2] }
N N N: 样本容量

M M M: 特征维度

λ > 0 \lambda > 0 λ>0: 调节参数

0 ≤ ρ ≤ 1 0 \le \rho \le 1 0ρ1: 调节参数,当 ρ = 1 \rho=1 ρ=1,与Lasso等价;当 ρ = 0 \rho=0 ρ=0, 与Ridge等价

逻辑回归

逻辑回归主要是用来对数据进行分类和回归的。是线性模型。
推广到多维:softmax回归,主要针对多维y值来进行预测、回归。
应用:

支持向量机

用于小样本的分类。
如果线性可分的话,直接找到函数最大间隔平面,进行分类。
如果线性不可分,则降低要求,给平面一个容错度 ϵ \epsilon ϵ,一般用C来控制对一些分类错误点的容忍程度。
如果还不可分,则使用核函数(线性核、高斯核(径向基)核、多项式核将原数据映射到高维空间中,使得平面对原来的数据线性可分。
其中有个比较多的拉格朗日乘子、KKT条件、凸优化的对等问题。
关于核函数的选择,也是一个问题。

关于核函数的选择,可以去找吴恩达老师有关的经验介绍(第二个直接给出方案
吴恩达机器学习笔记44-核函数(Kernels) - NeoML - 博客园 (cnblogs.com)
svm常用核函数及选择核函数的方法_ningyanggege的博客-CSDN博客_核函数的选择

决策树

主要有ID3, C4.5, CART.

具体介绍在之前的集成学习中有写,现在就不在这里多家赘述了,仅仅写了一个框架。

集成学习

Bagging, Boosting, Blending, Stacking.
Bagging: RandomForest
Boosting: Adaboost, GBDT, XGBoost, LightGBM, CatBoost
Blending:
Satcking:
后两者没有特别的方法,主要是指定的一些框架,其中基学习器可以自己选择。

无监督学习

聚类

K-means, K-mediods, 层次聚类

几乎所有的聚类都会遇到一个问题:距离的大小如何度量?

那我先介绍一下关于距离的度量常见的有哪些?

分别是度量名义变量、度量定序或定距变量、度量定比变量、混合变量的度量、相似性度量与距离度量的转换。

关于距离度量,在很多相似性以及聚类方法中都会用到,所以之后再找个时间好好将所有的度量方法整理一下。
介绍常见的欧氏距离、cosine距离,还介绍别的

k-means和k-mediods比较常见,介绍一下统计学中的层次聚类法。

两种,合并式聚类法、分裂式聚类法

合并式聚类法

(a) 初始化每个观测单独形成一个类别

(b) 迭代地将最相似(或者距离最近)的两个类别合并

© 随着被合并的两个类别的相似都减小(或距离增加),最终所有观测都归于同一个类别。

分类式聚类法

(a) 初始化时所有观测都属于同一个类别

(b) 迭代地选取分裂为最不相似(或者距离最大)的两个子类别的类别进行分裂

© 随着分类成的两个子类别的相似度增加(或距离减少),最终每个观测单独形成一个类别。

降维

PCA, FA(Factor Analysis), 多维标度分析
主成分分析的目标:找到主成分贡献率的钱80%的特征值所对应的特征向量作为最终的特征。

因子分析的目标:找到少量公共因子以解释一组输入变量的共同变异性。
基本想法是:对每个输入变量的变异性都可以归结为少数潜在的公共因子和一个与这些公共因子无关而只与该变量有关的特殊因子

Logo

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

更多推荐