日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】逻辑回归模型

發布時間:2024/7/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】逻辑回归模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應用場景

推薦系統:分析購買某類商品的潛在因素,判斷該類商品的購買概率。挑選購買過的人群A和未購買的人群B,獲取兩組人群不同的用戶畫像和行為特征數據。建立用戶行為模型、商品推薦模型實現產品的自動推薦。

公式

對于二分類問題,給定訓練集{(x1, y1), …, xn,yn)},其中xi表示第i個用戶的p維特征,yi∈{0,1}表示第i個用戶是否購買過該商品。

模型滿足二項式分布:
P(yi∣xi)=u(xi)y(1?u(xi))(1?yi)P(y_{i}|x_{i})=u(x_{i})^y(1-u(x_{i}))^{(1-y_{i})}P(yi?xi?)=u(xi?)y(1?u(xi?))(1?yi?)
u(xi)=11+(e?xiTθ)u(x_i)=\tfrac{1}{1+(e^{-x_i^T\theta})}u(xi?)=1+(e?xiT?θ)1?
其中,θ為模型參數,包含該商品的偏置項。
通過最大似然估計來求解:
L=P(y1,...,yn∣x1,...,xn;θ)=∏i=1nP(yi∣xi;θ)=∏i=1nu(xi)yi(1?u(xi)1?yi)L=P(y_1,...,y_n|x_1,...,x_n;\theta) =\prod_{i=1}^{n}P(y_i|x_i;\theta) =\prod_{i=1}^{n}u(x_i)^{y_i}(1-u(x_i)^{1-y_i}) L=P(y1?,...,yn?x1?,...,xn?;θ)=i=1n?P(yi?xi?;θ)=i=1n?u(xi?)yi?(1?u(xi?)1?yi?)
進一步可以得到負對數似然函數:
L(θ)=?logP(y1,...,yn∣x1,...,xn;θ,b)=?∑in((yilogu(xi))+(1?yi)log(1?u(xi)))L(\theta)=-logP(y_1,...,y_n|x_1,...,x_n;\theta,b) =-\sum_{i}^{n}((y_ilogu(x_i))+(1-y_i)log(1-u(x_i))) L(θ)=?logP(y1?,...,yn?x1?,...,xn?;θ,b)=?in?((yi?logu(xi?))+(1?yi?)log(1?u(xi?)))
采用隨機梯度下降法來求解數值:
θ=argminθ∑in(yilogu(xi)+(1?yi)log(1?u(xi)))\theta=argmin_{\theta}\sum_{i}^{n}(y_ilogu(x_i)+(1-y_i)log(1-u(x_i))) θ=argminθ?in?(yi?logu(xi?)+(1?yi?)log(1?u(xi?)))
對參數θ求導得到:
?L?θ=∑in(g(xiTθ)?yi)xi\frac{\partial L}{\partial \theta}=\sum_{i}^{n}(g(x_i^T\theta)-y_i)x_i ?θ?L?=in?(g(xiT?θ)?yi?)xi?
g(x)=11?e?xg(x)=\tfrac{1}{1-e^{-x}} g(x)=1?e?x1?
進一步可以得到:
θt+1=θt?ρ(g(xiTθ)?yi)xi\theta^{t+1}=\theta^{t}-\rho (g(x_i^T\theta)-y_i)x_i θt+1=θt?ρ(g(xiT?θ)?yi?)xi?
其中,0<ρ<1是步長參數。

代碼實現

損失函數的定義,正則化防止過擬合
loss=?1m[∑i=1m(yilog(uθ(xi))+(1?yi)log(1?uθ(xi)))]+λ12m∑j=1nθj2loss=-\tfrac{1}{m}[\sum_{i=1}^{m}(y_ilog(u_\theta(x_i))+(1-y_i)log(1-u_\theta(x_i)))]+\lambda\tfrac{1}{2m}\sum_{j=1}^{n}\theta_j^2 loss=?m1?[i=1m?(yi?log(uθ?(xi?))+(1?yi?)log(1?uθ?(xi?)))]+λ2m1?j=1n?θj2?

import random import numpy as np class LogisticRegression(object) :def __init__(self, x, y, lr=0.0005, lam=0.1):'''x: features of examplesy: label of exampleslr: learning ratelambda: penality on theta'''self.x = xself.y = yself.lr = lrself.lam = lamn = self.x.shapeself.theta = np.array ([0.0] * (n + 1))def _sigmoid (self , x) :z = 1.0/(1.0 + np.exp((-1) * x))return zdef loss_function (self):u = self._sigmoid(np.dot(self.x, self.theta)) # u(xi)c1 = (-1) * self.y * np.log (u)c2 = (1.0 - self.y) * np.log(1.0 - u)# 計算交叉熵 L(θ)求均值loss = np.average(sum(c1 - c2) + 0.5 * self.lam * sum(self.theta[1:] ** 2))return lossdef _gradient(self, iterations) :# m是樣本數, p是特征數m, p = self.x.shapefor i in range(0, iterations):u = self._sigmoid(np.dot(self.x, self.theta))diff = self.theta - self.yfor _ in range(0, p):self.theta[_]= self.theta[_] - self.lr * (1.0 / m) * (sum(diff * self.x [:, _]) + self.lam * m * self.theta[_])cost= self.loss_function()def run(self, iteration):self. _gradient(iteration)def predict(self, x):preds = self._sigmoid(np.dot(x, self.theta))np.putmask (preds, preds >= 0.5, 1.0)np.putmask (preds, preds < 0.5, 0.0)return preds

參考文獻

《推薦系統與深度學習》黃昕等

總結

以上是生活随笔為你收集整理的【机器学习】逻辑回归模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。