0%

GBDT主要由三个概念组成:Regression Decistion Tree(即DT),Gradient Boosting(即GB),Shrinkage(算法的一个重要演进分枝,目前大部分源码都按该版本实现)。搞定这三个概念后就能明白GBDT是如何工作的,要继续理解它如何用于搜索排序则需要额外理解RankNet概念,之后便功德圆满。下文将逐个碎片介绍,最终把整张图拼出来。

阅读全文 »

Matplotlib的基本用法

简单的折线图

plt.plot(x,y, fortmat_string)

作用是定义画图的样式

x,y表示横纵左表, format可以定义画图格式

1
2
3
4
5
6
7
8
#导入Matploylib库
from matplotlib import pyplot as plt
%matplotlib inline
#画布上画图
plt.plot([1,2,3,4], [1,2,3,4], 'b', linewidth=2)
plt.plot([1,2,3,4], [1,4,9,16], 'r', linewidth=2)
#在画布上显示
plt.show()
阅读全文 »

Seaborn风格可视化

什么是seaborn

​ Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。

阅读全文 »

因为$(u_1-u_2)^Tw$是一个标量,所以可以看出

需要注意的是$S_W$在大多数情况下是不可逆的,所以为了解决这个问题,通常有两种方法

阅读全文 »

特征工程

  • 缺失值填充

    • 特征为连续值,且为正态分布,使用均值填充,保持期望不变
    • 特征值为连续值,且为长尾分布,使用中值填充,避免异常点影响
    • 特征为离散值,使用众数填充
    • 使用模型预测完善用户画像
  • 特征转换

    • 对长尾分布的特征,做对数变换
    • 标准化、归一化
    • 连续值特征离散化

      基于LR、SVM、DNN等对特征的分布和尺度敏感的,归一化有助于模型收敛,基于树模型,具有伸缩不变形,不需要做特征变换

  • ID类特征处理

    • OneHot编码,例如性别,编码为0,1或者1,0
    • 使用某种特征的统计量代替该特征
    • Word Embedding,将高纬稀疏特征映射到低纬稠密特征。
  • 异常值剔除

阅读全文 »

表的增删改查操作

创建表

使用if not exists 如果存在则跳过,comment为注释。

1
2
3
4
5
6
7
8
9
create table if not exists mydb.employees(
name string comment 'Employee name',
salary float comment 'Employee salary',
subordinates array<string> comment 'Names of subordinates',
deduction map<string, float>,
address struct<street:string, city:string, state:string, zip:int> comment 'Home address')

comment 'descriptions of table'
location '/user/hive/warehouse/mydb.db/employees';
阅读全文 »

文本文件数据编码

  • TSV:tab separated values;即“制表符分隔值”,用制表符分隔数据
  • CSV: comma separated values;即“逗号分隔值”,用逗号分隔数据

两种文件存在的缺点在于文件中可能存在不需要作为分隔符的逗号或者制表符存在,所有hive有专门的分隔符。

hive记录中默认的分隔符

阅读全文 »