• 新生任务-1


    一、推荐系统

    1. 什么是推荐系统

    推荐系统顾名思义就是为用户进行推荐的系统. 无论是商品、音乐、书籍 或 电影, 都能够通过这样的一个系统对使用者进行推荐.

    像淘宝中给你推荐你可能感兴趣的商品, 抖音软件中你下一条即将播放的视频, 这些都算是推荐系统的实际运用场景.

    2. 推荐系统的发展

    关于推荐系统一词, 很多人的第一印象是亚马逊当年号称有 20% 的成交来源于推荐, 就像很多人讲大数据, 总是会提啤酒和尿布的故事(世界杯的时候, 丈夫会在购买啤酒的同时购买尿布).

    在 PC 时代, 推荐系统更像是一个补充. PC 屏幕很大, 推荐的场景能出现在各种地方, 比如很多电商公司的看了又看、买了又买, 都是很大的推荐场景. 这个时候的技术, 和机器学习的关系并不大, 以数据挖掘为主.

    推荐系统井喷式的发展是在移动互联网时代, 每个人只要拥有一个移动设备就能成为推荐系统的数据来源, 而且更具有说服力.

    3. 推荐系统未来展望

    在推荐系统中需要不断提升的应该是用户对推荐的事物的满意程度. 这应该算是推荐系统的终极目标, 但是满意程度只是一个感觉. 在推荐系统中也就只能通过对事物的评分来描述满意程度.

    人是善变的生物, 对事物打分也不一定是绝对理智的行为. 这是不能被忽视的因素. 这也导致整个系统的复杂度将提升.

    推荐系统最大的优点是千人千面, 最大的缺点是号称千人千面; 千人千面听着非常美好, 如果能做到, 那就可以用一个 super app 满足所有人的需求.

    可惜现实是残酷的, 技术的发展远不如预期, 无论做再好的推荐系统, 目前的主流技术都是基于 behavior 的. 第一个问题就是用户的冷启动, 当用户不留下 behavior 时, 各大推荐系统都很难有好的表现. 此时应用也就只能推荐一些热门产品给用户.

    再者, 我们放弃主动选择信息转而交给推荐系统这一行为, 很有可能导致我们走向信息茧房.

    所谓信息茧房是指一个人会不断地看到自己所看过的、或者是感兴趣的东西, 长此以往, 他就会变得越来越不能包容其他事物, 越来越偏执, 犹如陷入蚕茧一般.

    二、训练集、测试集和验证集

    用一个不恰当的比喻来说明3种数据集之间的关系 :

    • 训练集 : 学生的课本, 学生根据课本里的内容来掌握知识.

    • 测试集 : 考试, 考的题是平常都没有见过, 考察学生举一反三的能力.

    • 验证集 : 作业, 通过作业可以知道不同学生学习情况、进步的速度快慢.

    传统上, 一般三者切分的比例是 6 : 2 : 2, 验证集并不是必须的. 当然也有 8 : 1 : 1 比例的划分

    • 训练集直接参与了模型调参的过程, 显然不能用来反映模型真实的能力 ( 防止课本死记硬背的学生拥有最好的成绩, 即防止过拟合 )

    • 验证集参与了人工调参 ( 超参数 ) 的过程, 也不能用来最终评判一个模型( 刷题库的学生不能算是学习好的学生 )

    • 所以要通过最终的考试 ( 测试集 ) 来考察一个学 ( 模 ) 生 ( 型 ) 真正的能力 ( 期末考试 )

    三、常规人工奇异值分解

    先写出奇异值分解公式

    A = U Σ V T A = U \Sigma V^{\mathrm{T}} A=UΣVT

    其中 Σ = [ σ 1 ⋯ σ r ] \Sigma =

    [σ1σr]
    Σ=σ1σr U U U V V V 是正交矩阵

    常规求解方式是利用

    A T A = V Σ T U T U Σ V T = V Σ T Σ V T = V [ σ 1 2 σ 2 2 ⋱ σ r 2 ] V T

    ATA=VΣTUTUΣVT=VΣTΣVT=V[σ12σ22σr2]VT
    ATA=VΣTUTUΣVT=VΣTΣVT=Vσ12σ22σr2VT

    这个式子是正定矩阵 A T A A^{\mathrm{T}}A ATA 的正交分解.

    该用例来自 MIT 线性代数课程

    例 1 : 已知矩阵 A = [ 4 4 − 3 3 ] A=

    [4433]
    A=[4343], 求其 S V D SVD SVD 分解

    1. 先计算 A T A A^{\mathrm{T}}A ATA, 得到 (这里是求 V)

      A T A = [ 25 7 7 25 ] A^{\mathrm{T}}A =

      [257725]
      ATA=[257725]

    2. 求出特征值和特征向量, 并对特征向量使用施密特正交化

      λ 1 = 32 , x 1 = [ 1 2 1 2 ] \lambda_1 = 32, x_1 =

      [1212]
      λ1=32,x1=[2 12 1]

      λ 2 = 18 , x 2 = [ 1 2 − 1 2 ] \lambda_2 = 18, x_2 =

      [1212]
      λ2=18,x2=[2 12 1]

    3. 又根据 A A T AA^{\mathrm{T}} AAT 重复上述步骤 (这里是求 U)

      A A T = [ 32 0 0 18 ] AA^{\mathrm{T}} =

      [320018]
      AAT=[320018]

      对应的特征值和特征向量是

      λ 1 = 32 , x 1 = [ 0 1 ] \lambda_1 = 32, x_1 =

      [01]
      λ1=32,x1=[01]

      λ 2 = 18 , x 2 = [ 0 1 ] \lambda_2 = 18, x_2 =

      [01]
      λ2=18,x2=[01]

    4. 直接代入就可以得到

      [ 4 4 3 − 3 ] = [ 1 0 0 1 ] [ 32 0 0 18 ] [ 1 2 1 2 1 2 − 1 2 ]

      [4433]
      =
      [1001]
      [320018]
      [12121212]
      [4343]=[1001][32 0018 ][2 12 12 12 1]

    但是这样分解之后, 第 4 步计算出来的矩阵是 [ 4 4 − 3 3 ]

    [4433]
    [4343] 和最开始的矩阵符号不一样, 这是因为特征向量的方向问题会对结果产生影响.

    所以要使用原始公式 σ i u i = A v i \sigma_iu_i = Av_i σiui=Avi 确定了 v v v σ \sigma σ, 直接代入就能得到 u u u. 通过下面的例子进行展开描述.

    例 2 : 已知矩阵 A = [ 4 3 8 6 ] A=

    [4386]
    A=[4836], 求其 S V D SVD SVD 分解

    可知 A A A 的秩为 1, 行空间是一条直线, 零空间是与之垂直的一条直线

    同时 A A A 的列空间是一条直线, 左零空间是与之垂直的一条直线

    那么行空间方向上的基为 [ 0.8 0.6 ]

    [0.80.6]
    [0.80.6], 零空间方向上的基 [ − 0.6 0.8 ]
    [0.60.8]
    [0.60.8]

    列空间方向 : u 1 = 1 / 5 [ 1 2 ] u_1 = 1/\sqrt{5}

    [12]
    u1=1/5 [12], 左零空间方向 : 1 / 5 [ 2 − 1 ] 1/\sqrt{5}
    [21]
    1/5 [21]

    然后 S V D SVD SVD 就是将行空间与零空间上的基转换为列空间与左零空间上的基

    所以就可以得到矩阵 U U U :

    U = 1 5 [ 1 2 2 − 1 ] U = \frac{1}{\sqrt{5}}

    [1221]
    U=5 1[1221]

    类似的, 我们可以得到:

    V T = [ 0.8 0.6 0.6 − 0.8 ] V^{\mathrm{T}} =

    [0.80.60.60.8]
    VT=[0.80.60.60.8]

    和之前利用 A T A A^{\mathrm{T}}A ATA 的特征值来求得对角矩阵 Σ \Sigma Σ, 最后得到

    A = 1 5 [ 1 2 2 − 1 ] [ 125 0 0 0 ] [ 0.8 0.6 0.6 − 0.8 ] A = \frac{1}{\sqrt{5}}

    [1221]
    [125000]
    [0.80.60.60.8]
    A=5 1[1221][125 000][0.80.60.60.8]

  • 相关阅读:
    大事务导致数据库恢复时间长
    家用工作站方案:ThinkBook 14 2023 版
    【Linux】重定向|重新理解Linux下一切皆文件
    一小时掌握vim基础用法
    vue3+vite:动态引入静态图片资源
    Mysql8.0&Mysql5.7&Mysql5.6&Mysql5.5特性对比
    2023年软件测试之功能测试(完整版)
    apache-maven-3.6.3 安装配置教程
    「Redis数据结构」压缩列表(ZipList)
    重学Java的第一章
  • 原文地址:https://blog.csdn.net/qq_44309220/article/details/125609100