Spark架构图如下:
Spark 的计算过程:Stage内部数据高效并行计算,Stage边缘处进行消耗资源的shuffle或者reduce操作。
特征处理方法:
1.类别特征:one-hot编码
2.数值特征:归一化(不同类别特征权重不统一)与分桶(解决特征值分布不均与,过程:特征值高低排序->分位数->分样本->桶id作为特征值)。
ps。当有些特征我们需要用但又不知道怎么用时,可以对其多次不同采样 看看效果。
课后思考请你查阅一下 Spark MLlib 的编程手册,找出 Normalizer、StandardScaler、RobustScaler、MinMaxScaler 这个几个特征处理方法有什么不同。你能试着运行一下 SparrowRecSys 中的 FeatureEngineering 类,从输出的结果中找出,到底哪一列是我们处理好的 One-hot 特征和 Multi-hot 特征吗?以及这两个特征是用 Spark 中的什么数据结构来表示的呢?
Normalizer:正则化,按行处理,对每个 样本计算其p范数(该样本中每个元素除以其范数)。
StandardScaler:标准化,(xi - u) / σ,可得到均值为0,方差为1的正态分布。
RobustScaler: (xi - median) / IQR,(IQR样本的四分位数)
MinMaxScaler:数据归一化,(xi - min(x)) / (max(x) - min(x)),收敛到[0,1]之间