MLlib: RDD-based API
http://spark.apache.org/docs/2.2.0/mllib-guide.html
分类算法(Classification):
预测所属类别(要么二个类别之一,要么是多个类别之一)
-a. 二分类(Binary Classification)
- 支持向量机(SVM)
linear SVMs
- 逻辑回归(LR)
logistic regression
- 朴素贝叶斯(NB)
naive Bayes
- 决策树(DT)
decision trees
-b. 多分类(Multiclass Classification):
- 逻辑回归(LR)
logistic regression
- 朴素贝叶斯(NB)
naive Bayes
- 决策树(DT)
decision trees
-c. 集成学习算法(融合学习算法)
多个算法合在一起,进行预测分类
- Bagging 算法
随机森林(RF):random forests
由N棵决策树组成,投票Voting方式,预测所属类别
- Boosting 算法
梯度提升决策树(GBDT):gradient-boosted trees
本质上也是一颗树,进行不断递进优化一棵树
-d. 在Spark MLlib中
决策树DT、随机森林RF、梯度提升决策树GBDT,都是RF算法的实现。DT模型底层是RF模型中一棵树,GBT模型底层就是特殊优化DT模型。
决策树算法:
依据特征值及预测类别标签值,构建一个棵树DecisionTree。
核心点:
如何选取某个特征值进行判断分类????
算法核心(不纯度):
分类:
- 熵(香农熵)
- 基尼系数gini
回归:
- 方差
============================================================================================
Classification
http://spark.apache.org/docs/2.2.0/mllib-classification-regression.html
-a. 二分类(Binary Classification)
linear SVMs
logistic regression
decision trees
naive Bayes
-b. 多分类
naive Bayes
decision trees
-c. 集成学算法
-i. Bagging
random forests
-ii. Boosting
gradient-boosted trees
===========================================================
机器学习三要素:
总结一句话:算法通过在数据上进行运算产生模型。
-a. 数据
最关键,特征值(至关重要)
特征向量Feature Vector
对于分类来说,标签label
标注(对于分类来说,很重要)
-b. 算法
-c. 模型
机器学习的结果,这个学过程,称为训练(Train)
训练好的模型相当于一个函数
y = f(x)
=========================================================
Spark MLlib机器学习库中(基于RDD API):
数据集存储在RDD中,数据类型LabeledPoint(标签向量):
case class LabeledPoint (
label: Double,
features: Vector
)
向量:
class DenseVector(
val values: Array[Double])
===========================================================
关于二分类模型评估:
http://spark.apache.org/docs/2.2.0/mllib-evaluation-metrics.html#binary-classification
- Precision/Recall
- ROC/PR
类别特征数据转换:
使用1-of-K或OneHotCoding
以sex性别来说:
male female
sex
-i. 获取类别特征的类别数
类别总数categoryLength
-i+. 获取类别的Map集合映射
val categoryAgeMap = Map("male" -> 0, "female" -> 1)
-ii. 以类别长度创建Double数值类型的数组
Array(0.0, 0.0)
male female
-iii. 依据当前特征数据的值,给予数组对应下标赋值为1.0
假设,小明,属于男性male
val sexFeature = Array(1.0, 0.0)
假设,小红,属于女性female
val sexFeature = Array(0.0, 1.0)
========================================================
二分类算法中:朴素贝叶斯算法
文本分类预测
-a. 垃圾邮件(判别)
-b. 新闻类别(分类)
。。。。。。
大数据+机器学习来说:
-a. 推荐系统
数据、算法、预测、分类
-b. 用户画像
用户特征提取,预测与分类
-c. 风控系统
金融行业
-d. 广告预测点击率CTR
APP业务、电商网站业务、搜索引擎业务
==================================================
文本数据特征如何提取
数据:
hadoop spark hadoop spark hadoop hive spark spark
hdfs hive spark spark hive spark
文本数据特征模型:
词袋模型(BOW:Bag Of Words)
核心:
统计单词次数,词频,TermFrequency(TF)
优化特征值:
采用IDF(逆文档频率):某个单词相当整个文档来说,出现频率的倒数
IDF越大表示单词重要性越高,此时DF就越小
思想:
将每个文本数据 以 其中出现单词的词频来表示特征
数组Array相当于一个袋子Bag,存放很多单词
Array(hadoop, spark, hive, hdfs, xx, yy, zz, aa, bb)
Array(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-i. 将每行文本数据进行分词
words
-ii. 统计每行数据分词后各个单词出现的次数
比如针对第一行来说:
hadoop: 3
spark: 4
hive: 1
-iii. 每行数据使用词袋来替换表示
Array(3.0, 4.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
Array(0.0, 3.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-iv. 加权优化特征
Array(
3.0 * 14/3=14,
4.0 * 14/7=8,
1.0 * 14/1=14,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0)