机器学习算法基础

监督学习对于有标签的特定数据集(训练集)是非常有效的,但是它需要对于其他的距离进行预测。

无监督学习对于在给定未标记的数据集(目标没有提前指定)上发现潜在关系是非常有用的。

强化学习介于这两者之间—它针对每次预测步骤(或行动)会有某种形式的反馈,但是没有明确的标记或者错误信息。

半监督学习是一种有监督学习和无监督学习想结合的一种方法,其主要思想是基于数据分布上的模型假设,利用少量的已标注数据进行指导并预测未标记数据的标记,并合并到标记数据集中去。

目录

一、监督学习

(一)分类(离散)

1.KNN

2.决策树

3.贝叶斯

4.Logistic回归

5.SVM支持向量机

6.AdaBoost元算法

7.随机森林

8.人工神经网络(Artificial Neural Networks,ANN)  

(二)回归(连续)

1.线性回归

2.非线性回归(树回归)

二、无监督学习

(一)聚类

1.K-means方法

(二)降维

1.主成分分析(Principal Component Analysis,PCA)

2.奇异值分解(Singular Value Decomposition,SVD)

(三)关联规则

1.Apriori

2.FP-Growth

(四)隐马尔可夫模型(HMM)

三、强化学习

(一)Q-Learning

(二)时间差学习


一、监督学习

(一)分类(离散)

1.KNN

  1. 有监督学习
  2. 存在一个训练数据集,每条数据存在标签即所属分类已知
  3. 将训练数据集按9:1划分训练:测试数据,验证算法错误率
  4. 输入没有标签的完整数据,根据每个特征与训练数据集中对应特征计算相似度(欧氏距离,皮尔逊相关系数,余弦相似度等)
  5. 提取相似度最高的前k条数据,对特征值进行归一化处理
  6. 返回前n个最相似的标签作为输入数据的标签

2.决策树

  1. 类似流程图,终止节点即为分类结果
  2. 首先测量数据集中的数据不一致性,称为信息熵
  3. 信息熵越大表明数据越混乱
  4. 得到熵最小的分类方案
  5. 递归计算熵,构建一颗完整的树形流程图

应用场景:

大部分情况下决策树是评估作出正确的决定的概率最不需要问是/否问题的办法。它能让你以一个结构化的和系统化的方式来处理这个问题,然后得出一个合乎逻辑的结论。

3.贝叶斯

  1. 基于概率论,P(A|B)P(B)=P(B|A)P(A)
  2. 通过已发生事件的概率推测未发生事件发生的概率
  3. 数据集中一个词出现的概率与其他词无关,这是一种独立性假设,也是朴素的含义
  4. 根据独立性假设,对一篇已知类别的训练文档计算一个词出现的次数占总词数量的比例,即为该词出现在该文档的概率
  5. 最终根据概率将新文档放入相应的类别

应用场景:

将一封电子邮件标记(或者不标记)为垃圾邮件

将一篇新的文章归类到科技、政治或者运动

检查一段文本表达的是积极情绪还是消极情绪

脸部识别软件

4.Logistic回归

  1. 根据现有数据对分类边界线建立回归公式
  2. 一种最优化算法,即最佳拟合
  3. 寻找一个非线性函数Sigmoid的最佳拟合参数
  4. 梯度上升法,如果要找一个函数的最大值,最好沿着梯度去找
  5. 即在x轴和y轴上分别偏导后等于零求出驻点获取极值
  6. 如果加法变为减法,则为梯度下降法,求最小值

æ³äºè§£æºå¨å­¦ä¹ ï¼ä½ éè¦ç¥éçå个åºç¡ç®æ³

应用场景:

信用评分

测试营销活动的成功率

预测某一产品的收入

特定某一天是否会发生地震

5.SVM支持向量机

支持向量机,英文为Support Vector Machine,简称SV机。它是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。

优化目标:决策边界边缘距离最远

æ³äºè§£æºå¨å­¦ä¹ ï¼ä½ éè¦ç¥éçå个åºç¡ç®æ³

  1. 现成的分类器
  2. 输出一个二值决策结果,泛化的错误率较低,可推广性好
  3. 核函数是将非线性问题转换为高维空间下的线性问题来求解

6.AdaBoost元算法

  1. 元算法是对其他算法进行组合的一种方式
  2. 通过将单层决策树作为弱学习器,通过迭代增加权重,即首次权重相同,迭代后根据结果提高正确率高的分类器的权重

7.随机森林

  1. 随机森林是另一种集成多个算法的方式

8.人工神经网络(Artificial Neural Networks,ANN)  

 影响精度的因素:

  1. 训练样本数量
  2. 隐含层数与每层节点数。层数和节点太少,不能建立复杂的映射关系,预测误差较大 。但层数和节点数过多,学习时间增加,还会产生“过度拟合”的可能。预测误差随 节点数呈现先减少后增加的趋势。
  3. 激活函数的影响

 神经网络方法的优缺点:

  1. 可以用统一的模式去处理高度复杂问题
  2. 便于元器件化,形成物理机器
  3. 中间过程无法从业务角度进行解释
  4. 容易出现过度拟合问题

(二)回归(连续)

目的:

  1. 根据连续型数据预测目标值
  2. 构建回归方程,计算回归系数
  3. 回归系数是一组向量,因为输入数据也是向量

1.线性回归

(1)最小二乘法

æ³äºè§£æºå¨å­¦ä¹ ï¼ä½ éè¦ç¥éçå个åºç¡ç®æ³
(2)最小误差法

  1. 通过回归方程计算结果与实际值的误差,调整回归系数
  2. 误差有正负之分,因此使用平方误差来逼近最小误差下的回归系数

(3)局部加权线性回归

  1. 为待预测点附近的点赋予不同的权重
  2. 在子集上做最小均方差进行回归
  3. 为了确定权重,通常采用高斯分布的方法,即越靠近待预测点权重越大

注:当特征值多于样本点,此时不可用线性回归,由于求矩阵的逆时,非满轶矩阵会出问题,需要通过岭回归或lasso法正则化,缩减系数。


正则算法

(1)岭回归

  1. 在求逆矩阵的时候,添加一个对角线为1的单位矩阵,按给定的系数做加法,以满足求逆的条件
  2. 增加的单位矩阵中对角线为1,其他为0,形状类似岭

(2)lasso法

  1. 加入约束条件,向量绝对值的和不大于给定的系数
  2. 在系数足够小时,回归系数会被缩减到0

权衡偏差与方差

  1. 偏差是指模型预测值与真实知道差异
  2. 方差是指模型直接的差异
  3. 二者的调整对于回归的效果有重大影响

2.非线性回归(树回归)

与线性回归的区别:

  1. 线性回归创建的模型需要拟合所有的样本点
  2. 当特征值很多且关系复杂时,构建全局模型的复杂度太高
  3. 树回归就是将数据切分,如果切分后仍然过于复杂则继续切分,最终形成树形结构依次进行回归

剪枝:

  1. 树节点过多代表过拟合
  2. 降低树的复杂度称为剪枝
  3. 预剪枝,即人为添加终止条件,预先结束树的构建,依据是每次的预测结果,这种方法效率低下
  4. 后剪枝,划分数据集为训练集和测试集,首先建立复杂的树,再用测试集判断叶节点是否降低测试误差,降低了则合并叶子节点

(1)CART(分类回归树)

  1. 可用于分类和回归两种算法
  2. 二元切分法(如果特征值大于给定值就分左,否则分右)
  3. 这样保证了可以直接对连续型数据构建树
  4. 不使用香浓熵来衡量信息混乱度
  5. 为衡量混乱度,首先计算所有数据的均值,再计算每条数据与均值的差值,用平方或绝对值描述差值,即总方差
  6. 总方差=均方差*样本点个数

二、无监督学习

(一)聚类

  1. 与分类的结果相同,是无监督学习分类
  2. 分类是事先给出类别,聚类则自动形成给定数量的类别
  3. 数据是否相似依然依赖于相似度计算方法

1.K-means方法

(1)动态聚类:K-means方法

  1. 选择K个点作为初始质心
  2. 将每个点指派到最近的质心,形成K个簇(聚类)
  3. 重新计算每个簇的质心 4 重复2-3直至质心不发生变化

优缺点:

  1. 有效率,而且不容易受初始值选择的影响
  2. 不能处理非球形的簇
  3. 不能处理不同尺寸,不同密度的簇
  4. 离群值可能有较大干扰(因此要先剔除)

(2)基于有代表性的点的技术:K中心聚类法

  1.  随机选择k个点作为“中心点”
  2. 计算剩余的点到这k个中心点的距离,每个点被分配到最近的中心点组成聚簇
  3. 随机选择一个非中心点Or,用它代替某个现有的中心点Oj,计算这个代换的总代价S
  4. 如果S<0,则用Or代替Oj,形成新的k个中心点集合
  5. 重复2,直至中心点集合不发生变化
  6. K中心法的实现:PAM-使用离差平方和来计算成本S

优缺点:

  1. 对于“噪音较大和存在离群值的情况,K中心法更加健壮,不像 Kmeans那样容易受到极端数据影响
  2. 执行代价更高

(3)基于密度的方法: DBSCAN(DBSCAN = Density-Based Spatial Clustering of Applications with Noise)

     本算法将具有足够高密度的区域划分为簇,并可以发现任何形状的聚

  1. 指定合适的 r 和 M
  2. 计算所有的样本点,如果点p的r邻域里有超过M个点,则创建一个以p为核心点的新簇
  3. 反复寻找这些核心点直接密度可达(之后可能是密度可达)的点,将其加入到相应的簇 ,对于核心点发生“密度相连”状况的簇,给予合并
  4. 当没有新的点可以被添加到任何簇时,算法结束   

(注:

r-邻域:给定点半径r内的区域

核心点:如果一个点的r-邻域至少包含最少数目M个点,则称该点为核心点

直接密度可达:如果点p在核心点q的r-邻域内,则称p是从q出发可以直接密度可达 如果存在点链p1 ,p2 , …, pn,p1=q,pn=p

pi+1是从pi关于r和M直接密度可达,则称点p 是从q关于r和M密度可达的

如果样本集D中存在点o,使得点p、q是从o关于 r和M密度可达的,那么点p、q是关于r 和M密度相连的

æ³äºè§£æºå¨å­¦ä¹ ï¼ä½ éè¦ç¥éçå个åºç¡ç®æ³

(二)降维

目标:

  1. 减少输入的数目
  2. 剔除噪声数据
  3. 提高已有算法的性能,减少计算开销

1.主成分分析(Principal Component Analysis,PCA)

通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

1.旋转坐标轴 

  1. 第一个坐标轴是数据最大方差所在的方向
  2. 第二个坐标轴与第一个坐标轴正交,方差次大
  3. 重复旋转坐标轴,次数为数据中特征数量
  4. 旋转次数越多,所得方差越小
  5. 方差越大表明越能给出数据越最重要的信息
  6. 当方差和变化很小的时候,舍弃余下坐标轴

2.数据集矩阵实现 

  1. 针对协方差矩阵做特征值分析
  2. 特征值越大,数据方差越大
  3. linalg.eig()方法可以计算协方差矩阵的特征值

一些主成分分析PCA程序的应用包括压缩、简化数据、可视化。注意,对于选择是否使用主成分分析领域知识是非常重要的。当数据是嘈杂的时候(所有的组件的主成分分析有相当高的方差),它是不适合的。

æ³äºè§£æºå¨å­¦ä¹ ï¼ä½ éè¦ç¥éçå个åºç¡ç®æ³

2.奇异值分解(Singular Value Decomposition,SVD

在线性代数中,SVD是一个非常复杂矩阵的因数分解。对于一个给定的m×n矩阵M,存在一个分解,M = UΣV,其中u和v是单一矩阵,Σ是对角矩阵。主成分分析PCA其是奇异值分解SVD的简单应用。

1.矩阵分解 

  1. 一个数据集矩阵m*n可以分解为三个矩阵,分别为m*m,m*n,n*n
  2. 分解过程为svd,分解后的m*n矩阵只包含对角线元素且降序排列,其他位置均为0,这些元素就叫奇异值
  3. 奇异值越大,越能反映数据重要信息
  4. 计算前几个奇异值,当其能反映整个矩阵的90%以上信息时,舍弃后边的奇异值

2.推荐引擎 

  1. 对数据集矩阵SVD处理后可应用于推荐引擎
  2. 相似度的计算通常为欧氏距离,皮尔逊相关系数和余弦相似度
  3. 对计算结果处理为[0,1],0表示无关,1表示相同
  4. 评价一个推荐引擎的好坏通过最小均方根误差RMSE实现,RMSE值表示与真实结果的差距,越小越好

在计算机视觉领域,第一人脸识别算法,运用主成分分析PCA其是奇异值分解SVD来代表面孔作为一个线性组合的“特征脸”,并对其做降维,然后通过简单的方法匹配合适的身份;虽然现代方法更复杂,但是许多人仍然依靠类似的技术。

æ³äºè§£æºå¨å­¦ä¹ ï¼ä½ éè¦ç¥éçå个åºç¡ç®æ³

(三)关联规则

关联项

  1. 频繁项表示物品出现在一起的集合
  2. 关联项表示两种物品可能含有关联
  3. 描述频繁度和关联可能性的指标称作支持度和可信度

支持度

  1. 数据集中包含该项记录所占的比例
  2. 规定一个最小支持度筛选出频繁出现的商品组合

可信度

  1. 支持度的比值,即同时出现两个商品的支持度/出现其中一个商品的支持度
  2. 由此来量化两种商品关联的可能性
     

1.Apriori

Apriori算法原理

  1. 只关心购买商品的种类,不关心数量
  2. 按原理计算支持度和可信度需要遍历数据集的次数为2的n次方-1
  3. Apriori假设某个项集是频繁项,那其子集都是频繁项
  4. 也就是说,两种商品同时出现频率很高的话,这两种商品单独出现的频率一定也很高
  5. 如果项集为非频繁项,其超集也是非频繁项

Apriori查找频繁集

  1. 输入参数为最小支持度和数据集
  2. 首先计算单个商品的支持度,再计算两个商品的支持度
  3. 去除支持度低于最小支持度的数据,遍历数据集

Apriori挖掘关联规则

  1. 计算可信度可通过集合做并集除以单个集合的方式
  2. 计算所有频繁集数据的可信度,筛选出满足最小可信度的规则
  3. 依然符合假设,即本身为真则子集真,本身为假则超集假

2.FP-Growth

FP-growth算法查找频繁集

  1. 缩短Apriori发现频繁项集的时间成本,性能提高两个数量级以上
  2. FP树结构,只需要对数据集进行两次扫描
  3. 第一次扫描针对所有元素的出现次数进行计数,去除不满足最小支持度的数据,重新生成新的数据集
  4. 第二次扫描仅考虑频繁元素

FP-growth算法挖掘关联规则

  1. 条件模式基,指向目标元素的路径和其经过元素数量的集合,即路径+路径长度
  2. 根据每条路径构建条件FP树,依然去除不满足最小支持度的数据
  3. 递归直至仅剩一个元素,即为最可能的关联规则

(四)隐马尔可夫模型(HMM)

三、强化学习

(一)Q-Learning

(二)时间差学习

四、半监督学习SSL

(一)标签传播算法(Label Propagation Algorithm,LPA)

标签传播算法是基于图的半监督学习方法,基本思路是从已标记的节点的标签信息来预测未标记的节点的标签信息,利用样本间的关系,建立完全图模型。每个节点标签按相似度传播给相邻节点,在节点传播的每一步,每个节点根据相邻节点的标签来更新自己的标签,与该节点相似度越大,其相邻节点对其标注的影响权值越大,相似节点的标签越趋于一致,其标签就越容易传播。在标签传播过程中,保持已标记的数据的标签不变,使其将标签传给未标注的数据。最终当迭代结束时,相似节点的概率分布趋于相似,可以划分到一类中。

算法实现:

  1. 初始化,利用权重公式来计算每条边的权重,得到数据间的相似度
  2. 根据得到的权重,计算节点j到i的传播概率
  3. 定义一个(l+u)*C的矩阵
  4. 每个节点按传播概率把它周围节点传播的标注值按权重相加,并更新到自己的概率分布
  5. 限定已标注的数据,把已标注的数据的概率分布重新赋值为初始值,然后重复步骤四,直至收敛。

input:u个未标记数据和l个标记的数据及其标签
output:u个未标记数据的标签

特点:

(1) LPA是一种半监督学习方法,具有半监督学习算法的两个假设前提:1. 临近样本点具有相同的标签。根据该假设,分类时边界两侧尽可能避免选择较为密集的样本数据点,而是尽量选择稀疏数据,便于算法利用少了已标注数据指导大量的未标注数据。2. 相同流结构上的点能够拥有相同的标签。根据该假设,未标记的样本数据能够让数据空间变得更加密集,便于充分分析局部区域特征。
(2) LPA只需要利用少量的训练标签指导,利用未标注数据的内在结构,分布规律和临近数据的标记,即可预测和传播未标记数据的标签,然后合并到标记的数据集中。该算法操作简单,运算量小,适合大规模数据信息的挖掘和处理。
(3) LPA 可以通过相近节点之间的标签的传递来学习分类,所以它不受数据分布形状的局限。所以只要同一类的数据在空间分布上是相似的,那么不管数据分布是什么形状的,都能通过标签传播,把他们分到同一个类里。因此可以处理包括音频、视频、图像及文本的标注,检索及分类。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值