您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
如何使用Spark MLlib 构建分类模型 ?
 
来源:搜狐 发布于: 2017-4-10
 

分类模型的场景:

1.预测互联网用户对在线广告的点击概率(二分类问题);2.检测欺诈(二分类问题,欺诈或者不欺诈);3.预测拖欠贷款(二分类问题);4.对图片、音频、视频进行分类(多分类问题);5.对新闻、网页或者其他内容进行分类或者打标签(多分类);6.发现垃圾邮件、垃圾页面、网络入侵和其他恶意行为 ;7.检测故障,比如计算机系统或者网络故障检测;8.预测顾客或者客户中谁有可能停止使用某个产品或服务。

分类模型的种类:

1.线性模型

原理:对样本的预测结果(目标变量)进行建模,即对输入特征应用简单的线性预测函数。

1.1 逻辑回归

1.2 线性支持向量机

2.朴素贝叶斯模型(前提:假设各个特征之间条件独立)

3.决策树模型

三种分类模型的决策函数:

  

MLlib构建分类模型如何使用?

1.从数据集中抽取合适的特征

MLlib中的分类模型通过LabelPoint对象操作,其中了目标变量(Label)与特征向量:

case class LabePoint(label : Double, features : Vector)

待训练数据:

val data = records.map{ r => ... LabelPoint(lable, Vectors.dense(features)) }

2.训练分类模型

2.1 训练线性回归模型:

2.2 训练SVM模型

2.3 训练NaiveBays模型

2.4 训练决策树模型

3.使用分类模型预测

val prediction = xxModel.predict(dataPoint.features)

注意:逻辑回归、SVM、NaiveBays在二分类中的预测值为1 或 0,但决策树的预测值为0到1之间的实数,使用时需要使用阈值判断。

  

评估分类模型的性能

通常在二分类中使用的评估方法包括:预测正确率与错误率、准确率与召回率、准确率-召回率下方的面积、ROC曲线、ROC曲 线下的面积和F-Measure。

?错误率:训练样本中被错误分类的数目除以样本总数? 准确率(Precision) = 系统检索到的相关文件 / 系统所有检索到的文件总数(搜索引擎)? 召回率(Recall) = 系统检索到的相关文件 / 系统所有相关的文件总数(搜索引擎)

通常,准确率和召回率地负相关,高准确率常常对应低召回率,反之亦然。如果两者都低,说明模型出了问题。

不同场景下准确率和召回率的要求不同,如果是做搜索,那就是保证召回的情况下提升准确率(宁可错判,不能漏判);如果做疾病监测、反垃圾,则是保准确率的条件下,提升召回(宁可漏判,不能错判)。

ROC(Receiver Operating Characteristic)曲线:

真阳性率:真阳性的样本数 / (真阳性 + 假阴性样本数之和)假阳性率:假阳性的样本数 / (假阳性 + 真阴性样本数之和)AUC:ROC下的面积(AUC为1.0时表示一个完美的分类器,0.5表示一个随机的性能)

  

说明:

用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。

于是Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。

通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的Performance。

P/R和ROC是两个不同的评价指标和计算方式,一般情况下,检索用前者,分类、识别等用后者。

AP是为解决P,R,F-measure的单点值局限性的。为了得到 一个能够反映全局性能的指标,可以看考察下图。

  

可以看出,虽然两个系统的性能曲线有所交叠但是以圆点标示的系统的性能在绝大多数情况下要远好于用方块标示的系统。从中我们可以 发现一点,如果一个系统的性能较好,其曲线应当尽可能的向上突出。

更加具体的,曲线与坐标轴之间的面积应当越大。最理想的系统, 其包含的面积应当是1。

如何提升模型的性能?

1.特征标准化

原始数据标准化后特征满足正态分布,即每个特征是0均值和单位标准差,方法:

标准化工具:

Spark的StandardScaler方法,

  

2.对类别特征使用 1-of-k编码

例如:某个特征有10个类别,则需创建一个长为10的向量,然后根据样本所属类别索引,将对应的维度赋值1,其他为0。

3.模型参数调优

根据不同模型训练时使用的不同参数,利用上一页模型性能评价指标,训练出最佳的模型。

4.交叉验证

原理:测试模型在未知数据上的性能

方式:将数据随机的分为训练集和测试集,常用分法50/50、60/40、80/20。

   
次浏览       
相关文章

基于EA的数据库建模
数据流建模(EA指南)
“数据湖”:概念、特征、架构与案例
在线商城数据库系统设计 思路+效果
 
相关文档

Greenplum数据库基础培训
MySQL5.1性能优化方案
某电商数据中台架构实践
MySQL高扩展架构设计
相关课程

数据治理、数据架构及数据标准
MongoDB实战课程
并发、大容量、高性能数据库设计与优化
PostgreSQL数据库实战培训
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]

APP推广之巧用工具进行数据分析
Hadoop Hive基础sql语法
应用多级缓存模式支撑海量读服务
HBase 超详细介绍
HBase技术详细介绍
Spark动态资源分配
更多...   

Hadoop与Spark大数据架构
Hadoop原理与高级实践
Hadoop原理、应用与优化
大数据体系框架与应用
大数据的技术与实践
Spark大数据处理技术

GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...