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

ops/2025/1/20 16:25:49/

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.ppmy.cn/ops/151712.html

相关文章

【React学习笔记】第三章:React应用

1.使用create-react-app创建 react 应用 1.1 react 脚手架 react提供了一个用于创建 react 项目的脚手架:create-react-app 项目的整体技术架构为:react webpack es6 eslint 1.2 创建项目并启动 打开CMD 第一步: 全局安装react脚手架 …

【Bluedroid】HFP连接流程源码分析(四)

接上一篇分析【Bluedroid】HFP连接流程源码分析(三)-CSDN博客,本篇主要分析连接回调的处理部分。 bta_hf_client_mgmt_cback 蓝牙Hands-Free Profile (HFP) 客户端在RFCOMM层的一个管理回调函数。RFCOMM是蓝牙协议栈中用于模拟串行端口通信的一个协议,常用于HFP等蓝牙服务…

计算机的错误计算(二百一十六)

摘要 用一大模型计算 sin(0.99999) . 实验表明,通过联网搜索,大模型不仅介绍了如何计算sin(x), 还说明了sin(x)的应用等。其给出了正确的 Python代码,然而,其给出的值仅有4位正确数字。 例1. 计算 sin(0.99999) . 刚刚又上…

ubuntu常见指令详解

Ubuntu 是一个基于 Debian 的开源操作系统,广泛应用于服务器和桌面环境。以下是一些常用的 Ubuntu 命令及其详解,涵盖了文件操作、系统管理、网络配置、软件包管理等方面。 1. 文件与目录操作 ls - 列出目录内容 ls [选项] [目录]-l:详细列…

使用 Blazor 和 Elsa Workflows 作为引擎的工作流系统开发

开发一个完整的工作流系统使用 Blazor 和 Elsa Workflows 作为引擎,可以实现一个功能强大的工作流管理和设计系统。下面将提供详细的步骤和代码实现,展示如何在 Blazor 中开发一个基于 Elsa Workflows 的工作流系统。 项目概述 我们的工作流系统将包含以…

【golang学习之旅】使用VScode安装配置Go开发环境

1. 下载并安装Go 1.1 下载地址1.2 选择版本并下载1.3 安装目录1.4 验证是否安装成功 2. 配置环境变量 2.1 配置步骤2.2 GO部分环境变量说明 3. 下载或更新 Vscode 3.1 下载地址3.2 安装步骤 4. 为Go开发配置VScode 1. 下载并安装Go 1.1 下载地址 https://studygolang.com/dl…

Hadoop 和 Spark 的内存管理机制分析

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

高性能、并发安全的 Go 嵌入式缓存库 如何使用?

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…