【声明】:转摘注明出处,禁止商用。
【声明】:转摘注明出处,禁止商用。
【声明】:转摘注明出处,禁止商用。
线性回归:
h θ ( x ) = ∑ i = 0 n θ i x i = θ T x h_{\theta}(x) =\sum_{i=0}^{n}\theta_{i}x_{i} = \theta^{T}x hθ(x)=i=0∑nθixi=θTx
逻辑回归:
P ( Y = 1 ∣ x ) = s i g m o d ( θ T x ) = e w x + b 1 + e w x + b P ( Y = 0 ∣ x ) = s i g m o d ( θ T x ) = 1 1 + e w x + b P(Y=1 | x)=sigmod(\theta^{T} x)= \frac{e^{wx+b}}{1+e^{wx+b}} \\ P(Y=0 | x)=sigmod(\theta^{T} x)= \frac{1}{1+e^{wx+b}} P(Y=1∣x)=sigmod(θTx)=1+ewx+bewx+bP(Y=0∣x)=sigmod(θTx)=1+ewx+b1
**联系:**逻辑回归与线性回归都属于广义的线性回归,逻辑回归的核心其实也就是线性回归,只不过逻辑回归是处理二分类问题,在线性回归的内壳下,使用sigmod函数把映射的整个值域压缩到 [0, 1]区间,将sigmod函数的中点作为二分类的交界点,在线性回归的来说,即在映射的值域范围找到一个临界点,大于临界点与小于临界点是两种不同的分类结果。
区别:
逻辑回归的原理,算法最本质的核心在于sigmod函数,在线性回归的模型框架下外嵌一个sigmod函数,其本质的原理是对于线性回归的连续性数据进行离散化,局限于sigmod函数的本身,对于逻辑回归也存在一些修改的模型,比如加入 One-Vs-All机制
或者加入 softmax函数进行多类别归一化
逻辑回归公式:
P ( Y = 1 ∣ x ) = s i g m o d ( θ T x ) = e w x + b 1 + e w x + b P ( Y = 0 ∣ x ) = s i g m o d ( θ T x ) = 1 1 + e w x + b P(Y=1 | x)=sigmod(\theta^{T} x)= \frac{e^{wx+b}}{1+e^{wx+b}} \\ P(Y=0 | x)=sigmod(\theta^{T} x)= \frac{1}{1+e^{wx+b}} P(Y=1∣x)=sigmod(θTx)=1+ewx+bewx+bP(Y=0∣x)=sigmod(θTx)=1+ewx+b1
损失函数构造:
令:
P ( Y = 1 ∣ x ) = π ( x ) , P ( Y = 0 ∣ x ) = 1 − π ( x ) P(Y=1 | x)=\pi(x), \quad P(Y=0 | x)=1-\pi(x) \\ P(Y=1∣x)=π(x),P(Y=0∣x)=1−π(x)
综合上式,最大似然估计如下:
KaTeX parse error: Expected 'EOF', got '\ ' at position 63: …)\right)^{1-y} \̲ ̲
取似然函数
L ( w ) = ∑ i = 1 N [ y i log π ( x i ) + ( 1 − y i ) log ( 1 − π ( x i ) ) ] \begin{aligned} L(w) &=\sum_{i=1}^{N}\left[y_{i} \log \pi\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-\pi\left(x_{i}\right)\right)\right] \end{aligned} \\ L(w)=i=1∑N[yilogπ(xi)+(1−yi)log(1−π(xi))]
换一种形式:
L ( π ( x ) , y ) = { − log ( π ( x ) ) if y = 1 − log ( 1 − π ( x ) ) if y = 0 \operatorname{L}\left(\pi(x), y\right)=\left\{\begin{aligned}-\log \left(\pi(x)\right) & \text { if } y=1 \\-\log \left(1-\pi(x)\right) & \text { if } y=0 \end{aligned}\right. L(π(x),y)={−log(π(x))−log(1−π(x)) if y=1 if y=0
损失函数
J ( π ( x ) ) = − 1 m l ( π ( x ) ) J(\pi(x))=-\frac{1}{m} l(\pi(x)) J(π(x))=−m1l(π(x))
然后基于梯度下降算法进行优化,推导整理之后再发。
**正则化:**模型选择的典型方法是正则化(regularization)。正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或罚项(penalty term)。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。比如正则化项可以是模型参数向量的范数。【来源 李航《统计学习方法》】
正则化一般具有如下形式:
min f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) \min _{f \in \mathcal{F}} \frac{1}{N} \sum_{i=1}^{N} L\left(y_{i}, f\left(x_{i}\right)\right)+\lambda J(f) f∈FminN1i=1∑NL(yi,f(xi))+λJ(f)
第一项是经验风险,第二项是正则化项,而其中 J ( f ) J(f) J(f) 的常用表达是参数向量的L1 与 L2范数。如下:
L ( w ) = 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 + λ 2 ∥ w ∥ 2 L ( w ) = 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 + λ ∥ w ∥ t L(w)=\frac{1}{N} \sum_{i=1}^{N}\left(f\left(x_{i} ; w\right)-y_{i}\right)^{2}+\frac{\lambda}{2}\|w\|^{2} \\ L(w)=\frac{1}{N} \sum_{i=1}^{N}\left(f\left(x_{i} ; w\right)-y_{i}\right)^{2}+\lambda\|w\|_{t} L(w)=N1i=1∑N(f(xi;w)−yi)2+2λ∥w∥2L(w)=N1i=1∑N(f(xi;w)−yi)2+λ∥w∥t
模型评估指标:
对于通用模型来说存在很多的评估指标,对于有些特殊的模型存在响应的评估指标,例如聚类,存在轮廓系数等具有算法特性的评估指标,此处的内容太多,列如下内容,方便自主查询:
分析几个比较好的博客:【资料一】 【资料二】
但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。
如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。为什么我们还是会在训练的过程当中将高度相关的特征去掉?
去掉高度相关的特征会让模型的可解释性更好,可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。【来源 ModifyBlog 】
只要正负比例不过于极端,目前各种集成模型不采样处理加选择合适的评价参数都能达到不错的效果,过于偏离的正负比例,再怎么采样感觉也学习不到更多的信息。【来源 知乎 微调】
此处涉及的内容太多,评估标准和算法还有一些小技巧,分享以下博文:
class sklearn.linear_model.``LogisticRegression
(
penalty=’l2’, 字符串,’l1‘ 或者 ’l2‘,默认 ’l2‘。正则化项
dual=False, 在样本数多于特征数时不用考虑
tol=0.0001,
C=1.0,
fit_intercept=True,
intercept_scaling=1,
class_weight=None,
random_state=None,
solver=’warn’,
max_iter=100,
multi_class=’warn’,
verbose=0,
warm_start=False,
n_jobs=None,
l1_ratio=None)
参考:逻辑回归参数详解 来源 【CSDN 博主cherzhoucheer】
参考:【sklearn 官方文档】