1、大多数元素都是0的矩阵称为稀疏矩阵,否则称为稠密矩阵。规模巨大的稀疏矩阵在应用机器学习中很常见,尤其在自然语言处理领域中,例如独热编码。稀疏矩阵的表示、计算会增加空间和时间复杂度,因此描述稀疏矩阵的稀疏性需要进行特殊的表示,以提高存储和计算性能。
2、南大周志华老师写的《机器学习》这本书上原文:“为普通稠密表达的样本找到合适的字典,将样本转化为合适的稀疏表达形式,从而使学习任务得以简化,模型复杂度得以降低,通常称为‘字典学习’(dictionary learning),亦称‘稀疏编码’(sparse coding)”块内容。
3、Spark Application
Spark Application 使用:
- 针对单个批处理作业
- 多个job通过session交互式
- 不断满足请求的,长期存在的server
- 一个Spark job 可以包含多个map和reduce
- Spark Application 可以包含多个session实例
Spark Session
SparkSession与Spark应用程序相关联:
- session 是两个或更多实体之间的交互媒介
- 在Spark 2.0中,你可以使用SparkSession创建
- 可以在不创建SparkConf,SparkContext或SQLContext的情况下创建SparkSession(它们封装在SparkSession中)
createOrReplaceTempView:创建临时视图,此视图的生命周期与用于创建此数据集的[SparkSession]相关联。
createGlobalTempView:创建全局临时视图,此时图的生命周期与Spark Application绑定。
4、distribute by imei sort by imei, seqno
Distribute By: 在有些情况下,我们需要控制某个特定行应该到哪个reducer,通常是为了进行后续的聚集操作。distribute by子句可以做这件事。distribute by类似MR中partition(自定义分区),进行分区,结合sort by使用。
order by 会对数据进行全局排序,和oracle和mysql等数据库中的order by 效果一样,它只在一个reduce中进行所以数据量特别大的时候效率非常低。
sort by 是单独在各自的reduce中进行排序,所以并不能保证全局有序,一般和distribute by 一起执行,而且distribute by 要写在sort by前面。如果mapred.reduce.tasks=1和order by效果一样,如果大于1会分成几个文件输出每个文件会按照指定的字段排序,而不保证全局有序。
distribute by
DISTRIBUTE BY 控制map 中的输出在 reducer 中是如何进行划分的。使用DISTRIBUTE BY 可以保证相同KEY的记录被划分到一个Reduce 中。
cluster by
distribute by 和 sort by 合用就相当于cluster by,但是cluster by 不能指定排序为asc或 desc 的规则,只能是升序排列。
5、RFM
RFM是用户关系管理中的常用模型,通过分析用户的最近消费日期、消费频次、消费金额来衡量其价值和创利能力。
RFM分别指的是最近一次消费(Recency) 、消费频率(Frequency)、消费金额(Monetary),又来有学者在此基础上增加了生命周期分析(life),因此就有了RFM_L模型。
6、VectorIndexer、StringIndexer
主要作用:提高决策树或随机森林等ML方法的分类效果。
VectorIndexer是对数据集特征向量中的类别(离散值)特征(index categorical features categorical features )进行编号。
StringIndexer:字符串-索引变换,就是将某些标签的字符串列编号变成标签索引项。标签索引项序列的取值范围就是
[0,numLabels](这里的numLabels是所有出现的单词去掉重复的词后的总和)。
这里的标签索引项顺序就是按照标签出现的频率来排序的,出现最多的标签索引就是0(倒序)。
7、Pipeline作用
Pipeline诞生场景: Redis基于请求/响应模型,单个请求处理需要一一应答
- Pipeline可以批量执行指令(比如我们可以把大量指令先写到txt文件,再一次性读取),节省多次IO往返的时间(前提这大量指令之间无依赖)
- 有顺序依赖的指令建议分批发送
8、特征交叉与特征组合、合成特征
特征交叉是数据特征的一种处理方式,通过特征组合的方式增加特征的维度,以求得更好的训练效果。在实际场景中,我们常常遇到这要的情况,线性分类起无法在如下样本中(无法画一条直线将下列黄点和蓝点分开),所以特征组合是一种让线性模型学习到非线性特征的方式:
如何做特征组合?
特征组合的思想很简单,通过将单独的特征进行组合(相乘或求笛卡尔积)而形成的合成特征。
比如属性A有三个特征,属性B有两个特征,笛卡尔积后就有六个组合特征,然后用one hot 或其他embedding方式给新的特征编码。但暴力做交叉可能产生稀疏问题。
机器学习、深度学习的区别
预训练
rbm
有向图
无向图
GBT、BERT,双向描述能力更强,求解比较麻烦
单向模型求解简单,可以学它的表示
梯度爆炸、衰减
知识图谱、认知图谱
人的记忆先过海马体,把短期记忆抽象成长期记忆
注意力机制
强化学习
纯机器学习的AI系统特点:
可解释性:无、泛化能力:弱、鲁棒性:弱、重大错误、需要的学习样本:大、应用场景:需要大量的数据