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

应用场景

推荐系统:分析购买某类商品的潜在因素,判断该类商品的购买概率。挑选购买过的人群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(yixi)=u(xi)y(1u(xi))(1yi)
u(xi)=11+(e−xiTθ)u(x_i)=\tfrac{1}{1+(e^{-x_i^T\theta})}u(xi)=1+(exiTθ)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,...,ynx1,...,xn;θ)=i=1nP(yixi;θ)=i=1nu(xi)yi(1u(xi)1yi)
进一步可以得到负对数似然函数:
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,...,ynx1,...,xn;θ,b)=in((yilogu(xi))+(1yi)log(1u(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(yilogu(xi)+(1yi)log(1u(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)=1ex1
进一步可以得到:
θ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(yilog(uθ(xi))+(1yi)log(1uθ(xi)))]+λ2m1j=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

参考文献

《推荐系统与深度学习》黄昕等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多因子风险建模-协方差矩阵、投资组合风险

一、为什么要了解投资风险 在探讨投资风险前&#xff0c;我们不妨思考一个问题&#xff1a;好的投资&#xff0c;取决于哪些因素&#xff1f; 其实&#xff0c;卓越的投资回报&#xff0c;主要来源于四个因素&#xff1a; 收益预测&#xff1a;能形成合力的收益预期&#xff…

啊啊忍不住了,更!新!!!

你萌都还在&#xff0c;好开心 o(≧v≦)o在2017年9月21日这个特殊的日子&#xff0c;小夕在长达30天的沉默后&#xff0c;终于冒泡了&#xff01;有木有很激动&#xff0c;很期待&#xff1f;&#xff01;&#xff08;小夕&#xff0c;你不说我都忘了还有这订阅号了&#xff09…

【数据挖掘】数据挖掘和数据分析基础

参考文献&#xff1a;《Python数据分析与挖掘实战》张良均等 数据挖掘建模过程 定义挖掘目标&#xff1a;理解任务&#xff0c;确定指标数据采样&#xff1a;注意数据的完整性和有效性数据探索&#xff1a;异常值分析、缺失值分析、相关性分析、周期性分析数据预处理&#xff…

Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析

米筐科技&#xff08;RiceQuant&#xff09;策略研究报告&#xff1a;Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析 江嘉键1 年前1 概述Barra 结构化风险模型是全球知名的投资组合表现和风险分析工具。最近一段时间&#xff0c;我们米筐科技量化策略研究团…

深度学习资料挑的眼花啦?小夕帮你做选择!

小夕还记得几年前刚入坑的时候&#xff0c;老师给的入门资料就是一堆论文&#xff01;害的小夕差点放弃。。。如今深度学习应用的开发成本越来越低&#xff0c;学习资料越来越多&#xff0c;于是对初学者来说进入了另一个相反的困境——资料过多&#xff0c;让人眼花缭乱&#…

干货 | 深度学习的可解释性研究(一):让模型「说人话」

在这篇文章中&#xff1a;可解释性是什么&#xff1f;我们为什么需要可解释性&#xff1f;有哪些可解释性方法&#xff1f;在建模之前的可解释性方法建立本身具备可解释性的模型在建模之后使用可解释性性方法作出解释关于 BIGSCity参考文献不以人类可以理解的方式给出的解释都叫…

深度解析LSTM神经网络的设计原理

引人入胜的开篇&#xff1a;想要搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗&#xff1f;想知道simple RNN是如何一步步的走向了LSTM吗&#xff1f;觉得LSTM的工作机制看不透&#xff1f;恭喜你打开了正确的文章&#xff01; 前方核弹级高能预警&#xff01;本文信息…

【数据挖掘】挖掘建模-回归分析(1)

参考文献&#xff1a;《Python数据分析与挖掘实战》 分类与预测 一、实现过程 分类&#xff1a;构造分类模型&#xff0c;输入样本的属性值&#xff0c;输出对应的类别&#xff0c;将每个样本映射到预先定义好的类别。属于有监督的学习。预测&#xff1a;建立两种或两种以上变…

Step-by-step to LSTM: 解析LSTM神经网络设计原理

Ps&#xff1a;喂喂喂&#xff0c;你萌不要光收藏不点赞呀_(:з」∠)_emmmm... 搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗&#xff1f;想知道simple RNN是如何一步步的走向了LSTM吗&#xff1f;觉得LSTM的工作机制看不透&#xff1f;恭喜你打开了正确的文章&#…

【论文翻译】用知识图谱的多任务特征学习来增强推荐

Wang H, Zhang F, Zhao M, et al. Multi-task feature learning for knowledge graph enhanced recommendation[C]//The World Wide Web Conference. 2019: 2000-2010. 原文链接&#xff1a;https://arxiv.org/pdf/1901.08907.pdf 代码实现&#xff1a;https://github.com/hwwa…

LeetCode-二叉树算法总结-层次遍历,路径总和等

版权声明&#xff1a;本文为博主原创文章&#xff0c;欢迎转载&#xff0c;但请注明出处&#xff0c;谢谢愿意分享知识的你~~ https://blog.csdn.net/qq_32690999/article/details/80484440 </div><link rel"stylesheet" href"https://csdnimg.…

记录一次闲鱼维权事件

-----2017.11.16 最后一次更新----- 小夕也真的没有想到&#xff0c;在万般绝望之时竟然得到了这么多人的帮助。在本文发出后&#xff0c;多位阿里人员积极联系我了解了情况&#xff0c;很感激一位阿里的专家帮我将此事递交给相关部门&#xff0c;让专业的客服直接受理和重审此…

百度作业帮-产品分析

一、商业模式分析 1.1、问答时期&#xff08;2014年2月-2015年1月&#xff09; 商业模式之作业帮V1.0.png两点值得注意&#xff1a; 作业帮的出现有明显的历史原因&#xff0c;即由百度知道团队出品&#xff0c;因此切入K12教育初期&#xff0c;采取的是之前的问答模式&#xf…

【Python自然语言处理】中文分词技术——统计分词

中文分词方法 本文参考自书籍《Python自然语言处理实战&#xff1a;核心技术与算法》 用做个人的学习笔记和分享 1. 规则分词 规则分词的详细笔记 2. 统计分词 2.1 一般步骤 建立统计语言模型。句子划分为单词&#xff0c;对划分结果进行概率分析&#xff0c;获得概率最大的…

你的模型真的陷入局部最优点了吗?

小夕曾经收到过一个提问&#xff1a;“小夕&#xff0c;我的模型总是在前几次迭代后很快收敛了&#xff0c;陷入到了一个局部最优点&#xff0c;怎么也跳不出来&#xff0c;怎么办&#xff1f;”本文不是单纯对这个问题的回答&#xff0c;不是罗列工程tricks&#xff0c;而是希…

如何与深度学习服务器优雅的交互?(长期更新)

0. 故事序言 如果有人问小夕&#xff1a;"小夕&#xff0c;要是人工智能的就业岗位一夜之间消失了&#xff0c;你会去转行做什么呢&#xff1f;" 答曰&#xff1a;"当然是去做Linux运维啊23333" 小夕有一台自己负责的GPU服务器&#xff0c;她可让小夕操碎了…

风控模型师面试准备--技术篇(逻辑回归、决策树、集成学习)

原文地址&#xff1a;https://zhuanlan.zhihu.com/p/56175215 编辑于2019-02-12&#xff0c;持续更新中&#xff0c;有风控建模工作经验的&#xff0c;或者想转行风控建模的小伙伴可以互相交流下... 一.算法 逻辑回归决策树集成学习&#xff08;随机森林&#xff0c;Adaboost&…

【Tensorflow】打印输出tensor张量和变量的方法

打印输出张量的值的方法 import tensorflow as tfzeros tf.zeros([3,3])# 方法1 with tf.Session():print(zeros.eval())# 方法2 sess tf.Session() print(sess.run(zeros))打印输出tensor变量的值的方法 import tensorflow as tfonestf.Variable(tf.ones([3,3]))# 方法1 I…

step-by-step: 夕小瑶版神经网络调参指南(上)

距离上一篇文章已经过去好久好久好久啦。闭关几个月后&#xff0c;其实早有继续码文章的打算&#xff0c;先后写了一下核函数与神经网络的一些思考、文本预处理tricks、不均衡文本分类问题、多标签分类问题、tensorflow常用tricks、噪声对比估算与负采样等文章&#xff0c;结果…