目录
前言
之前发烧了,导致停更了几天,十分抱歉
本章我们将对机器学习的内容进行一个扫尾,主要包括正则化,SVM等内容,下一章开始我们将正式开始CNN的学习
一、正则化(regularization)
1.正则化的定义
正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或其它误差会严重地影响问题的结果。
2.正则化的计算公式
3.正则化的目的及本质
目的:防止过拟合
正则化的本质:约束(限制)要优化的参数
4.正则化的原理
对于正则化,我个人是有两种理解的
第一种:
为了拟合不同的点,过拟合的函数往往需要在相对较小的区间迅速变化,因而需要较大的梯度。为了保证较大的梯度,只能令权重较大。因而,regularization保证了较小的权重,所以能够起到防止overfit(过拟合)的作用。
这段话怎么理解呢,我们来看下面的图:
首先,左上角红色的函数图,是我们之前讲到的损失函数,正常情况我们应该梯度下降找到损失函数最低点,即图中的βA点,但是,如果这个损失函数是一个多项式次数函数,比如是关于x的9999次方的函数,那么这个函数无疑是一个非常复杂的,而此时我们进行梯度下降,很可能就会出现过拟合的情况,为了防止这种情况的出现,我们就引入了正则化的概念
如图右下角的蓝色函数图,便是我们的正则化部分,如果我们将正则化部分也加入损失函数中后,我们要梯度下降的话,不仅要考虑损失函数,还要考虑正则化,即蓝色部分,此时,我们求得的最低点,应该是图中黑色叉叉的点,这样,我们便可以避免过拟合的情况
如图所示,便是我们常用的四种正则化的方法,其中,第二个我们叫做L1正则,第三个我们叫做L2正则,我刚刚举得例子便是L1正则,他们的本质便是不同范数的等高线(P为范数)
第二种 :
如图所示,J1是我们正常的损失函数,J2是加了L1正则的损失函数,原本J1是过拟合的复杂的一个损失函数,但经过正则化后,J1曲线逐渐变得平缓,变成了如J2所示的损失函数,最终避免了过拟合的情况
(此种理解仅为我个人理解,如有错误,欢迎指正)
综上所述:正则化就算通过约束模型参数的方法来防止模型过拟合的一种数学方法
L1 正则具有稀疏性:可以自动删除特征
L2正则 | L1正则 |
没有绝对值计算 | 有绝对值计算 |
没有稀疏性 | 有稀疏性 |
没有特征选择流程 | 有特征选择的流程 |
二、SVM 支持向量机
SVM可以用于解决分类问题和回归问题,但是主要用来解决二分类问题
具体来说就是在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。
在讲SVM之前,先给大家说两个数学公式
点到线的距离 d =|ax0 +by0 +c |/(a**2 + b**2)**0.5
点到超平面的距离 d =|w T*x0 +b|/(||w||**2)**0.5
假设我们有一个二分类问题,如图:
现在我们将用SVM的方法来进行二分类,首先,我们需要找到一条线,将这两大类别分开,也就是图中的虚线,如果将这个二分类转换成一个三维问题的话,那这条虚线便是一个面,也就是超平面,所以我们现在的目标便是找到一个合适的超平面来进行二分类
那么如何找到一个合适的超平面呢,这里我们变需要引入一个新的概念:间隔最大化(margin)
所谓间隔最大化,说的是分类超平面跟两类数据的间隔要尽可能大(即远离两边数据)
所以,我们现在又有了一个新的目标,即求margin的最大值
现在我们总结一下:1.找到合适超平面,2.求margin最大值
我们先解决第一个问题,很简单,用如下函数表示超平面即可,这个超平面一般在两类数据的中间
然后第二个问题,大家可以用刚开始我提到的数学公式:点到超平面的距离 d =|w T*x0 +b|/(||w||**2)**0.5来计算margin,假设两组数据分别是+1和-1,那么我们需要的margin便是margin>=+1和margin<=-1,将这两个不等式求解,得出的便是我们的超平面在间隔最大化时的边界,即上图中绿色图像的两边界
注:
线性不可分的时候, 解决方法一:升维 (认为的去创造一个新的维度),又叫做核方法:创建一个新的的维度,新的维度是使用旧的维度一些函数表达来实现的。新的维度联合旧的维度有一个新的维度空间,在新的维度空间内实现线性可分类。
不同函数的升核表达式
Type | Expression | parameters |
Linear | Xi**T*xj +c | C |
polynomial | (αXi**T*xj +c)**d | α,C,d |
高斯函数 | Exp(|Xi - xj |**2/2*θ**2) | θ |
拉格朗日函数 | Exp(|Xi - xj |/θ) | θ |
Sigmoid | Tanh(β*Xi *xj +θ) | β, θ |
线性不可分的时候, 解决方法二:软间隔 引入了松弛度 (克塞埃 ≥0)改变目标函数
函授变成 yi(w*xi +b)≥1-克塞埃
目标 min0.5*||w||**2 +CΣ克塞埃 C为惩罚因子
SVM的试用场景总结:
n: feature numbers m: sample numbers
n很多且n>m : logistic regression ||SVM w/o kernel
n很少,m中等 :SVM w kernel
n很少,m很多:add more features, then logistics|| SVM w/o kernel
Usually,SVM is not so good for large samples
Nn can handle。Always。
顺口溜:
高维用线性
不行换特征
低维试线性
不行用高斯
三、非监督学习
想比于监督学习,非监督学习的输入数据没有标签信息,需要通过算法模型来挖掘数据内在的结构和模式。非监督学习主要包含两大类学习方法:数据聚类和特征变量关联。其中,聚类算法往往是通过多次迭代来找到数据的最优分割,而特征变量关联则是利用各种相关性分析来找到变量之间的关系。
1.K- means算法
注:非监督学习和目标检测并无太大关系,所以在此只是了解,并附上我的笔记,感兴趣可下去自行了解
(1)实现的方法
1.指定K值
2.随机找出K个样本
3.计算剩余样本所属类别
4.使用np.mean找出新的中心点
5.返回第3步重新计算样本所属类别
6.返回第4步不断迭代循环
7. 制定break条件循环中止
(2)K- means的缺点
1. K 值需要事先指定
2. 初始值影响最终的结果
3. 不适用于部分结构分布数据:心形, 半圆形
4. 数据样本较大时比较慢
(3) K的选择
1,肘方法 elbow method
每一个K都做一个K-means,每一个类别的点对它的中心点求和(类内距离和),
我们希望类内距离和很小,同时不希望K类别过多。这个时候我们可以看到下图
这样的拐点,作为K值的选择。
2.旷世方法 ISODATA
不是重点,仔细了解....
(4)k-means ++
选取一定概率的初始点,相比K- means可以加快模型收敛的速度。
初拾选点的方法
1. take one center c1, chosen uniformly at random from x
2,take a new center ci, choosing x ∈X with probality D(x)**2/Σx ∈X D(X)**2
3.Repeat step 2, until we have taken k centers altogether.
Unsupercised learn方法大全及适用对象
四、Concepts & problem
1.偏差与方差
(1)偏差
Bias : 用所有可能的训练数据集,训练得到的模型平均输出(平均值)
和真实模型输出值的差异。
Bias(x) = (f(x) - y)**2
(2)方差
Variance: 是不同的训练数据集训练得到模型输出值的差异。
Var(x) = E{[f(x, d) - f(x)平均值]**2}
反应模型的鲁棒性,稳定性
减少高方差 | + λ(正则化) |
-complexity | |
+ sample | |
Reduce 高偏差 | + complexity |
- λ(正则化) |
2.过拟合与欠拟合
(1)过拟合
是指学习时选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测的很好,但对未知数据预测得很差的现象。这种情况下模型可能只是记住了训练集数据,而不是学习到了数据特征。
(2)欠拟合
是指模型描述能力太弱,以至于不能很好地学习到数据中的规律。产生欠拟合的原因通常是模型过于简单。
我们要知道机器学习的根本问题是解决优化和泛化的问题。
优化:
是指调节模型以在训练数据上得到最佳性能。
泛化:
是指训练好的模型在前所未见的数据(测试集)上的性能好坏。
Underfit(过拟合) | overfit(欠拟合) | ||
Phenomenon |
| 1.very good when training, bad when validating | |
reasons |
|
| |
solutions |
|
|
|
总结
这节课的知识比较多,比较杂,很多。是机器学习的第三节课,也是最后一节课。希望大家好好理解,如有困惑,欢迎评论区交流