随机梯度下降和独热编码

随机梯度下降

  • 一种优化算法,理解简单

  • 复杂模型或数据上难以获得较好的优化效果

  • 向函数切线下降方向移动,能更快地找到函数的极小值(极小是局部最小值)

  • 损失函数:

    SE(w0,w1)=12i=1n(yi(w0+w1xi))2minw0,w1
  • 偏导数,其中 η 为学习率:

    w0(t+1)=w0(t)ηSEw0|t=w0(t)+ηi=1n(yiw0(t)w1(t)xi)w1(t+1)=w1(t)ηSEw1|t=w1(t)+ηi=1n(yiw0(t)w1(t)xi)xi
  • 每次迭代仅用一些小样本来进行运算,然后迭代更新权重,极大的提高了计算效率

  • 一小批数据并不一定等同于整体数据,其梯度与整体数据可能不同,需要更多次迭代才能收敛

  • 在随机梯度下降方法中,随着迭代次数的增加,权重的更新方向会更难预测

在线学习方法

  • 核心思想:将训练数据集 (X,y)​ 存储在电脑的硬盘中而不将其加载到运行内存中,然后在训练模型时逐个读取,并更新模型的权重:w0(t+1)=w0(t)+η(yiw0(t)w1(t)xi)w1(t+1)=w1(t)+η(yiw0(t)w1(t)xi)xi

sklearn 提供了 sklearn.linear_model.SGDClassifiersklearn.linear_model.SGDRegressor 实现随机梯度下降分类和回归。

类别型特征处理

  • 将类别型数据转换成为数值型数据最直接的解决方法就是将此特征的每个值映射到一个唯一的数字
  • sklearn.preprocessing.LabelEncoder 可以帮助我们实现离散特征编码

独热编码

  • One-Hot Encoding ,仅使用布尔向量表示类别特征
  • 若一个特征存在 n 个类别值,则将其转换为 n 维布尔向量
  • sklearn.preprocessing.OneHotEncoder 可以帮助我们实现编码
  • OneHotEncoder 默认使用稀疏矩阵(Sparse Matrix)节省内存空间

扩展知识