机器学习算法 -- 学习记录
线性回归
介绍: 也就是将散列的输入特征通过一个平面或者一个直线去拟合尽可能多的数据点。
公式:
1. 由于是线性,公式统一为 T=P0 + P1X + P2Y + P3*Z,XYZ就是具体特征元素,例如:每个人的工资,年龄和信誉度对应了花呗的额度,多个人组成的数据矩阵就是训练样本,而XYZ就对应了工资,年龄和信誉度,T就是额度。(所以元素数量可以有很多,不一定就是三个或两个)
2. 因为训练集的原因,我们知道了输入特征值,知道了结果值,这样我们就只需要找到每个P参数的大概值是多少,我们就能确定方程,而寻找适合的参数就是机器学习的过程,参数P也叫做权重。
3. 虽然方程是一个式子,但计算机实际上处理矩阵的方式要比计算式子要快捷和方便很多,所以我们就需要把公式转为矩阵,由于P0的存在没法转成矩阵,而P0是偏置项,是为了调整平面而存在的,不可或缺,P1,P2,P3都对应了相应的特征元素,P0缺少一个相应的特征元素,我们就虚拟的添加一个值全为1的默认特征元素,这样就能转成一个矩阵。所以该方程可以用Σ(i=0,n)PiXi表示,这里X统一表示特征元素。
4. 用H表示特征矩阵,γ表示权重矩阵,那么方程就是(γ转置)H

5. 由于真实值和方程的预测值会有一个差值,而这个差值也就叫误差项,由于样本的选择,绝大多数的误差其实是符合独立且相同的分布,并且服从于均值为0的δ²斯塔高斯分布,由于高斯分布函数已经知道,而误差值又可以用真实值减去预测值表示,这样我们就可以得到一个只带有权重P的方程。

6. 由于高斯分布的结果是概率,所以把数据样本算出的结果当作边缘概率密度,所有结果相乘则是联合概率密度,而这个方程则就是似然函数,由于似然函数是一个乘法运算,可能会导致结果的溢出或者计算的复杂,而对数函数则可以让乘法转为加法,所以我们可以给似然函数加上log运算,然后转为加法,也叫对数似然。


7. 然后我们将对数似然函数展开化简求解,最后可得到一个关于目标矩阵的最终函数,但是这个结果是通过数学计算一次性得到,并没有一个机器慢慢学习优化的过程。在机器学习里经常使用的就是梯度下降的方式模拟优化的过程,梯度下降通俗的说法就是,从最开始的某个点到最终的目标点(最低点),函数会求得每次下降的最优方向,然后移动一点,再次迭代求解,一点一点的找到目标点附近,这就是梯度下降。


8. 梯度下降通过偏导选择对应的方向,然后线性组合出最终方向,下降幅度其实就是学习率(LR,LearningRate),这个是人为定义的,一般很小,下图中α就是学习率。梯度下降的函数就是机器学习核心的函数,不同的梯度下降方法会导致学习效果不同,例如批量梯度下降就是结果较为准确但是速度慢,而随机梯度下降就是速度快但不一定准。

逻辑回归
介绍: 逻辑回归和线性回归的数学公式差不多,但是这个是属于分类的作用,是算出样本属于哪个分类的概率问题。
公式:
1. 使用找到预测函数,例如:sigmoid函数,然后通过该函数将预测值转换成一定区间里的概率。下面图片的例子是sigmoid函数,值域区间是0-1之间,所以在二分类里的概率是h和1-h,如果是多分类的话就是一个区间了。

2. 然后和线性回归一样,取似然函数,对数似然函数,但是由于该函数不是损失函数,是求梯度上升的,所以我们通过乘上一个-1/m转成梯度下降,之后就是求偏导,化简求解。

K-MEANS算法
介绍: 该算法是一个聚类算法,和分类算法不一样的是,该算法不知道样本的标签(无监督),可以直接将样本划分成多个簇。轮廓系数是表示一个点是否划分合理的数值,具体公式就是(一个点到其他簇的最小的平均距离 - 点到自己簇的平均距离) / 这两个值的最大值。
优劣势: 优点是快速,简单;缺点是数据如果太多,计算量太大,而且数据样本太复杂就划分不出来,而且也很难决定有几个簇集。
公式:
1. 首先确定K值,该值决定算法需要划分多少个簇集,然后随机选择K个点作为质心。
2. 然后算出质心到每个点的欧式距离,每个质心到同一个点的距离不同,选择最小距离的质心作为当前点的分类簇。这样就可以得到K个簇集。
3. 我们重新计算K个簇集的质心,一般都是通过找集合的均值(求出簇集的x和y的均值,均值点就是新质点),然后循环2,3步操作,直到每个点不再改变为止。
DBSCAN算法
介绍: 该算法是一个聚类算法,和Kmeans不同的是,该算法通过密度来判断是否是簇集。指定一个半径和一个阈值,我们就可以判断一个点是否是核心点(在该点半径范围内的圆形区域里,点的数量大于阈值的就是核心点),如果一个点和核心点直接连接的称为直接密度可达,如果是通过其他点串行间接连接的称为密度可达,两个有同一个核心点且密度可达的点称为密度相连,如果核心点相连到最后不能再连接的点称为边界点,不属于任何一个簇的点称为噪声点(离群点)。
优劣势: 优点是不需要决定划分几个类;能够区分复杂的图形;缺点则是较为复杂,执行慢;依然要自己决定半径和阈值的参数。
公式:
1. 首先确定阈值,然后决定半径,接下来就是广度优先算法的事情了,循环遍历所有点,找到未被遍历过的点。
2. 然后根据公式判断该点是否是核心点,如果是则将范围内的所有点加入容器中,然后遍历该容器的点,找到其密度可达的点又加入该容器,直到密度可达的点都找到。
3. 退出循环,得到一个簇集,再次遍历找一个未被遍历的点执行上面内容,直到所有点都被遍历,最后得到不同的簇集分类。
决策树算法
介绍: 决策树其实就是一颗多叉树或者二叉树,每个叶子节点就是数据,除叶子节点外的节点都是特征判断节点,将样本通过根节点然后一步一步划分到叶子节点下,这样就能分类,而且也能回归,例如:我们可以将一个人通过年龄和性别这两个特征区分成不同的类。但是这个算法比较困难的就是如何选择特征,知道特征,让哪个特征排在前,如何构成树。如果是解决回归问题则是使用方差的方式,不是熵。
熵: 熵值是一个衡量数据集合里随机变量的不确定性值,也就是混乱值,越大则越混乱。信息增益是特征Z使得类熵减少的程度,但是这个是信息增益无法解决特殊的特征,所以后面迭代出了gini系数和信息增益率方法。

预剪枝和后剪枝: 如果一直对于树不加管理,那么就会导致特征无限增加,叶子节点一直增加,导致过于拟合,反而不太有利,所以就需要限制特征数,或者树的深度,叶子节点树等等,对于这些限制操作可以在创建树的调整,也可以创建完树后调整,前者称为预剪枝,后者称为后剪枝。

公式:
1. 首先算出样本数据的原始熵值,然后再对不同的特征分类后的数据集合计算熵值,选择最好的特征划分作为根节点。(例如将Z样本用特殊划分为3类A,B,C,我们通过公式计算出三个各自的熵值,然后将熵值乘上各自的概率再累加就是最终的熵值)
2. 找到根节点后,再循环操作依次找到特征节点在不同的节点位置。
BP神经网络
介绍: BackPropagation神经网络(反向传播神经网络),是一个前向型神经网络,是机器学习的一种算法。
参数意义: X代表了输入特征,Y代表了输出目标,δ代表误差值,W代表权重,F(x)代表激活函数 ,O代表初始权值,N代表学习率
算法逻辑:
1. X1到Xn代表了n个不同的输入参数,每个参数都有一个自己的W1到Wn的权重,这些权重值会通过分布算法,由程序随机赋值且值很小,神经网络有很多个神经元,每个神经元则是代表了一种计算的过程,神经网络还具有不同的层级关系,被称为隐含层,每层神经元逐级递减,直到最后层为一个神经元作为唯一输出。
2. 第一层里每个神经元需要所有的输入作为参数参与计算,通过权重W和X值的乘积减去初始权值的结果累加和算出结果(公式:Σ(XW - O)),该结果作为F(x)的输入参数进行计算得到输出Y,按照该方法计算完第一层所有神经元
3. 由于第一层有多个输出Y,第二层里又将这些Y作为输入,像第一层一样算,得到第二层的输出Y,然后每层递归计算所有的神经元,直到最终结果Y(猜测是广度优先算法)
4. 将期待结果Z减去最终结果Y得到误差值δ,如果误差值在阈值内则停止计算,否则将误差值返回给上一层,进行权值调整,上一层神经元的误差就是下一层所有的神经元权重乘以各自的误差值的总和(公式:ΣWδ)
5. 直到计算到第一层隐含层,然后对每个输入特征的权值进行修改,包括当前隐含层作为下一层隐含层输入特征时的权重也要修改(公式:W原 + Nδ(激活函数微分) ),结果作为新的权值,然后进行第二次的迭代计算,知道误差值在阈值之内。
常见的激活函数:
- 线性函数:y = k*x + c
- 分段函数:y = [T, (x>c); k*x, (|x|<c); -T, (x<-c)]
- 阈值函数:y = [1, (x>=c); 0, (x<c)]
- S型函数(sigmoid,该函数必须是可导函数):公式比较复杂且多样,但是总的来说就是需要函数的导数,在自变量趋于负无穷的极限和正无穷的极限都要等于无穷小或者0才行。
- 双极S型函数(该函数必须是可导函数):与S型函数一样,但是对S型函数做了平移和伸缩。
神经网络分类:
6. 按连接方式:前向神经网络,反馈(递归)神经网络
7. 按学习方式:有导师学习神经网络,无导师学习神经网络
8. 按实现功能:拟合(回归)神经网络,分类神经网络
数据归一化: 由于样本数据有些时候会存在非常大的差异,导致微小的样本数据被无视掉,所以需要归一化处理(公式:y=(x - min)/(max - min) 或者 y=[2(x - min)/(max - min)] - 1 )。
学后思考: 其实调整权值的算法就是基本微分公式(△y=f(x+△x)-f(x)=f’(x)·△x+o(△x))的使用,Nδ作为△x,这样通过不断的求出近似值,逐渐逼近真实解。
RBF神经网络
介绍: Radial Basis Function神经网络(径向基函数神经网络),也是一个前向型神经网络,使用了径向基函数作为激活函数,常用于函数逼近和分类问题。
算法逻辑:
1. 首先输入样本和连接权值样本一起计算出样本的欧几里得距离,然后通过与阈值点乘后获得结果作为神经元的激活函数输入参数,然后神经元会输出一个该样本与中心相似度的一个数值。
2. 将神经元输出数值经过例如最小二乘法等算法的权重调整后,然后将结果线性组合,生成最终的输出结果。

径向基函数函数: ϕ(∥x−c∥)=exp(−γ∥x−c∥^2 ) :∥x−c∥代表x到c的欧几里得距离,x是输入向量,c是径向函数中心,γ是用户定义的常数,决定了函数的宽度。图象呈现中心点径向对称且衰减的非负线性函数,大概就是一个山峰的形状,对称轴是y轴,且中心的为最大值。
学后思考: 虽然不复杂,但是其中的连接权值最初如何得来,中心如何确认是一个疑问。选择中心通常使用K-means聚类算法,也有使用随机的,而连接权重最开始也是随机分配的一个较小值,然后通过不断学习调整权重。最小二乘法的几何意义就是在一个平面或者空间里,求出一条直线或者平面,让样本集的每个数据点到该直线的垂直距离平方和最小,这样就能拟合一个函数去预测结果。
GRNN神经网络
介绍: Generalized Regression Neural Network神经网络(广义回归神经网络),是径向基神经网络的一种,其理论基础是非线性回归,该算法和RBF神经网络差不多,但是RBF是基于连接权值的距离决定中心,但是有种情况就是分布不均,但是刚刚好有个样本数据在中心点,这样就导致结果偏差较大,而GRNN则是解决这个问题的。
算法逻辑:
1. 和BRF一样,只是在输出层多了一个转换的公式。

参考链接
机器学习算法matlab使用视频 :https://www.bilibili.com/video/BV1Yt4behECw?spm_id_from=333.788.videopod.episodes&vd_source=218f8df18be38a75f641ed51108012a9&p=4
机器学习算法理论视频 :https://www.bilibili.com/video/BV1LsmPYFENP?spm_id_from=333.788.videopod.episodes&vd_source=218f8df18be38a75f641ed51108012a9&p=2
rbf,grnn,pnn :https://blog.csdn.net/weixin_30491641/article/details/95073941
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)