文章目录
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解决多分类问题存在问题
训练数据显示: