复习笔记1——线性回归和逻辑回归
一、机器学习基本概念
1.1 什么是模型
从概率论的角度说,机器学习模型是一个概率分布 P θ ( X ) P_{\theta }(X) Pθ(X) (这里以概率密度函数来代表概率分布)
- X :训练数据
- θ = θ 1 . . . θ n \theta =\theta_{1}...\theta _{n} θ=θ1...θn表示概率分布 P θ P_{\theta } Pθ的 n个参数
机器学习的任务就是求最优参数 θ t \theta_{t} θt ,使得概率分布 P θ ( X ) P_{\theta }(X) Pθ(X) 最大(即已发生的事实,其对应的概率理应最大)。
θ t = a r g m a x θ P θ X \theta_{t} =\underset{\theta}{argmax}P_{\theta }X θt=θargmaxPθX
其中 argmax 函数代表的是取参数使得数据的概率密度最大。
求解最优参数 θ t \theta_{t} θt的过程,我们称之为模型的训练过程( Training ),用来训练这个模型的数据集称之为训练集X( Training Set ),由此得到的模型就可以用来做相应的预测。
1.2 极大似然估计
我们可以把训练集X拆成单条数据的集合X=(X_{1}…X_{n})。每个X的子集为迷你批次。假设单条数据互相独立,上式改写的单条数据乘积可以转为概率对数的求和:
θ t = a r g m a x θ ∏ i P θ X i = a r g m a x θ ∑ i l o g P θ X i \theta_{t}=\underset{\theta}{argmax}\prod_{i} P_{\theta }X_{i}=\underset{\theta}{argmax}\sum_{i}log P_{\theta }X_{i} θt=θargmaxi∏PθXi=θargmaxi∑logPθXi
极大似然估计MLE(Maximum Linklihood Estimation):整体求解上式最优参数 θ t \theta_{t} θt的过程。
1.3为啥使用梯度下降法求解
解方程求解的缺点:
- 机器学习的场景中,训练样本量通常很大,海量的方程通常很难求解。矩阵方式求解,涉及百万维的矩阵运算,对算力。配置要求很高
- 线性回归在对应多元一次方程,尚有解析解。当模型更复杂时(比如不止线性回归),很难找到解析解。即使有,也是特定模型求特定的解析解,无法推广到别的模型
- 解方程需要一次加载全部数据,在数据量很大时,基本做不到(内存会爆)
1.4 梯度下降法本质
- 梯度:在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。
- 梯度向量的意义:从几何意义上讲,梯度就是函数变化增加最快的地方。沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值
- 梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
1.5 梯度下降的算法调优
- 选择合适的学习率(步长),调整每次优化时参数调整的步幅。梯度只是代表下降的方向,真正下降的步幅由学习率控制。太小会很慢,太大会震荡。
- 算法参数的初始值选择。初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值(除非是凸函数)由于有局部最优解的风险,需要多次用不同初始值运行算法
- 归一化。样本不同特征的量纲不一样,会导致迭代很慢(而且结果主要由量纲最大的特征决定)为了减少特征取值的影响,可以对特征数据归一化,也就是对于每个特征x,求出它的期望x¯和标准差std(x),然后转化为:x−x¯/std(x)。这样特征的新期望为0,新方差为1,迭代速度可以大大加快。(也可以防止过拟合)
- 使用合适的优化器(此处不展开)
1.6 归一化的作用
- 使得梯度下降求解时,loss在x的各个维度上的梯度比较一致,各个维度w更新幅度也比较一致,这样可以加快收敛
- 比如逻辑回归中,loss对w导数= ( y ′ − y ) x (y'-y)x (y′−y)x, x = ( x 1 , x 2 . . . x n ) x=(x_{1},x_{2}...x_{n}) x=(x1,x2...xn)。假如 x 1 x_{1} x1的量纲远远大于 x 2 x_{2} x2,则loss对w1的梯度远大于loss对w2的梯度,就会使得更次更新w的时候,在w1方向上的幅度特别大。而x1量纲很大,对w1的变化更敏感,这时候w1剧烈变化会造成loss下降震荡的情况,收敛很慢甚至难以收敛
- 为了使w1和w2对loss下降的贡献一致,我们希望w1更新幅度小,w2更新幅度大,loss对的敏感度一样,这样loss走直线直接下级到最低点。这时,可以设置较高的学习率,减少迭代次数,加快训练。所以需要对x1和x2做归一化处理。
- 消除特征之间量纲的影响,使得不同特征之间具有可比性。否则模型训练结果主要由量纲最大特征的决定。
- 防止过拟合
- 归一化有min-max归一化和零均值归一化。前者是 x = x − x m i n x m a x − x m i n x=\frac{x-x_{min}}{x_{max}-x_{min}} x=xmax−xminx−xmin。后者是 x = x − μ σ x=\frac{x-\mu }{\sigma } x=σx−μ。训练时启用BN,得到参数 μ \mu μ和 σ \sigma σ。预测时不启用BN,采用训练集的训练好的参数进行无偏估计。(待补充)
- 决策树不需要归一化。决策树进行节点分裂主要靠数据集对x的信息增益比来进行。信息增益比跟x是否归一化无关。
1.7 类别特征的表示
- 序号编码:用于处理类别之间有大小关系的数据。比如成绩分为低中高三档等等,存在高>中>低。转换后依然保留了大小关系
- 独热码。在维度很高时存在矩阵稀疏、内存耗费大的问题。可以转为稀疏矩阵,或embedding。
- 二进制编码,本质上是二进制对ID进行哈希映射,得到0/1特征向量,节省空间。
1.8 组合特征
为了提高复杂关系的拟合能力,往往会把一维离散特征两两组合,构成高维组合特征。比如用在推荐系统里面。
1.9 文本表示有哪些模型?
- 词袋模型和n-gram模型
- 主题模型
- 词嵌入和深度学习模型
二、线性回归
2.1为啥线性回归使用mse做损失函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKMusKMb-1637669104119)(./1637488512786.png)]
- 损失函数为mse,优化时更容易聚焦到难以优化的点。
- 偏差越大的点,对mse来说,梯度越大,更新幅度就越大。把容易预测的mse降低到一定程度后,再在容易点上优化,收益就变小了。那注意力就会转移到难预测的点上。
- 如果用绝对值误差,收益永远不变,注意力就总在容易的点上了。一直优化容易的点,其他的点没有优化,等于训练集变小了。
- 拿线性回归举例。从全局来看,有些点分布在一条主直线附近,这些点就是容易处理的点;有些点分散的比较远,离主直线也远,就是难以处理的点。数据是否容易处理应从全局来看
- MAE的loss在y=y’这个点没有导数,对梯度下降求解造成障碍
- 以线性回归举例,其模型可以简单地认为是拟合一个函数: y = f θ ( x ) y=f_{\theta }(x) y=fθ(x)。
- 假设噪声符合正态分布 N ( 0 , σ 2 ) N(0,\sigma^{2} ) N(0,σ2),通过极大似然估计求最优参数 θ t \theta_{t} θt。将正态分布公式代入有:
θ t = a r g m a x θ ∑ i l o g P θ X i = a r g m a x θ ∑ i l o g 1 2 π σ e ( f θ ( X i ) −