logistic 回归全总结:《机器学习》第三章 +《机器学习实战》第五章

博客园相关内容值得一看。逻辑回归是一种输出标签是 0 / 1 0/1 0/1的分类模型,将 s i g m o i d ( x ) = 1 1 + e − x = e x 1 + e x sigmoid(x)=\frac{1}{1+e^{-x}}=\frac{e^x}{1+e^x} sigmoid(x)=1+ex1=1+exex套在线性回归 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b上得到,即 y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e(wTx+b)1,若模型为二分类 y = 1 / 0 y=1/0 y=1/0模型,输出的 y y y就是 y = 1 y=1 y=1的概率,即 p ( y = 1 ∣ x ) = 1 1 + e − ( w T x + b ) = e w T x + b 1 + e w T x + b p(y=1|x)=\frac{1}{1+e^{-(w^Tx+b)}}=\frac{e^{w^Tx+b}}{1+e^{w^Tx+b}} p(y=1∣x)=1+e(wTx+b)1=1+ewTx+bewTx+b,那么 p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = 1 1 + e w T x + b p(y=0|x)=1-p(y=1|x)=\frac{1}{1+e^{w^Tx+b}} p(y=0∣x)=1p(y=1∣x)=1+ewTx+b1,以最大似然估计计算 w , b w,b w,b,为了表述简单,设 p ( y = 1 ∣ x ) = π ( x ) , p ( y = 0 ∣ x ) = 1 − π ( x ) p(y=1|x)=\pi(x),p(y=0|x)=1-\pi(x) p(y=1∣x)=π(x),p(y=0∣x)=1π(x),共有 n n n个样本点且标签为 y = 0 , 1 y={0,1} y=0,1,那么似然函数 l ′ ( w , b ) = ∏ i = 1 n [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i l'(w,b)=\prod_{i=1}^{n}[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} l(w,b)=i=1n[π(xi)]yi[1π(xi)]1yi这里是关键,因为这里的 y i y_i yi 1 − y i 1-y_i 1yi都是1,相当于没加,但化简之后有抵消的作用),取对数得到 l ( w , b ) = ∑ i = 1 n [ y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ] l(w,b)=\sum_{i=1}^{n}[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))] l(w,b)=i=1n[yilogπ(xi)+(1yi)log(1π(xi))],合并同类项 l ( w , b ) = ∑ i = 1 n [ y i l o g π ( x i ) 1 − π ( x i ) + l o g ( 1 − π ( x i ) ) ] l(w,b)=\sum_{i=1}^{n}[y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i))] l(w,b)=i=1n[yilog1π(xi)π(xi)+log(1π(xi))],把 π ( x ) \pi(x) π(x) 1 − π ( x ) 1-\pi(x) 1π(x)的定义代入得到 l ( w , b ) = ∑ i = 1 n [ y i ( w T x i + b ) − l o g ( 1 + e w T x i + b ) ] l(w,b)=\sum_{i=1}^{n}[y_i(w^Tx_i+b)-log(1+e^{w^Tx_i+b})] l(w,b)=i=1n[yi(wTxi+b)log(1+ewTxi+b)],最大化此似然函数就是最小化 l ( w , b ) = ∑ i = 1 n [ − y i ( w T x i + b ) + l o g ( 1 + e w T x i + b ) ] l(w,b)=\sum_{i=1}^{n}[-y_i(w^Tx_i+b)+log(1+e^{w^Tx_i+b})] l(w,b)=i=1n[yi(wTxi+b)+log(1+ewTxi+b)],此函数为连续可导的凸函数,多种优化方法都可求得其最优解,设 β = ( w ; b ) , x = ( x ; 1 ) \beta=(w;b),x=(x;1) β=(w;b),x=(x;1),那么负对数似然函数的梯度是 ∂ l ( β ) ∂ β = − ∑ i = 1 n x i ( y i − e β T x i 1 + e β T x i ) \frac{\partial l(\beta)}{\partial \beta}=-\sum_{i=1}^{n}x_i(y_i-\frac{e^{\beta^Tx_i}}{1+e^{\beta^Tx_i}}) βl(β)=i=1nxi(yi1+eβTxieβTxi),梯度下降法,牛顿法都可解

X 1 , … , X n X_1,\dots,X_n X1,,Xn是来自 f ( x ∣ θ 1 , … , θ k ) f(x|\theta_1,\dots,\theta_k) f(xθ1,,θk)为概率密度函数的 i i d iid iid样本,似然函数的定义是 L ( θ ∣ x ) = L ( θ 1 , … , θ k ∣ x 1 , … , x n ) = ∏ i = 1 n f ( x i ∣ θ 1 , … , θ k ) L(\theta|x)=L(\theta_1,\dots,\theta_k|x_1,\dots,x_n)=\prod_{i=1}^nf(x_i|\theta_1,\dots,\theta_k) L(θx)=L(θ1,,θkx1,,xn)=i=1nf(xiθ1,,θk),即给定观测点 x x x,参数 θ \theta θ的似然函数是在参数确实是 θ \theta θ的时候,确实观测到 x x x的概率,最大化似然函数就是最大化观测到的实际情况的概率

机器学习实战中直接最大化对数似然函数,而不是最小化负对数似然函数,最大化方法用的是梯度上升,关键是计算了梯度 ∂ l ( β ) ∂ β = − ∑ i = 1 n x i ( y i − e β T x i 1 + e β T x i ) \frac{\partial l(\beta)}{\partial \beta}=-\sum_{i=1}^{n}x_i(y_i-\frac{e^{\beta^Tx_i}}{1+e^{\beta^Tx_i}}) βl(β)=i=1nxi(yi1+eβTxieβTxi)

    for k in range(maxCycles):              #heavy on matrix operations
        h = sigmoid(dataMatrix*weights)     #matrix mult
        error = (labelMat - h)              #vector subtraction
        weights = weights + alpha * dataMatrix.transpose()* error #matrix mult

这里 h h h得到的就是 e β T x i 1 + e β T x i \frac{e^{\beta^Tx_i}}{1+e^{\beta^Tx_i}} 1+eβTxieβTxi e r r o r error error就是 ( y i − e β T x i 1 + e β T x i ) (y_i-\frac{e^{\beta^Tx_i}}{1+e^{\beta^Tx_i}}) (yi1+eβTxieβTxi) d a t a M a t r i x . t r a n s p o s e ( ) ∗ e r r o r dataMatrix.transpose()* error dataMatrix.transpose()error 就是 x i ( y i − e β T x i 1 + e β T x i ) x_i(y_i-\frac{e^{\beta^Tx_i}}{1+e^{\beta^Tx_i}}) xi(yi1+eβTxieβTxi),权重 β = β + α   g r a d   l ( β ) \beta=\beta+\alpha\ grad\ l(\beta) β=β+α grad l(β),优化权重 m a x C y c l e s maxCycles maxCycles轮后返回。一次仅用一个样本点更新系数称为随机梯度上升,由于可以在新样本到来时对分类器进行增量式更新,因而随机梯度上升是一个在线学习算法,与之对应的,梯度上升一次处理所有数据被称作“批处理”

        h = sigmoid(sum(dataMatrix[i]*weights))
        error = classLabels[i] - h
        weights = weights + alpha * error * dataMatrix[i]

改进随机梯度上升可以使步长 α \alpha α 随迭代次数减小,防止越过最优点,还可以在随机梯度上升时随机选取样本,减少周期性的波动

        for i in range(m):
            alpha = 4/(1.0+j+i)+0.0001    #apha decreases with iteration, does not 
            randIndex = int(random.uniform(0,len(dataIndex)))#go to 0 because of the constant
            h = sigmoid(sum(dataMatrix[randIndex]*weights))
            error = classLabels[randIndex] - h
            weights = weights + alpha * error * dataMatrix[randIndex]
            del(dataIndex[randIndex])

感知机 f ( x ) = s i g n ( w T x + b ) f(x)=sign(w^Tx+b) f(x)=sign(wTx+b)也是一种线性分类模型,假设标签是 + 1 / − 1 +1/-1 +1/1,数据中误分类点到超平面的距离之和是 ∑ x i ∈ M − 1 ∣ ∣ w ∣ ∣ y i ( w T x i + b ) \sum_{x_i\in M}-\frac{1}{||w||}y_i(w^Tx_i+b) xiM∣∣w∣∣1yi(wTxi+b),不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1,就得到了损失函数 L = ∑ x i ∈ M − y i ( w T x i + b ) L=\sum_{x_i\in M}-y_i(w^Tx_i+b) L=xiMyi(wTxi+b),求偏导得到 ∂ w L = ∑ x i ∈ M − y i x i \partial_wL=\sum_{x_i\in M}-y_ix_i wL=xiMyixi ∂ b L = ∑ x i ∈ M − y i \partial_bL=\sum_{x_i\in M}-y_i bL=xiMyi,优化算法用批量大小为 1 1 1的批量随机梯度下降,这里是代码实现,它不能拟合 X O R XOR XOR函数而使得第一次 A I AI AI寒冬

从逻辑回归到受限玻尔兹曼机

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_森罗万象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值