【机器学习篇】--SVD从初始到应用
SVD一般应用场景--推荐系统,图像压缩。
1、直观感受。
SVD其实就是将矩阵分界,直观感受如图。就是将A矩阵分界成U,S,V三个矩阵相乘。一般推荐系统中用的多。S是对角阵,里面的特征值是从大到小排列的。

2、前述知识。
一个矩阵乘以一个向量结果还是一个向量,并且等于原始向量的
倍,相当于对原始向量进行一个某个方向上的拉伸。

3、矩阵压缩

图1

图2
对图1,图2来说,假设m表示是样本个数,n表示特征个数,则抽取S特征中比较重要的特征值,(因为特征值是从大到小排列的,所以假如抽取前几个特征值作为保留的特征值),则S维度减少,变成r*r,则原始m*n矩阵分解成U ---m*r(比较瘦),S--r*r(方阵),V--r*n(比较长)三个矩阵相乘。
4、原理剖析
抓住主要变换方向,所以保留特征值比较大的方向。


5、实例讲解一
SVD可解释性比较差,需要去猜。


6、实例讲解二(推荐系统)
U :6*2(6代表是Item个数)
V:4*2(4代表是用户个数)
S:取前两个比较重要的值



映射到二维图中:找出最相似的用户。

【机器学习篇】--SVD从初始到应用的更多相关文章
- 简单易学的机器学习算法—SVD奇异值分解
简单易学的机器学习算法-SVD奇异值分解 一.SVD奇异值分解的定义 假设M是一个的矩阵,如果存在一个分解: 其中的酉矩阵,的半正定对角矩阵,的共轭转置矩阵,且为的酉矩阵.这样的分解称为M的奇 ...
- 机器学习之SVD分解
一.SVD奇异值分解的定义 假设是一个的矩阵,如果存在一个分解: 其中为的酉矩阵,为的半正定对角矩阵,为的共轭转置矩阵,且为的酉矩阵.这样的分解称为的奇异值分解,对角线上的元素称为奇异值,称为左奇异矩 ...
- Python代码阅读(第12篇):初始化二维数组
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了二维数组的初始化功能,根据给定的宽高初始化二维数组. 本篇阅读的代码片段来自于30-seconds-o ...
- 【机器学习】--Adaboost从初始到应用
一.前述 AdaBoost算法和GBDT(Gradient Boost Decision Tree,梯度提升决策树)算法是基于Boosting思想的机器学习算法.在Boosting思想中是通过对样本进 ...
- 【TensorFlow篇】--DNN初始和应用
一.前述 ANN人工神经网络有两个或两个以上隐藏层,称为DNN 只有一个隐藏层是多层感知机 没有隐藏层是感知机 二.反向传播应用举例 举例: 正向传播,反向传播是一次迭代, 正向传播:在开始的每一层上 ...
- 【Spark篇】---SparkStream初始与应用
一.前述 SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展.高吞吐量.容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume, Twitter, Zer ...
- 【Spark篇】---Spark初始
一.前述 Spark是基于内存的计算框架,性能要优于Mapreduce,可以实现hadoop生态圈中的多个组件,是一个非常优秀的大数据框架,是Apache的顶级项目.One stack rule ...
- 机器学习——利用SVD简化数据
奇异值分解(Singular Value Decompositon,SVD),可以实现用小得多的数据集来表示原始数据集. 优点:简化数据,取出噪声,提高算法的结果 缺点:数据的转换可能难以理解 适用数 ...
- 机器学习14—SVD学习笔记
test14.py #-*- coding:utf-8 import sys sys.path.append("svdRec.py") import svdRec from num ...
随机推荐
- openfire推送离线聊天信息的插件
插件说明 在手机的聊天应用中,经常出现的一个需求就是把用户的离线消息通过推送系统推送到用户的手机上,为了实现这个功能,本人就开发了本插件,这个openfire 插件是拦截了发给openfire用户的离 ...
- selenium--unittest 框架/selenium--常见异常
selenium常见异常 from selenium import webdriver from selenium.webdriver.common.by import By from seleniu ...
- stats.go
, len(c.clients)) for _, client := range c.clients { clients = append(cl ...
- context.go
package nsqd type context struct { nsqd *NSQD }
- bzoj 1592 dp
就是dp啊 f[i][j]表示到第i位,最后一位高度是j的最小花费 转移::f[i][j]=minn(f[i-1][k])+abs(a[i]-num[j]);(k<=j) #include< ...
- BZOJ_3969_[WF2013]Low Power_二分答案
BZOJ_3969_[WF2013]Low Power_二分答案 Description 有n个机器,每个机器有2个芯片,每个芯片可以放k个电池. 每个芯片能量是k个电池的能量的最小值. 两个芯片的能 ...
- CocoaPods 安装 使用&常见操作错误
CocoaPods 安装 使用 1.开启 terminal 2.移除现有 Ruby 默认源 $ gem sources --remove https://rubygems.org/ 3.使用新的源 $ ...
- 配置(迁移)Laravel的注意事项
1.如果Laravel是在Linux下运行,如果权限不足,会报错 2.如果是从git上clone下来的项目,需要安装composer,切到项目根目录下 composer install compose ...
- C语言——输入输出函数
0.getchar().putchar() 输入缓冲区,键盘输入是"行缓冲"遇到一个换行符的时候清空缓冲区. 标准流,stdin和stdout,是标准的输入输出流,键盘输入就是用的 ...
- Jmeter----【Mac电脑】环境配置与打开Jmeter界面
前提条件:打开Jmeter界面,首先需要安装java并配置环境变量. 第一步:下载并安装jdk和环境配置 java jdk下载:http://www.oracle.com/technetwork/ja ...