5. 推荐算法的最基础和最直观的认识

1.性别年龄转换为统一的计量单位

所谓推荐,就是替别人推荐,比如工厂A需要招男员工,希望大家推荐认识的人。那么在这里,就有了推荐的概念,限定条件是男。我们知道,人的性别一般分为男或者女。在这里假设把男用“1”表示,女用“0”表示,那么假设下面有几个人,

很明显的,根据我们的约定可以知道,王、李和杨是男的,符合工厂A的需要。

那么假如工厂还要求年龄在25~30岁之间呢?这时又对年龄也做了限制。如他们的年龄如下:

这样不好看,为了统一计量,我们假设符合条件的年龄为1,不符合条件的年龄为0,则上表变为:

那问题来了,我们界定了性别和年龄的计量单位,如何推荐符合条件的人呢,其实很简单,我们只需要写一个二维的向量X = (1, 1),然后把每个人的性别和年龄看成一个二维的向量,这个几个人的性别和年龄就构成一个矩阵,

我们将矩阵和向量相乘得到

现在我们将这个结果合并到上表中得到下表:

大家发现规律了没有,其实累计的值为2的表示满足工厂A的招工要求,显然,满足招工要求的人是:王、李、杨。

2.多个条件和加权重的计算

2.1多个条件的计算

        在第1部分我们推荐了满足2个条件(年龄和性别)的员工,那么如果工程A又加了一些条件呢,比如射高:160~190cm,,体重:50~100kg,假如几个人的个人信息如下表:

        我们根据上面的思路,将每个属性符合条件的数据改为1,不符合条件的数据改为0,这时得到下表:

        然后我们设一个4维的向量x = (1, 1, 1, 1),上面的4个条件可以得到一个矩阵

        我们将矩阵和向量相乘得到

        现在我们将这个结果合并到上表中得到下表:

        显然,累计值为4的则为满足条件的人,则满足条件的人为王、李。

        那么,如果再增加几十个限制属性时,也可以用相同的方法进行计算推荐符合条件的人。

2.2加权重的计算

        以上的计算是假设权重相同的条件下进行推荐的,那么现在假设权重不同呢,比如性别、年龄、身高、体重的权重分别为0.4、0.3、0.2、0.1,则计算方式如下:        

        现在我们将这个结果合并到上表中得到下表:

         假如我们将0.7分以上的表示为合格,则满足工厂A录取条件的人为:王、李、杨。

        显然,不同权重时,我们也可以做计算,最后得到满足工厂A需要的人。其实,推荐算法就是以此为基础的.推荐算法用到了余弦求相似度,大家可以想想余弦相似度与本文的向量相乘求相似的有什么区别(其实向量乘积就是余弦的向量积的分子),余弦多个分母是为了将不同属性的计量进行归一化,这样才有可比性,否则就没有意义,而本文将不同的属性用了相同的计量方式(0或者1),并且加了权重,所以不需要归一化,即不需要余弦向量积的分母就能达到余弦相似化的效果。当然,实际应用中用余弦相似度更好更广泛一些。

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

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

相关文章

ASP.NET Core - 配置系统之配置添加

ASP.NET Core - 配置系统之配置添加 2. 配置添加 2. 配置添加 配置系统可以读取到配置文件中的信息,那必然有某个地方可以将配置文件添加到配置系统中。之前的文章中讲到 ASP.NET Core 入口文件中,builder(WebApplicationBuilder 对象) 中有一个 Config…

AI编程工具横向评测--Cloudstudio塑造完全态的jupyter notebook助力数据分析应用开发

AI编程工具横向评测–Cloudstudio塑造完全态的jupyter notebook助力数据分析应用开发 数据分析类应用的开发,指的是首先进行数据分析,比如统计学分析、机器学习模型的构建等,然后将分析的流程开发成数据分析类的工具,或者将数据分…

HBase实训:纸币冠字号查询任务

一、实验目的 1. 理解分布式数据存储系统HBase的架构和工作原理。 2. 掌握HBase表的设计原则,能够根据实际业务需求设计合理的表结构。 3. 学习使用HBase Java API进行数据的插入、查询和管理。 4. 实践分布式数据存储系统在大数据环境下的应用,…

算法与数据结构——复杂度

目录 一 数据结构前言 1 数据结构 2 算法 3 算法与数据结构的关系 二 算法效率 1 算法效率: 2 复杂度 2.1 概念: 2.2分类: 2.3 空间复杂度在计算机高速发展的现代重要吗? 3 复杂度的重要性 三 时间复杂度…

usb通过hdc连接鸿蒙next的常用指令

参考官方 注册报名https://www.hiascend.com/developer/activities/details/44de441ef599450596131c8cb52f7f8c/signup?channelCodeS1&recommended496144 hdc-调试命令-调测调优-系统 - 华为HarmonyOS开发者https://developer.huawei.com/consumer/cn/doc/harmonyos-guid…

论文笔记-arXiv2025-A survey about Cold Start Recommendation

论文笔记-arXiv2025-Cold-Start Recommendation towards the Era of Large Language Models: A Comprehensive Survey and Roadmap 面向大语言模型(LLMs)时代的冷启动推荐:全面调研与路线图1.引言2.前言3.内容特征3.1数据不完整学习3.1.1鲁棒…

如何将数据库字符集改为中文,让今后所有的数据库都支持中文

最后一行有我自己的my.ini文件 数据库输入中文数据时会变为乱码, 这个时候,我们为每个数据库设置字符集,太过于麻烦,为数据库单独设置重启后又会消失 Set character_set_database’utf8’; Set character_set_server’utf8’; …

AI刷题-小R的随机播放顺序、不同整数的计数问题

目录 一、小R的随机播放顺序 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步骤 最终代码: 运行结果: 二、 不同整数的计数问题 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步骤 最终…

从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用

文章目录 1. 后端项目搭建 1.1 环境准备1.2 数据表准备1.3 SpringBoot3项目创建1.4 MySql环境整合,使用druid连接池1.5 整合mybatis-plus 1.5.1 引入mybatis-plus1.5.2 配置代码生成器1.5.3 配置分页插件 1.6 整合swagger3(knife4j) 1.6.1 整…

在.NET用C#将Word文档转换为HTML格式

将Word文档转换为HTML格式尤其具有显著的优势,它不仅能够确保文档内容在多种设备和平台上保持一致灵活的显示,还便于通过网络进行传播和集成到各种Web应用中。随着越来越多的企业和开发者寻求更灵活、更具兼容性的文件处理方式,.NET框架下的C…

GPT-5 传言:一场正在幕后发生的 AI 变革

新的一年,让我们从一个引人入胜的话题开始:如果我告诉你,GPT-5 并非虚构,而是真实存在呢?它不仅真实存在,而且正在你看不见的地方悄然塑造着世界。我的基本假设是:OpenAI 已经秘密开发出 GPT-5&…

【机器学习实战】kaggle 欺诈检测---使用生成对抗网络(GAN)解决欺诈数据中正负样本极度不平衡问题

【机器学习实战】kaggle 欺诈检测---如何解决欺诈数据中正负样本极度不平衡问题https://blog.csdn.net/2302_79308082/article/details/145177242 本篇文章是基于上次文章中提到的对抗生成网络,通过对抗生成网络生成少数类样本,平衡欺诈数据中正类样本极…

ZNS SSD垃圾回收优化方案解读-2

四、Brick-ZNS 关键设计机制解析 Brick-ZNS 作为一种创新的 ZNS SSD 设计,聚焦于解决传统 ZNS SSDs 在垃圾回收(GC)过程中的数据迁移低效问题,其核心特色为存储内数据迁移与地址重映射功能。在应用场景中,针对如 Rock…

浅谈云计算14 | 云存储技术

云存储技术 一、云计算网络存储技术基础1.1 网络存储的基本概念1.2云存储系统结构模型1.1.1 存储层1.1.2 基础管理层1.1.3 应用接口层1.1.4 访问层 1.2 网络存储技术分类 二、云计算网络存储技术特点2.1 超大规模与高可扩展性2.1.1 存储规模优势2.1.2 动态扩展机制 2.2 高可用性…

C++ 强化记忆

1 预处理指令 # include <> #include <filename> 添加系统头文件。 #include "filename" 添加自定义头文件。 # include <iostream> 对应使用cout cin的情况下需要添加 # include <string> 对应使用字符串情况 # include <fstream> …

web worker 前端多线程一、

前言&#xff1a; JavaScript 语言采用的是单线程模型&#xff0c;也就是说&#xff0c;所有任务只能在一个线程上完成&#xff0c;一次只能做一件事。前面的任务没做完&#xff0c;后面的任务只能等着。随着电脑计算能力的增强&#xff0c;尤其是多核 CPU 的出现&#xff0c;单…

Vue项目搭建教程超详细

目录 一. 环境准备 1. 安装node.js 2. 安装Vue cli 二. 创建 Vue 2 项目 1. 命令行方式 2. vue ui方式 一. 环境准备 1. 安装node.js 可参考node.js卸载与安装超详细教程-CSDN博客 2. 安装Vue cli npm install -g vue/cli检查是否安装成功 vue --version Vue CLI …

IM聊天学习资源

文章目录 参考链接使用前端界面简单效果消息窗口平滑滚动至底部vue使用watch监听vuex中的变量变化 websocket握手认证ChatKeyCheckHandlerNettyChatServerNettyChatInitializer 参考链接 zzhua/netty-chat-web - 包括前后端 vue.js实现带表情评论功能前后端实现&#xff08;仿…

彻底理解JVM类加载机制

文章目录 一、类加载器和双亲委派机制1.1、类加载器1.2、双亲委派机制1.3、自定义类加载器1.4、打破双亲委派机制 二、类的加载 图片来源&#xff1a;图灵学院   由上图可知&#xff0c;创建对象&#xff0c;执行其中的方法&#xff0c;在java层面&#xff0c;最重要的有获取…