线性回归、逻辑回归、RNN、CNN、KNN、SVM算法总结

常见的监督学习:线性回归、决策树、朴素贝叶斯分类、最小二乘法、逻辑回归、支持向量机、集成方法
常见的无监督学习:聚类算法、主成分分析、奇异值分解、独立成分分析。
常用的分类器包括SVM、KNN、贝叶斯、线性回归、逻辑回归、决策树、随机森林、xgboost、GBDT、boosting、神经网络NN。
常见的降维方法包括TF-IDF、主题模型LDA、主成分分析PCA等等
常用的回归技术:线性回归、多项式回归、逐步回归、岭回归、套索回归、ElasticNet回归(是套索回归和岭回归技术的混合体)

线性回归

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w’x+e,e为误差服从均值为0的正态分布。
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
优点:结果具有很好的可解释性(w直观表达了各属性在预测中的重要性),计算熵不复杂。
缺点:对非线性数据拟合不好
适用数据类型:数值型和标称型数据
单变量线性回归
模型:
ho(x) = θo + θ1x
代价函数:
误差平方和
E=h-y
1.0/2me.T.dot(e)
梯度下降求参数:
△theta=1.0/2
mx.T.dot(e)
正规方程求参数:
△theta=(x.T.dot(x))ˉ¹.dot(x.T.dot(y))
多变量线性回归
模型:
hθ(X)=θo+θ1X1+θ2X2+θ3X3 +θ4X4
代价函数: 误差平方和
E=h-y
1.0/2m
e.T.dot(e)
批量梯度下降:
△theta=1.0/2mx.T.dot(e)
数据预处理:
标准缩放:
meanx=np.mean(x,axis=0)
Sigma=np.std(x,axis=0,ddof=1)
Sigma:方差 ddof为自由度
(x-meanx)/sigma
归一缩放:
(x-minx)/(maxx-minx)
准确率计算:
U=Sum((y-h)**2)
V=sum((y-y.mean())**2)
1-u/v
优点:
多变量线性回归适用于所有数据,可以使用曲线来拟合数据
也可以使用正规方程,详见:1.单变量线性回归
通过特征缩放降低特征间数值都处在一个相近的范围,减小误差
多项式可以转回多变量线性回归问题进行求解

逻辑回归

逻辑回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。逻辑回归从本质来说属于二分类问题。
模型:
Z=x.dot(theta)
H=sigmoid(z)
代价函数:
交叉熵代价:
在这里插入图片描述
该代价函数是一个凸函数,所以没有局部最优值,只是接近
随机梯度下降:
△theta=1.0/2mx.T.dot(e)
代价对theta求偏导
数据预处理:
标准缩放:
meanx=np.mean(x,axis=0)
Sigma=np.std(x,axis=0,ddof=1)
Sigma:方差 ddof为自由度
(x-meanx)/sigma
归一缩放:
(x-minx)/(maxx-minx)

RNN:

RNN的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。
RNN有一个缺陷:随着时间距离的增大,RNN会丧失联系距它很远信息的能力

LSTM 可以解决RNN无法处理长距离的依赖的问题
短时记忆
RNN 会受到短时记忆的影响。如果一条序列足够长,那它们将很难将信息从较早的时间步传送到后面的时间步。 因此,如果你正在尝试处理一段文本进行预测,RNN 可能从一开始就会遗漏重要信息。
在反向传播期间,RNN 会面临梯度消失的问题。 梯度是用于更新神经网络的权重值,消失的梯度问题是当梯度随着时间的推移传播时梯度下降,如果梯度值变得非常小,就不会继续学习。
遗忘门
遗忘门的功能是决定应丢弃或保留哪些信息。来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。
输入门
输入门用于更新单元状态。首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。
输出门
输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息。首先,我们将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的单元状态传递给 tanh 函数。最后将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前单元的输出,把新的单元状态和新的隐藏状态传递到下一个时间步长中去。

其次还要将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。
总结:LSTM 网络的控制流程就是几个张量和一个 for 循环。还可以使用隐藏状态进行预测。结合这些机制,LSTM 能够在序列处理中确定哪些信息需要记忆,哪些信息需要遗忘。遗忘门确定前一个步长中哪些相关的信息需要被保留;输入门确定当前输入中哪些信息是重要的,需要被添加的;输出门确定下一个隐藏状态应该是什么。
LSTM 和 GRU 是解决短时记忆问题的解决方案,它们具有称为“门”的内部机制,可以调节信息流。这些“门”可以知道序列中哪些重要的数据是需要保留,而哪些是要删除的。 随后,它可以沿着长链序列传递相关信息以进行预测,几乎所有基于递归神经网络的技术成果都是通过这两个网络实现的。
LSTM 和 GRU 可以在语音识别、语音合成和文本生成中找到,你甚至可以用它们为视频生成字幕。
GRU
知道了 LSTM 的工作原理之后,来了解一下 GRU。GRU 是新一代的循环神经网络,与 LSTM 非常相似。与 LSTM 相比,GRU 去除掉了单元状态,使用隐藏状态来进行信息的传递。它只包含两个门:更新门和重置门。
更新门
更新门的作用类似于 LSTM 中的遗忘门和输入门。它决定了要忘记哪些信息以及哪些新信息需要被添加。
重置门
重置门用于决定遗忘先前信息的程度。
这就是 GRU。GRU 的张量运算较少,因此它比 LSTM 的训练更快一下。

CNN:

卷积神经网络。在机器学习中,卷积神经网络是一种深度前馈人工神经网络,已成功地应用于图像识别。

通过提取图像特征,获取图像的信息,并通过减小图像的尺寸,减少输入参数的一种深度学习算法,对于图像处理有出色表现
卷积神经网络,是一种前馈神经网络,人工神经元可以响应周围单元,可以进行大型图像处理。卷积神经网络包括卷积层和池化层。
卷积神经网络包括一维卷积神经网络、二维卷积神经网络以及三维卷积神经网络。一维卷积神经网络常应用于序列类的数据处理;二维卷积神经网络常应用于图像类文本的识别;三维卷积神经网络主要应用于医学图像以及视频类数据识别。
Padding: same和valid
Valid: 用过滤器在输入的矩阵中按步长移动时候,会把最后的不足部分的列和行抛弃;
Same: 先在输入矩阵上下各加个值为0的行,在左右各加个个值为0的列,也就是用0把原先的矩阵包裹一层,然后在移动的时候如果输入矩阵的列或者行长度不够,就用0来补齐

卷积神经网络结构
输入层,用于数据的输入。
卷积层(Convolutional layer),抽取图像特征
激活函数(Activation function),进行非线性整合
池化层(Pooling layer),减小特征图空间尺寸
全连接层( Fully-Connected layer),将图像展开,进行分类操作
输出层,输出最终结果

池化层一般分为最大池化(max pooling)和平均池化(mean pooling)。
池化层的最常见形式是最大池化。

全连接的功能
全连接层可以用来将最后得到的特征映射到线性可分的空间,通常,卷积神经网络会将末端得到的特征图平摊成一个长的列向量,经过全连接层的计算得到最终的输出层。
全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。
连接所有特征,将所有特征传递给具体的分类器进行分类或者回归处理,一般都使用的softmax激活函数将最终的输出量化。

准确率=正确预测正负例的个数/总个数
精确率(精准率,查准率)=正确预测正例的个数/实际正例的个数 [命中率=正确预测正的个数/预测正的个数]
覆盖率(又叫召回率,查全率) =正确预测正例的个数/正确预测正负例的个数
F1分数(平衡F分数)=2(精准率*召回率)/(精准率+召回率) 即:精准率和召回率的调和平均数
AUC值是ROC曲线下面的面积
ROC曲线曲线越接近左上角,模型越好
贝叶斯:
条件概率:(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”
联合概率:表示两个事件共同发生的概率。A与B的联合概率表示为或者
边缘概率:又称先验概率是某个事件发生的概率。
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法
线性回归:一般用来做连续值的预测,预测结果为一个连续值
逻辑回归:是处理二分类问题。为了实现逻辑回归分类器,我们可以在线性回归的基础上。添加一个sigmoid函数,进而得到一个范围在0~1之间的数值。任何大于0.5的数据会被分为1类,小于0.5即被分为0类。得到sigmoid函数,简单来说,是为了将标签归类为[0,1]的范围内
优点:

  1. 实现简单
  2. 分类是计算量小,速度快,存储资源低
    缺点:
  3. 容易欠拟合
  4. 只能处理二分类问题(softmax可以用于多分类),且必须现性可分
    决策树
    顾名思义,是一种树,一种依托于策略抉择而建立起来的树。机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。
    分类树:
    输出叶子节点中所属类别最多的哪一类
    回归树:
    输出叶子节点中各个样本值的平均值
    理想的决策树:
  5. 叶子节点数量尽量少
  6. 叶子节点的深度尽量小(太深可能会过拟合)
    解决决策树的过拟合:
  7. 剪枝
    a) 前置剪枝:在分裂节点的时候设计比较苛刻的条件,如不满足则直接停止分裂(这样干决策树无法到最优,也无法得到比较好的效果)
    b) 后置剪枝:在树建立完之后,用单个节点代替子树,节点的分类采用子树中主要的分类(这种方法比较浪费前面的建立过程)
  8. 交叉验证
  9. 随即森林
  10. 优点:
  11. 计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;
  12. 分类精度高;
  13. 生成的模式简单;
  14. 对噪声数据有很好的健壮性
  15.  缺点:
    
  16. 	单颗决策树分类能力弱,并且对连续值变量难以处理;
    
  17. 容易过拟合(后续出现了随机森林,减小了过拟合现象)
    ID3, C4.5,CART
    C4.5算法是机器学习算法中的一种分类决策树算法,核心是ID3算法
    C4.5算法产生的分类规则易理解,准确率较高
    ID3算法用信息增益来选择属性
    C4.5算法用信息增益率来选择属性,继承了ID3算法的优点。
    CART决策树使用基尼指数来选择划分属性,基尼值的定义如下:
    直观来说,GIni(D)反映了从数据集D中随机抽取两个样本,其类别标记不一样的概率,因此GIni(D)越小,则数据集D纯度越高。

SVM:

向量的范数可以简单形象的理解为向量的长度,或者向量到零点的距离,或者相应的两个点之间的距离。
中文名叫支持向量机。是一个面向数据的分类算法,基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。
硬间隔支持向量机(线性可分支持向量机):当训练数据线性可分时,可通过硬间隔最大化学得一个线性可分支持向量机。硬间隔支持向量机要求所有的样本均被最佳超平面正确划分
软间隔支持向量机:当训练数据近似线性可分时,可通过软间隔最大化学得一个线性支持向量机。软间隔支持向量机允许某些样本点不满足间隔大于等于1的条件
非线性支持向量机:当训练数据线性不可分时,可通过核方法以及软间隔最大化学得一个非线性支持向量机
常用核函数:
线性核
多项式核
高斯核(RBF)
拉普拉斯核
Sigmoid核
线性分类器和非线性分类器的区别及优劣
线性分类器可解释性好,计算复杂度较低,不足之处是模型的拟合效果相对弱些。
非线性分类器效果拟合能力较强,不足之处是数据量不足容易过拟合、计算复杂度高、可解释性不好。
用的非线性激活函数有sigmoid、tanh、relu等等
常见的线性分类器有:LR,贝叶斯分类,单层感知机、逻辑回归
常见的非线性分类器:决策树、RF、GBDT、多层感知机
SVM两种都有(看线性核还是高斯核)
优缺点:
优点:
1、使用核函数可以向高维空间进行映射
2、使用核函数可以解决非线性的分类
3、分类思想很简单,就是将样本与决策面的间隔最大化
4、分类效果较好
5、在中小量样本规模的时候容易得到数据和特征之间的非线性关系
缺点:
1、对大规模数据训练比较困难
2、无法直接支持多分类,但是可以使用间接的方法来做
3、对缺失数据敏感,对非线性问题没有通用的解决方案,核函数的正确选择不容易,计算复杂度高,主流的算法可以达到的复杂度,这对大规模的数据是吃不消的
过拟合原因:
数据不规范,数据量少,数据穿越,统计特征用到了未来的信息或者标签信息
算法过于复杂
一些假设条件(如样本独立同分布)可能是不成立的
训练样本过少不能对整个空间进行分布估计
解决方案:
1、将数据规范化,处理缺失值,增加数据量,重采样,添加噪声数据
2、正则化,控制模型复杂程度,
3、early stoping,减少迭代次数,减少树的深度,
4、学习率调大/小点、
5、融合几个模型
6、早停止:如在训练中多次迭代后发现模型性能没有显著提高就停止训练
7、交叉验证
8、特征选择/特征降维
9、创建一个验证集是最基本的防止过拟合的方法。我们最终训练得到的模 型目标是要在验证集上面有好的表现,而不是训练集。
L1是拉普拉斯分布,L2是高斯分布
L2先验趋向零周围, L1先验趋向零本身
集成学习主要可以分为三大类,Boosting, Bagging, Stacking。Boosting的代表有AdaBoost, gbdt, xgboost。而Bagging的代表则是随机森林 (Random Forest)。Stacking 的话,好像还没有著名的代表,可以视其为一种集成的套路。Bagging方法有放回地采样同数量样本训练每个学习器, 然后再一起集成(简单投票); Boosting方法使用全部样本(可调权重)依次训练每个学习器, 迭代集成(平滑加权).
Bagging方法: 学习器间不存在强依赖关系, 学习器可并行训练生成, 集成方式一般为投票;
Boosting方法: 学习器之间存在强依赖关系、必须串行生成, 集成方式为加权和;
Xgboost的优点:
1.损失函数是用泰勒展式二项逼近,而不是像gbdt里的就是一阶导数
2.对树的结构进行正则化约束,防止模型过度复杂,降低了过拟合的可能性
3.节点分裂的方式不同,gbdt是用的gini系数,xgboost是经过优化推导后的
分类,就是根据文本的特征或属性,划分到已有的类别中
常用的分类算法包括:
决策树分类法,朴素的贝叶斯分类算法(native Bayesian classifier)、基于支持向量机(SVM)的分类器,神经网络法,k-最近邻法(k-nearest neighbor,kNN),模糊分类法,随机森林,逻辑回归,KNN等等。
KNN算法的优缺点
优点:

  1. 思想简单,易于理解,易于实现
  2. 无需估计参数,无需训练;
  3. 精度高,对异常值不敏感,
  4. 特别适合于多分类问题。
    缺点:
  5. 计算复杂度高,空间复杂度高。
  6. 可解释性差。无法给出决策树那样的规则。
  7. 当样本分布不平衡时,新的样本会归类为主导样本,从而不能更好的接近实际分类结果。
    K-Means优缺点:
    优点:
    计算复杂度
    思想很简单,实际上是一个优化全局MSE(Mean Squre Error)和局部MSE的过程。
    缺点:
    分类结果依赖于分类中心的初始化(可以通过多次K-means取最优来解决)。
    对类别规模差异太明显的数据效果不好。
    同理,K-means对于距离非常近的类别(blobs)的分类效果也不好。
    为何要经常对数据做归一化:
    1)归一化后加快了梯度下降求最优解的速度
    2)归一化有可能提高精度
    3)能不归一化最好不归一化,之所以进行数据归一化是因为各维度的量纲不相同。而且需要看情况进行归一化
    4)有些模型在各维度进行了不均匀的伸缩后,最优解与原来不等价(如SVM)需要归一化
    5)有些模型伸缩有与原来等价,如:LR则不用归一化,但是实际中往往通过迭代求解模型参数,如果目标函数太扁(想象一下很扁的高斯模型)迭代算法会发生不收敛的情况,所以最坏进行数据归一化
    6)其实本质是由于loss函数不同造成的,SVM用了欧拉距离,如果一个特征很大就会把其他的维度dominated。而LR可以通过权重调整使得损失函数不变
    熵:用来表示随机变量的不确定性
    线性分类器可解释性好,计算复杂度较低,不足之处是模型的拟合效果相对弱些。
    非线性分类器效果拟合能力较强,不足之处是数据量不足容易过拟合、计算复杂度高、可解释性不好。
    常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归
    常见的非线性分类器:决策树、RF、GBDT、多层感知机
    SVM两种都有(看线性核还是高斯核)
    随机梯度下降:
    普通的梯度下降算法在更新回归系数时要遍历整个数据集,是一种批处理方法,这样训练数据特别忙庞大时,可能出现如下问题:
    1)收敛过程可能非常慢;
    2)如果误差曲面上有多个局极小值,那么不能保证这个过程会找到全局最小值。
    梯度消失:
    两种情况下梯度消失经常出现,一是在深层网络中,二是采用了不合适的损失函数
    梯度爆炸:
    梯度爆炸就是由于初始化权值过大,前面层会比后面层变化的更快,就会导致权值越来越大,梯度爆炸的现象就发生了。
    如何解决梯度消失和梯度爆炸:
    1、对于RNN,可以通过梯度截断,避免梯度爆炸
      2、可以通过添加正则项,避免梯度爆炸
      3、使用LSTM等自循环和门控制机制,避免梯度消失
    4、优化激活函数,使用 ReLU、LReLU、ELU、maxout 等激活函数
    sigmoid函数的梯度随着x的增大或减小和消失,而ReLU不会。
    如何提升深度学习的性能:
    1. 通过数据提升性能
      1. 通过算法提升性能
      2. 通过算法调参提升性能
      3. 通过嵌套模型提升性能
        随机森林如何处理缺失值:
        1、(na.roughfix)简单粗暴,对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,用中位数补。
        2、(rfImpute)这个方法计算量大,至于比方法一好坏?不好判断。先用na.roughfix补上缺失值,然后构建森林并计算proximity matrix,再回头看缺失值,如果是分类变量,则用没有缺失的观测实例的proximity中的权重进行投票。如果是连续型变量,则用proximity矩阵进行加权平均的方法补缺失值。然后迭代4-6次
        随机森林优缺点:
        优点:
        1.具有极高的准确率
        2.随机性的引入,使得随机森林不容易过拟合,而且使得随机森林有很好的抗噪声能力
        3.能处理很高维度的数据,并且不用做特征选择
        4.既能处理离散型数据,也能处理连续性数据,数据集无需规范化
        5.训练速度快,可以得到变量的重要性排序
        6.容易实现并行化
        缺点:
        当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
        随机森林的构建过程大致如下:
        将生成的每棵决策树组成随机森林。对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果。

你可能感兴趣的:(算法)