机器学习常用算法

  • 机器学习算法
    • 监督学习(通过已有的一部分输入数据和输出数据之间的相应关系,生成函数,从输入映射到合适的输出,如分类)
      • 线性回归(Linear Regression)
        • 利用数理统计中的回归分析,来确定两个或以上变量之间相互依赖的变量关系的一种统计分析方法,只有一个自变量和一个因变量,两者之间的关系可以用线性表示,该回归分析为一元线性回归,若包括两个及以上的自变量,自变量和因变量之间是线性关系,则为多元线性回归
        • y’=w’x+b
        • 损失函数:使用均方差(Mean square deviation,MSE),计算预测值和真实之间的距离
        • 优化器
          • 使用最小二乘法
            • 对均方差求偏导(此时将y’-y里面的y’带入),对w求偏导,对b求偏导,令对w的偏导为0,b的偏导为0,求出最优解
          • 梯度下降
            • 对自变量不断更新,针对偏导,使目标函数不断的趋近于最小值
      • 逻辑回归(Linear Regression)
        • 为解决二分类问题,在线性回归的基础上构造一种分类模型,最简单的即为阶跃函数,在线性回归模型的输出值套上一个函数进行分割,大于z判定为1,小于z判定0
        • 常见的函数
          • 阶跃函数
            • 不连续不可微,在线性回归模型的输出值进行分割,大于z判定为1,小于z判定0,分段函数,且定义域内均为常数
          • sigmoid函数
            • y=1/(1+e^(-z));以0.5作为阈值,0-0.5和0.5-1两部分
            • 任意阶可微,并且利用LR模型拟合z=wx+b这条直线,并且将这条直线将原始数据划分为两个类别
          • 损失函数:对数损失logloss,L=-[ylog(y’)+(1-y)log(1-y’)],当y为1,即:-log(y’);当y为0,即:-log(1-y’)
          • 优化器
            • 使用梯度下降
              • 对自变量不断更新,针对偏导,使目标函数不断地趋近于最小值
            • 其他
              • Newton Method(牛顿法)
              • Conjugate gradient method(共轭梯度法)
              • Quasi-Newton Method(拟牛顿法)
              • BFGS Method
              • L-BFGS(Limited-memory BFGS)
              • BFGS由牛顿法引申出,不需要手动选择步长,比梯度下降算法快,但是缺点是算法复杂,不如梯度下降实用
      • 支持向量机(Support Vector Machine,SVM)
        • 一般化线性分类器,能够同时最小化经验误差和最大化几何边缘区,也称最大边缘区分类,目的即寻找最优分割面,使分类间隔最大(最优分割面求解原则:最优决策面能够容忍更多的噪声,所有样本与分割的超平面的距离尽可能的远,最差的样本(离超平面最近的样本)离分割超平面尽可能远)
        • 最优化(优化对象决策面)
          • 将y=ax+b进行转换和向量化,(wT)x+r=0,w=[w1,w2]T,x=[x1,x2]T,该式子总,w和r分别代表了法向量和截距,推广到n维空间就是分别为n个w和n个x的向量方程,分类后分别是在两侧,(wT)x+r=(1)or(-1)
          • 分类后,两侧样本点之间距离为支持向量机的样本点到单侧的二倍
          • d=|(w^T)x+r|/||w||,d为间隔,||w||为二范数,即根号下(w1+w2),所有元素的个平方和开根号
          • 对其优化即距离最大,距离为2d,即对d求最大化
        • 对于线性SVM优化
          • 对d进行最大化,支持向量机满足(wT)x+r=1,即d=1/||w||,w的最小化问题(min(1/2)(||w||)2)
        • 最优化的前提是凸函数,但是会出现局部凸的情况
          • 无约束优化问题
            • 费马大定理(Fermat),即使用求取函数f(x)的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。这也就是我们高中经常使用的求函数的极值的方法。
          • 有等式约束优化问题
            • 拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束h_i(x)用一个系数与f(x)构成拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。对于多约束条件,加入k个拉格朗日橙子,而后各个变量求导为0
          • 有不等式约束优化问题
            • KKT条件。同样地,我们把所有的等式、不等式约束与f(x)写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。
          • 求解可使用(优化方法)
            • 内点法
            • 序列最小化(Sequential Minimal Optimization, SMO)
              • 初始化所有的拉格朗日乘子
              • 识别一个不满足KKT条件的乘子
              • 反复执行,直到所有乘子满足KKT条件或参数更新量小于设定值
            • 随机梯度下降
        • 优缺点
          • 可用于线性和非线性分类,也可用于回归,泛华错误率低,具有良好的学习能力
          • 可解决小样本下的机器学习问题,可以解决高纬问题,可避免神经网络结构选择和局部极小点问题
          • 是最好得现成分类器,不需要修改可以直接使用且错误率低
          • 缺点:对参数调节和函数的选择敏感
      • bagging和boost算法
        • 弱分类器:分类能力不强,但比随机选择好
        • 强分类器:具有较强的分类能力,把特征扔给他,分类更准确点
        • boost和bagging都可构建弱分类算法,形成弱分类器,然后将得到的粗糙的分类规则,组合形成强分类规则
        • boost
          • 通常采用改变训练数据的概率分布,针对不同的训练数据,调用弱学习算法学习一组弱分类器,在多次迭代中,当前迭代所使用的训练数据概率分布会根据上次迭代结果而调整,也就意味着训练样本中的权重会随着迭代进行调整(Di为训练数据集的概率分布,第一次迭代基本分类器C1的分类误差用于调整D2,基本分类器C2分类误差用于调整D3,依次类推),最后不同分布的训练数据进入不同学习法则后,得到的基本分类器经过线性组合后形成一个强分类器
        • bagging算法(增强聚合)
          • 训练几个分类器,然后让这个分类器输出当做分类投票,投票数最多的输出作为最终输出
          • 特点
            • 对每个分类器,输入数据都是从原始数据中可重复采样的,每个分类器服从相同的分布,且输入之间独立;boost之间各训练数据分布不独立,分类器输入样本之间不独立
            • 各分类器可采用相同的算法,不同的超参数,也可采用不同的算法 ;boost基本上采用相同的算法
            • 每个分类器的输出没有权重之分,都是平等的
      • 朴素贝叶斯
        • 贝叶斯公式
          • P(A|B)=(P(B|A)P(A))/P(B)
        • 全概率公式
          • P(A|B)=(P(B|A)P(A))/(P(B|A)P(A)+P(B|A’)P(A’))
        • 推断
          • 后验概率=先验概率*调整因子
          • 先预估一个先验概率,加入实验结果后看这个实验是增强了还是减弱了先验概率,由此能得到更接近事实的后验概率,找到可能性最大的那个选项
          • 以自变量之间相互独立,连续变量正态性假设为前提,会导致算法经度在一定程度上受到影响
          • y=arg maxP©(P(Xi|c)乘积)
        • 流程
          • 数据预处理,获取训练样本
          • 估计每个类别出现的概率
          • 估计每个类别条件下每个属性值出现的概率
          • 对每个属性组合计算其所属于每个类别的概率
          • 选择最大概率值作为该条数据的推测结果输出
        • 应用中
          • 若任务对预测速度要求较高,对给定的训练集,可以将朴素贝叶斯分类器涉及到的所有概率估值事先计算好并保存起来,预测时候只需要调用
          • 若任务数据更新频繁,可以采用“懒惰学习”方式,不进行任何训练,待收到预测请求后再根据当前的数据集进行概率估值
          • 若数据不断增大,在现有估值的基础上,仅对新增样本的属性值所涉及的概率估值进行计数修正即可实现增量学习
      • 决策树
        • 由节点和有向边构成,有一个根节点,若干内部节点和叶节点,内部节点表示一个特征或者属性,叶节点表示一个类别,相当于多层的if-else,由于只使用if-else对特征属性进行判断,所以一般特征属性为离散值,即使连续值也会对其进行离散化处理(二分法)
        • 优点:易于理解和实现;对数据的准备简单,能够同时处理数据型和常规型属性,在较短的时间内能够对大型数据源做出可行且效果良好的结果;易于通过静态测试对模型进行评测,测定模型可信度
        • 缺点:对连续的字段比较难预测;对有时间顺序的数据,需要很多的预处理方案;当类别太多时,错误会增加的更快,一般算法分类的时候,只能根据一个字段来分类
        • 算法历程比较(时间依次递增)
          • CART,支持分类和回归模型,树结构为二叉树, 支持连续值处理,支持缺失值,支持剪枝,特征选择(基尼系数(分类树)和均方差(回归树))
          • C4.5,支持分类模型,树结构为多叉树,支持连续值处理,支持缺省值,支持剪枝,特征选择(信息增益比)
          • ID3,支持分类模型,树结构为多叉树,不支持连续值处理,不支持缺省值,不支持剪枝,特征选择(信息增益)
          • 信息增益表示得知特征值Xj的信息,从而使所属分类的不确定性减少的程度,信息增益越大,意味着使用属性A进行划分所获得的“纯度提升”更大;信息增益比是信息增益与训练集的经验熵之比,为了矫正数据集经验熵大时,信息增益偏高,反之偏小,所以先从候选划分属性中找出信息增益高于平均水平的属性,再选择增益率最高的;基尼指数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好
        • 流程
          • 特征选择,决策树生成,决策树修剪,主要是划分最优属性,使得决策树的分支节点包含的样本属于同一个类别
        • 剪枝
          • 是决策树学习算法中避免过拟合的一个主要手段
          • 为了尽可能正确的训练样本,节点划分不断重复,导致决策树分支过多,导致可能会将训练集自身的一些特点当做所有训练集的一个都具有的一般性质而导致过拟合,所以通过主动裁剪部分分支避免过拟合
          • 预剪枝
            • 决策树生成以前,对每个节点在划分前进行预估计,如果不能对决策树带来性能上的提升,则停止划分,该节点作为叶节点
          • 后剪枝
            • 已经训练生成了一个完整的决策树,自顶向下对非叶节点进行考察,如果说该节点的子节点替换称为叶节点能够使决策树的性能得到提升,则该子树作为叶节点
        • 优点
          • 速度快,计算量相对较少,容易转化为分类规则
          • 准确度高
          • 可以处理连续和种类字段
          • 不需要任何领域知识和参数假设
          • 适合高维数据
        • 缺点
          • 容易过拟合
          • 忽略属性之间的相关性
          • 对于各类样本数量不一致的数据,信息增益偏向于更多数值的特征
      • 随机森林(Random Forest,RF)
        • 传统决策树在划分属性的时候,在当前节点的属性集合中选择一个最优解(假设有d个属性)
        • 在随机深林(RF)中,对基决策树中的每个节点,先从该节点中随机选择出一个包含了k个属性的子集,然后从这个子集中选择一个最优属性用于划分,k控制了随机性的引入程度,若k=d,则基决策树的构建同传统决策树,若为1,随机选择一个属性用于划分,推荐k=(log2)d
        • 随机深林起始性能相对较差,因为引入属性的扰动,随机深林中个体学习器的性能会有所降低,随着个体学习器的增加,随机深林通常收敛到最低的泛化误差,训练效率高于bagging,bagging使用确定型的决策树,划分属性的时候对节点全部属性进行考察,随机深林只考察一个属性子集
        • 优点
          • 能够处理很高维度(feature(特征)很多)的数据,无需进行特征选择,原因:特征子集是随机选择的,自己大小可以控制
          • 训练后,能给出feature重要大小
          • 训练速度快,容易做成并行化方法,原因:树与树之间相互独立
          • 即便有一部分特征遗失,依旧可以保证准确度
        • 缺点
          • 在某些噪点较大的分类和回归问题上会过拟合
          • 对于有不同取值的属性数据,取值划分属性会对随机深林产生较大的影响(可以采用信息增益比矫正),所以随机深林在这种数据上产出的属性权值不可信
      • 全梯度下降树(GBDT)
        • 通过采用加法模型,以及不断的减少训练过程产生的残差来达到将数据分类或回归的算法
        • 训练过程
          • 通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练,对弱分类器的要求一般是足够简单,并且是低方差和高偏差,通过不断的降低偏差不断提高精度
    • 非监督学习(直接对数据集进行建模)
      • 主成分分析(PCA)
        • 将n维特征映射到k维,k维是全新的正交特性称为主成分。PCA的工作就是从原始空间中顺序地找一组相互正交的坐标轴,新坐标轴的选择与数据本身密切相关;第一个坐标轴选择原始数据中方差最大的方向,第二坐标轴选取与第一坐标轴正交的平面使得方差最大,第三坐标轴选取与1.2坐标轴正交平面方差最大的,大部分方差包含在前k个坐标轴中,后面坐标几乎为0,所以保留前k个,忽略为0的,保留前k项,完成数据降维
        • 得到协方差矩阵的特征值向量两种方法
          • 特征值分解协方差
          • 奇异值分解协方差
          • 所以PCA算法实现有基于特征值分解协方差实现PCA算法和基于SVD分解实现PCA算法
      • 聚类
        • K-Means算法
          • 将相似的对象归到同一个蔟中,簇中的对象越相似,聚类的效果越好;和分类不同的是,分类是事先已知,而聚类结果和分类一致只是类别未定义
          • 目的:使每个样本与所在簇的质心的均值的误差平方和达到最小
          • 优点:容易实现;缺点:可能收敛到局部最小值,在大规模数据上收敛慢,适合数值型数据
          • 过程:创建k个点作为k个簇的起始质点;计算剩下的元素到k个簇中心的距离(相异度),将这些元素分别划到距离(相异度)最低的簇;计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均值;将全部元素按照新的中心重新聚类;重复执行上一步,直到聚类结果不变
          • 缺点:K值需要事先定义,不容易定义;初始聚类中心不同可能会导致不同的聚类结果不能保证收敛于全局最优解(解决方案:二分K-means算法:所有点看做一个簇,然后一分为二,找到最小SSE的簇类质心{簇内误差平方和(within-cluster sum of squared errors,SSE)最小,也叫簇惯性(cluster intertia)};重复此操作,根据SSE进行判断);对离群点敏感;结果不稳定;时间复杂度高O(nkt)(n是对象总数,k是簇数,t是迭代次数)
          • 如何确定初始质心
            • 随机选择一个点作为初始类簇中心点,然后找距离它最远的点作为第二个初始类簇中心点,再找距离这两个中心点最远的点作为第三个初始类簇中心点依次类推
            • 使用层次聚类或canopy算法作为初始聚类,然后利用这些类簇的中心点作为初始类簇中心点
          • 聚类扩展
            • 密度聚类、层次聚类
      • k近邻法(k-nearest neighbor, kNN)
        • 存在样本数据集,特征属性已知,并且样本集中每个对象都已知所属分类,对不知道的分类待测对象,将待测对象的每个特征属性和样本集中数据对应的特征属性进行比较,提取最相近对象的标签。一般只选择样本数据中前k个最相似的对象数据,一般k为不大于20的整数
        • 三要素:k的选取(一般选比较小的值,选用交叉验证取最优解);距离度量{L§的距离},欧式距离和曼哈顿距离;分类决策规则,一般选用多数表决
        • 基本步骤
          • 计算待测对象和训练集中每个样本点的欧式距离
          • 对上面的所有距离值排序
          • 选出k个最小距离的样本作为“选民”
          • 根据“选民”预测待测样本的分类和值
        • 特点:原理简单,保存模型需要保存所有的样本集,训练过程很快,预测速度很慢
        • 优点:简单可用于非线性分类,数值型数据和离散型数据,对异常值不敏感,准确度高
        • 缺点:计算复杂度高,空间复杂度高,需要大量内存,数值很大的时候会导致计算量太大,单个样本也不能太少,容易误分
    • 半监督学习(综合利用有类标的数据和没有类标的数据,来生成合适的分类函数)
  • 归一化
    • 模型在各个维度上进行不均匀伸缩后,最优解与原来等价,如LR;不等价如SVM;但由于实际求解过程中使用迭代算法进行求解,如果目标函数形状“扁”,迭代算法可能收敛的慢甚至不收敛
    • 好处
      • 提升模型的收敛速度(【注】对于窄长的椭圆形,梯度方向为垂直于等高线方向走之字形,迭代会很慢,归一化后变快)
      • 提高模型的精度
    • 方法
      • 线性归一化(Min-Max Scaling)(把输入数据转化到[0,1]范围内)
        • X=(X-Xmin)/(Xmax-Xmin);即该值减最小值除以最大值减最小值
      • 0均值标准化(Z-Score Normalization)
        • 原始数据集化为均值为0,方差为1的数据集,将特征映射到标准正态分布上,要求原始数据是正态分布
        • z=(x-μ)/α,u代表原始数据均值,α代表方差
  • 泛华误差
    • 实际预测输出和新样本的真实输出之间的误差
  • 训练误差或经验误差
    • 实际预测输出和训练样本的真实输出之间的误差
  • 欧式距离
    • 根号下{前n项和(Xi-Yi)^2}
    • 缺点:将样本中不同属性之间的看做相同的属性,导致不能满足预计输出
  • 曼哈顿距离
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锋年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值