spark.ml支持算法总结

2023-11-05

spark支持算法总结

在这里插入图片描述

推荐模型

协同过滤

协同过滤简单来说就是利用某个兴趣相投,拥有共同经验之群体的喜好来为用户推荐其感兴趣的资讯。换句话说就是,借鉴和你相关的人群的观点来进行推荐。
协同过滤的目标在于填充“用户-商品”联系矩阵中的缺失项。spark.ml使用交替最小二乘算法来学习这些潜在因子。
用户数据:
用户数据有user ID, movie ID, rating(1-5), timestamp等4个字段。共100000行。
在这里插入图片描述

分类模型

分类通常是指将事物分为不同的类别,属于监督学习中的一种形式。通过大量的样本数据构成一个训练集,每个样本有多个属性,属性可以是连续型,也可以是离散型。其中每一个属性都称为事物的类别属性。用来表示事物所属的类别。简而言之,分类就是通过一组代表物体、事件等的相关属性来判断其类别。
分类问题通常会分为两种,一种是简单的二分类问题,即结果只有1或0, 例如判断肿瘤是良性或恶性,只有两种可能情况。另一种多类别分类问题。结果有多个类别,有限个类别。例如判断手写数字,只有‘0-9‘的可能。

1.逻辑回归

特点:

  • 应用:

    • 用于分类:适合做分类算法的基础组件
    • 用于预测:预测时间发生的概率(输出)
    • 用于分析:单一因素对某一个时间发生的影响因素分析(特征参数值)
  • 使用:

    • 基本假设:输出类别服从伯努利二项分布
    • 样本线性可分
    • 特征空间不是很大的情况
    • 不必在意特征间相关性的情景
    • 后续有大量新数据的情况

优点:

  • 模型清晰
  • 输出值自然的落在0到1之间,并且有概率意义
  • 参数代表每个特征对输出的影响,可解释性强
  • 实施简单,非常高效, 适用于大量数据
  • 可以使用online learning的方式轻松更新数据,不需要重新训练整个模型
  • 解决过拟合的方式很多,如L1, L2正则化
  • L2正则化就可以解决多重共线性问题

缺点:

  • 因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况
  • 特征空间很大时,性能不好
  • 容易欠拟合,精度不高
  • 对极端值敏感

原始数据:
在这里插入图片描述
训练数据及预测结果显示:
在这里插入图片描述

2.决策树

特点:

  • 具有强大的非线性技术,不要求样本数据标准化,可以用来表示复杂的非线性模式和特征的相互关系。易扩展到多分类问题。
  • 适用于小数据集,在逐步应答过程中,典型的决策树分析会使用分层变量或决策节点。例如,可将一个给定用户分类成信用可靠或不可靠。
  • 常见举例:基于规则的信用评估,赛马结果预测

优点:

  • 计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;
  • 擅长对人、地点、事物的一系列不同特征、品质、特性进行评估。

缺点:

  • 容易过拟合(后续出现了随机森林,减小了过拟合现象),使用剪枝避免过拟合

原始数据:
在这里插入图片描述
训练数据及预测结果显示:
在这里插入图片描述

3.朴素贝叶斯

特点:

  • 朴素贝叶斯分类是一个简单概率模型,通过计算给定的待分类型在每个类别的概率进行预测,哪个概率最大就认为待分类项属于哪个类别。
  • 使用先验知识得到后验概率,由期望风险最小化得到后验概率最大化。假设条件独立,条件不独立就变成贝叶斯网络了

优点:

  • 模型简单,易训练,并且具有高效和并行的优点。
  • 小规模数据集表现好,适合多分类
  • 对于在小数据集上有显著特征的相关对象,朴素贝叶斯方法可对其进行快速分类

缺点:

  • 需要条件独立假设,会牺牲一定准确率,分类性能不一定高

训练数据及预测结果显示:
在这里插入图片描述

4. 随机森林

特点:

  • 准确率可以和Adaboost媲美,对错误和离群点更鲁棒。准确率依赖于个体分类器的实力和它们之间的依赖性。理性情况是保持个体分类器的能力而不提高它们的相关性。对每次划分所考虑的属性数很敏感。通常选取 l o g n 2 + 1 logn2+1 logn2+1个属性,其中n是数据集的实例数。

  • 场景距离:用户流失分析、风险评估

优点:

  • 不易过拟合,可能比Bagging和Boosting更快。由于在每次划分时只考虑很少的属性,因此它们在大型数据库上非常有效。有很好的方法来填充缺失值,即便有很大一部分数据缺失,仍能维持很高准确度。给出了变量重要性的内在估计,对于不平衡样本分类,它可以平衡误差。可以计算各实例的亲近度,对于数据挖掘、检测离群点和数据可视化非常有用。
  • 随机森林方法被证明对大规模数据集和存在大量且有时不相关特征的项(item)来说很有用

缺点:

  • 在某些噪声较大的分类和回归问题上会过拟合。对于有不同级别的属性的数据,级别划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产生的属性权值是不可信的。

原始数据:
在这里插入图片描述

训练数据及预测结果显示:
在这里插入图片描述

训练好的随机森林:
在这里插入图片描述

5. 梯度提升决策树回归

特点:
GBDT是一种迭代的决策树算法,有多棵决策树的结论累加起来作为最终答案

优点:

  • 预测精度高
  • 适合低维数据
  • 能处理非线性数据
  • 可以灵活处理各种类型的数据,包括连续值和离散值
  • 在相对少的调参时间情况下,预测的准确率也可以比较高,这个是相对SVM来说的。
  • 使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数
  • 可解释性强,可以自动做特征重要性排序。

缺点:

  • 数据维度较高时会加大算法的计算复杂度。
  • 不好并行化

预测数据:
在这里插入图片描述
训练数据及预测结果显示:
在这里插入图片描述

训练好的GBT模型:
在这里插入图片描述

6. 多层感知器分类

特点:
多层感知器 (MLP)是一种前向结构的ANN人工神经网络。多层感知器能够处理非线性可分离的问题。MLP映射一组输入向量到一组输出向量。可被看做是一个有向图。有多个节点组成,每一层全连接到下一层,除了输入节点,每个节点都有一个带有非线性激活函数的神经元,使用BP反向传播算法的监督学习方法来训练MLP。

优点:

  • 高度的并行处理
  • 高度的非线性全局作用
  • 良好的容错性
  • 具有联想记忆功能
  • 非常强的自适应、自学习功能
    缺点:
  • 网络的隐含节点个数选取非常难
  • 停止阈值,学习率,动量常熟选取非常难
  • 学习速度慢
  • 容易陷入局部极值
  • 学习可能不够充分

预测数据及结果显示:
在这里插入图片描述

7. 一对多分类

特点:
把一个多分类的问题变成多个二分类的问题。转变的思想就如同方法名称描述的那样,首先遍历每个类别,被遍历的类别作为positive, 其余的类作为negitive类别。遍历完之后就可以得到k(表示类别的种类数)分类器,在预测阶段输入一个样本, 计算出概率最高的分类器作为预测的类别。

优点:

  • 效率很高, 有多少个分类就训练多少个分类器就可以完成多分类。
  • 普适性广,可以应用于能输出值或者概率的分类器

缺点:

  • 若样本不平衡时,那么每个单模型在训练的时候可能都是偏向于negative,最终在预测的使用就是相当于在一端偏向negitive的模型中找到positive的分类器。

训练数据及预测结果显示:
在这里插入图片描述

8. 支持向量机

特点:

  • 是一种二分类模型。
  • 非线性映射,利用內积核函数代替高维空间的非线性映射
  • 对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心
  • 支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量

优点:

  • SVM的最终决策函数只有少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”
  • 少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本,“剔除”大量冗余样本,而且注定了算法简单,而且具有较好的“鲁棒性”。体现在:
    • 增、删非支持向量对模型没有影响
    • 支持向量样本集具有一定的鲁棒性

缺点:

  • SVM算法对大规模训练样本难以实施
  • 用SVM解决多分类问题存在问题

训练数据显示:
在这里插入图片描述

回归模型

预测数据:
在这里插入图片描述

1.线性回归

公式:
Y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β p − 1 x p − 1 + ε Y = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_{p-1}x_{p-1} + ε Y=β0+β1x1+β2x2+...+βp1xp1+ε

线性模型的假设主要有以下几点:

  • 响应变量Y与误差项ε正态性:响应变量Y与误差项ε服从正分布,且ε是一个白噪声过程,因而具有零均值,同方差的特性。
  • 预测量 x i x_i xi和未知参数 β i \beta_i βi的非随机性:预测量 x i x_i xi具有非随机性、可预测且不存在测量误差;未知参数 β i \beta_i βi认为是未知但不具有随机性的常数,值得注意的是运用最小二乘法或极大似然法解出的未知参数 β i \beta_i βi则具有正态性。
  • 研究对象:如前述普通线性模型的输出项是随机变量Y,在随机变量众多的特点或属性里,比如分布、各种矩、分位数等等,普通线性模型主要研究响应变量的均值 E [ Y ] E[Y] E[Y]
  • 联接方式:可采用 f ( x ) = x f(x) = x f(x)=x联接二者。

线性回归模型的关键点:

  • 建模快速简单,特别适用于要建模的关系不是非常复杂且数据量不大的情况
  • 对异常值非常敏感

训练数据框架:
在这里插入图片描述
训练数据及结果显示:
在这里插入图片描述

2. 广义线性模型

广义线性模型实在普通线性模型的基础上,将上述四点模型假设进行推广二得出的应用范围更广,更具有实用性的回归模型。

  • 响应变量Y的分布推广至指数分散族;比如正态分布、泊松分布、二项分布、负二项分布、伽玛分布、逆高斯分布。
  • 预测量 x i x_i xi和未知参数 β i \beta_i βi的非随机性:任然假设预测量 x i x_i xi具有非随机性、可测且不存在测量误差;未知参数 β i \beta_i βi认为是未知且不具有随机性的常数。
  • 研究对象:广义线性模型里采用的连接函数理论上可以是任意的,而不再局限于 f ( x ) = x f(x) = x f(x)=x.

3.决策树

训练数据框架:
在这里插入图片描述
训练数据及结果显示
在这里插入图片描述

4.生成回归

生存数据:
关于某个个体生存回见的数据,生存时间就是死亡时间减去出生时间。
生存数据有两个特点:

  • 有截尾数据:未知道死亡时间
  • 生存时间的特征一般不服从正态分布

加速失效时间模型(accelerated failure time model)可以作为比例风险模型的替代模型。这是一个用于检查数据的参数生存回归模型,描述了生存时间对数的模型。
优点:
对分析结果的解释更加简单,直观且易于理解,并且预测个体的生存时间。

训练数据及结果显示:
在这里插入图片描述

5. 保序回归

特点:

  • 保序回归解决了下面的问题:给定包含n个数据点的序列 y 1 , y 2 , y 3 , . . . , y n y_1,y_2,y_3,...,y_n y1,y2,y3,...,yn,怎么通过一个单调的序列 β 1 , β 2 , β 3 , . . . , β 3 \beta_1, \beta_2, \beta_3, ..., \beta_3 β1,β2,β3,...,β3来归纳这个问题。
  • 通常作为辅助方法修复因为数据稀疏性导致的矫正结果不平滑问题

优点:

  • 对模型的输出特征没有要求

缺点:

  • 适用于样本量多的情况,样本量少时,使用保序回归容易过拟合

训练数据及结果显示:
在这里插入图片描述

聚类模型

无监督学习,从没有标签数据的数据中提炼出规则或特征。比如识别异常数据,对用户进行分类。
聚类算法的思想就是物以类聚的思想,相同性质的点在空间中表现得较为紧密和接近,主要用于数据探索和异常检测。

1. KMeans

k-平均聚类的目的是:把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。
如市场划分、机器视觉、 地质统计学、天文学和农业等。它经常作为其他算法的预处理步骤,比如要找到一个初始设置。

优点:

  • 实现容易,收敛速度快
  • 聚类效果较优
  • 主要需要调参的参数仅仅是簇族K

缺点:

  • K值的选取不好把握
  • 对于不是凸的数据集比较难收敛
  • 采用迭代方法,得到的结果只是局部最优
  • 如果各隐含类别的数据不平衡,则聚类效果差
  • 对噪音和异常点比较的民汉
    规范化的特征向量对应的预测类别:

在这里插入图片描述

未处理的数据:
在这里插入图片描述
已处理数据:
在这里插入图片描述

在这里插入图片描述
不同k值下的误差显示:
在这里插入图片描述

2. LDA(Latent Dirchlet allocation)

LDA是主题模型,常用于文本分类。用于推测文档的主题分布,已将文档集中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出他们的主题分布后,便可以根据主题分布进行主题聚类或文本分类。
在这里插入图片描述

3. 高斯混合

高斯混合模型值得是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或是同一类分布但参数不同,或是不同类型的分布)。
高斯混合被实现为Estimator, 并生成GaussianMixtureModel作为基础模型。
在这里插入图片描述

4. 二分K均值(Bisecting k-means)

Bisecting Kmeans被实现为一个估计器,并生成一个BisectingKMeansModel作为基础模型。
二分K-means算法时一种分层聚类算法,采用自顶向下的方法,所有观察者初始化为一类,然后递归地分裂它们。

相对于Kmeans的优点:

  • 可以加速K-means算法的执行速度
  • 不受初始问题的影响,不存在随机点的选取,且每一步都保证了误差最小

训练数据:
在这里插入图片描述
中心点(K = 2):
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spark.ml支持算法总结 的相关文章

随机推荐

  • MyBatis-扩展-PageHelpler分页插件使用

    PageHelper是MyBatis中非常方便的第三方分页插件 官方文档 https github com pagehelper MybatisPageHelper blob master README zh md 我们可以对照官方文档的说
  • tomcat的日志记录有哪些?

    Tomcat 是一个常用的 Java Web 服务器 它可以生成各种类型的日志记录 以下是 Tomcat 的一些常见日志记录 访问日志 Access Logs 记录所有进入 Tomcat 服务器的 HTTP 请求 这些日志包含有关请求的详细
  • jdk源码调试显示变量

    原文地址 http my oschina net xionghui blog 497361 Java是一门开源的程序设计语言 喜欢研究源码的java开发者总会忍不住debug一下jdk源码 虽然官方的jdk自带了源码包src zip 然而在
  • LeetCode 面试题01.01. 判定字符是否唯一的两种解法

    本文唯一重点 按位取与的运算优先级比较低 至少比 和 都低 注意加括号 题目概述 题解 一 哈希表 思路是简单的 用第一个下标做字符 第二个下标做字符出现的次数 先遍历一遍字符串 把次数都统计好 然后再遍历一遍字符串 如果查询到某个字符的c
  • 解决中文乱码问起

    Java对数据库进行CRUD操作出现乱码 先查看web xml有没有配置字符编码过滤器
  • es6把多个class方法合并在一起

    前言 es6新增的class方法 现在想把他们多个合并到一起 最终生成一个新方法出来 思路 我们新建3个文件 分别为index js login js main js login js 和 main js是两个 class函数 将他们合并到
  • Huggingface-4.8.2自定义训练

    Huggingface走到4 8 2这个版本 已经有了很好的封装 训练一个语言网络只需要调用Trainer train 即可完成 如果要根据自己的需求修改训练的过程 比如自定义loss 输出梯度 直接修改huggingface的源码显然是不
  • Spire.Doc系列教程:C# Word 图片替换

    Spire Doc支持在Word文档中对图片进行多种操作 如添加 提取 替换和删除等 本文主要介绍如何使用Spire Doc替换Word文档中的图片 在Spire Doc中 图片替换包含文本替换图片和图片替换图片两种方式 以下部分将对这两种
  • js中file、blob、base64的相互转换,前端图片压缩、裁剪、文件格式转换

    最近做了个前端图片压缩 用到了很多js文件操作api 整理一下防止健忘 1 file转base64 获取文件的Base64 param file File 文件 param callback Function 回调函数 参数为获取到的bas
  • (个人)AR电子书系统创新实训中期总结

    AR电子书项目实训中期总结 已完成内容 使用ZXing Net库 验证并测试Unity中生成和识别二维码的功能 使用Unity自带的WWW类测试并实现了本地图像和视屏资源的读取 并使用File方法实现了资源的写入 通过www读入本地文件 p
  • Vue项目运行时报错These relative modules were not found

    Vue项目运行时报错These relative modules were not found ERROR Failed to compile with 2 errors These relative modules were not fo
  • 用git,clone依赖的库

    git clone https github com influxdata influxdb java git cd crfasrnn git submodule update init recursive 或 git clone recu
  • 汇编程序debug成功但不能直接运行

    王爽 汇编语言 实验10中的dtoc子程序 运行不了 但是单步调试可以通过并且结果正常 我的代码如下 assume cs code data segment db 10 dup 0 data ends code segment start
  • 标注转换与编辑软件

    标注转换与编辑软件 https github com Fafa DL LabelConvert 1 支持XML转JSON XML转TXT TXT转XML JSON转XML 2 XML JSON类别替换 3 XML JSON类别删除 该Git
  • 《软件测试的艺术》第3章:代码检查、走查与评审

    软件测试的艺术 软件开发人员通常不会考虑到的一种测试形式 人工测试 大多数人认为 因为程序是为了供机器执行而编写的 那么也应由机器来对程序进行测试 这种想法是有问题的 人工测试方法在暴露错误方面是很有成效的 实际上 大多数的软件项目都应使用
  • 100天精通Python(数据分析篇)——第75天:Pandas数据预处理之数据标准化

    文章目录 专栏导读 1 数据标准化是什么 2 数据标准化的作用 3 数据标准化的方法 4 离差标准化 5 标准差标准化 6 小数定标标准化 书籍介绍 专栏导读
  • Python 模块中的变量

    模块 module 其实就是py文件 里面定义了一些函数 类 变量等 包 package 是多个模块的聚合体形成的文件夹 里面可以是多个py文件 也可以嵌套文件夹 库是参考其他编程语言的说法 是指完成一定功能的代码集合 在python中的形
  • 第十四届蓝桥杯模拟赛第一期试题【Java解析】

    目录 A 二进制位数 问题描述 答案提交 参考答案 解析 B 晨跑 问题描述 答案提交 参考答案 解析 C 调和级数 问题描述 答案提交 参考答案 解析 D 山谷 问题描述 答案提交 参考答案 解析 E 最小矩阵 问题描述 答案提交 答案
  • css 栅格布局el-row(xs,sm,md,lg,xl)

    xs 12 24 12 2 所以当屏幕尺寸 lt 768px时 手机 每行展示2个div class com item sm 8 24 8 3 所以当屏幕尺寸 gt 768px时 平板 每行展示3个div class com item md
  • spark.ml支持算法总结

    文章目录 spark支持算法总结 推荐模型 协同过滤 分类模型 1 逻辑回归 2 决策树 3 朴素贝叶斯 4 随机森林 5 梯度提升决策树回归 6 多层感知器分类 7 一对多分类 8 支持向量机 回归模型 1 线性回归 2 广义线性模型 3