0
点赞
收藏
分享

微信扫一扫

机器学习(下)

天蓝Sea 2022-02-16 阅读 23

机器学习(下)

PCA主成分分析

目的:降维

找这个特征分布差异比较大的作为主成分

通过坐标系的变换,找到一个分布差异比较大的轴

比如100个样本,4个特征。转换为2个特征。

100 * 4的矩阵,再乘上一个4*2的矩阵,可以变成100 * 2的矩阵

目标是找到4*2的矩阵

协方差

表示两个特征之间的相关程度

两个特征之间的协方差

σ j k = 1 n − 1 ∑ i = 1 n ( x i j − x j ˉ ) ( x i k − x k ˉ ) \sigma_{jk}=\frac{1}{n-1}\sum\limits_{i=1}^n(x_{ij}-\bar{x_j})(x_{ik}-\bar{x_k}) σjk=n11i=1n(xijxjˉ)(xikxkˉ)

协方差矩阵

∑ = 1 n − 1 ( ( X − x ˉ ) T ( X − x ˉ ) ) \sum=\frac{1}{n-1}((X-\bar x)^T(X-\bar x)) =n11((Xxˉ)T(Xxˉ))

x ˉ = 1 n ∑ k = 1 n x i \bar x=\frac{1}{n}\sum\limits_{k=1}^nx_i xˉ=n1k=1nxi

协方差矩阵计算特征值

取比较大的特征值,将其特征向量构造成矩阵即可

SVD奇异值分解

用于推荐系统,图像压缩

A m × n = u m × m × ∑ m × n × V n × n T A_{m\times n}=u_{m\times m} \times \sum_{m\times n} \times V^T_{n \times n} Am×n=um×m×m×n×Vn×nT

描述一个变换的时候,我们只需要描述这个变换主要的变化方向就好了

分解得到的 ∑ \sum 矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)

a m × n = u m × r × ∑ r × r V r × n T a_{m \times n}=u_{m \times r} \times \sum_{r \times r} V ^ T_{r \times n} am×n=um×r×r×rVr×nT

缺点:不知道每一维具体的含义

个性化推荐:

如果 B o b 2 D = B o b T × U × ∑ − 1 Bob_{2D}=Bob^T\times U \times \sum^{-1} Bob2D=BobT×U×1

K-means聚类算法

  1. 创建k个点作为起始质心(经常是随机选择)
  2. 当任意一个点的簇分配结果发生改变时,对数据集中的每个数据点,对每个质心与数据点之间的距离,将数据点分配到距离其最近的簇
  3. 对每一个簇,计算簇中所有点的均值并将均值作为质心

DBSCAN

找异常点/离群点

大圆:核心对象,周围半径内有多于 m i n _ s a m p l e min\_sample min_sample个点

小圆:非核心对象,周围半径内少于 m i n _ s a m p l e min\_sample min_sample个点

黑色点:离群点和任何核心对象之间的距离大于阈值

MeanShift

在d维空间中,任选一个点,以该点为圆心,落在这个球内所有点和圆心都产生一个向量,将这些向量相加,结果就是Mean shift向量

再以meanshift的重点做为圆心,再次得到一个meanshift向量,因此逐渐收敛到概率密度最大的地方

推荐系统

协同过滤

  1. 收集用户偏好
  2. 找到相似的用户或物品
  3. 计算推荐
相似度计算

欧氏距离: d ( x , y ) = ∑ ( x i − y i ) 2 d(x,y)=\sqrt{\sum(x_i-y_i)^2} d(x,y)=(xiyi)2 s i m ( x , y ) = 1 1 + d ( x , y ) sim(x,y)=\frac{1}{1+d(x,y)} sim(x,y)=1+d(x,y)1

皮尔逊相关系数

c o v ( X , Y ) = ∑ i = 1 n ( X i − X ˉ ) ( Y i − Y ˉ ) n − 1 cov(X,Y)=\frac{\sum_{i=1}^n(X_i-\bar X)(Y_i-\bar Y)}{n-1} cov(X,Y)=n1i=1n(XiXˉ)(YiYˉ)

皮尔逊相关系数: ρ X , Y = c o r r ( X , Y ) = c o v ( X , Y ) σ X σ Y \rho_{X,Y}=corr(X,Y)=\frac{cov(X,Y)}{\sigma_X \sigma_Y} ρX,Y=corr(X,Y)=σXσYcov(X,Y)

Pearson相关系数是用协方差除以两个变量的标准差得到的

余弦相似度: ∑ x i y i ∑ x i 2 ∑ y i 2 \frac{\sum x_iy_i}{\sqrt{\sum x_i^2} \sqrt{\sum y_i^2}} xi2 yi2 xiyi

邻居的选择

A.固定数量的邻居

B.基于相似度门槛的邻居

  • 基于用户的协同过滤
  • 基于物品的协同过滤

基于用户的协同过滤

在用户中找相似度

看相似用户选了何种

问题:

用户评分矩阵太稀疏

需要推断矩阵空格中的值

对于一个新用户,很难找到邻居用户

新物品,缺少评分

相似度用皮尔逊相似度

考虑共同打分物品的数目

对打分进行归一化处理

设置一个相似度阈值

不流行:

  1. 稀疏问题
  2. 数百万用户量太大
  3. 人是善变的

基于物品的协同过滤

  • 计算性能高,通常用户数量远大于物品数量
  • 可预先计算保留,物品并不善变

隐语义模型

  • 从数据出发,进行个性化推荐
  • 用户和物品之间有着隐含的联系
  • 隐含因子让计算机能理解就好
  • 将用户和物品通过中介隐含因子联系起来

R U I = P U Q I = ∑ k = 1 K P U , k Q k , I R_{UI}=P_UQ_I=\sum\limits_{k=1}^KP_{U,k}Q_{k,I} RUI=PUQI=k=1KPU,kQk,I

c = ∑ U , I ∈ K ( R U I − R U I ^ ) 2 = ∑ U , I ∈ K ( R U I − ∑ k = 1 K P U , k Q k , I ) 2 + λ ∣ ∣ P U ∣ ∣ 2 + λ ∣ ∣ Q t ∣ ∣ 2 c=\sum\limits_{U,I \in K}(R_{UI}-\hat{R_{UI}})^2=\sum\limits_{U,I \in K}(R_{UI}-\sum\limits_{k=1}^KP_{U,k}Q_{k,I})^2+\lambda ||P_U||^2+\lambda||Q_t||^2 c=U,IK(RUIRUI^)2=U,IK(RUIk=1KPU,kQk,I)2+λPU2+λQt2

利用梯度下降与迭代求解

自然语言处理

  • 拼写检查、关键词检索
  • 文本挖掘(产品价格、日期、时间、地点、人名、公司名)
  • 文本分类
  • 机器翻译
  • 客服系统
  • 复杂对话系统

深度学习

  • 手工特征耗时耗力,不宜拓展
  • 自动特征学习快,方便拓展
  • 深度学习提供通用的学习框架
  • 既可以监督学习,也可以无监督学习

语言模型

P ( S ) = p ( w 1 , … , w n ) = p ( w 1 ) p ( w 2 ∣ w 1 ) … p ( w n ∣ w 1 , w 2 , … , w n − 1 ) P(S)=p(w_1,\dots,w_n)=p(w_1)p(w_2|w_1)\dots p(w_n|w_1,w_2,\dots,w_{n-1}) P(S)=p(w1,,wn)=p(w1)p(w2w1)p(wnw1,w2,,wn1)

P ( S ) P(S) P(S)被称为语言模型,用来计算一个句子概率的模型

  1. 数据过于稀疏
  2. 参数空间太大

N-gram模型

每一个词的出现只与前面 n n n个词有关系

一般n=2,3

假设 n = 2 n=2 n=2 P ( S ) = p ( w 1 ) p ( w 2 ∣ w 1 ) p ( w 3 ∣ w 2 , w 1 ) … p ( w n ∣ w n − 1 , w n − 2 ) P(S)=p(w_1)p(w_2|w_1)p(w3|w_2,w_1)\dots p(w_n|w_{n-1},w_{n-2}) P(S)=p(w1)p(w2w1)p(w3w2,w1)p(wnwn1,wn2)

词向量

讲词转化为一个向量,并且具有一定的含义

word2vec

相同词根,词义相近的词距离下

关注的是上下文的逻辑,而不是这个词是什么

神经网络模型

得知前 n − 1 n-1 n1个词具体是什么,然后预测第 n n n个词是什么

第一层:输入层,word2vec

第二层:投影层,向量拼接,首尾拼接

第三层:Hidden Layer

第四层:输出层

训练样本: ( C o n t e x t ( w ) , w ) (Context(w),w) (Context(w),w)包括前 n − 1 n-1 n1个词分别的向量,假定每个词向量大小为 m m m

投影层: ( n − 1 ) ∗ m (n-1)*m (n1)m首尾拼接起来的大向量

输出: y w = ( w w , 1 , … , y w , N ) T y_w=(w_{w,1},\dots,y_{w,N})^T yw=(ww,1,,yw,N)T

表示上下文为 c o n t e x t ( w ) context(w) context(w)时,下一个词恰好为词典中第 i i i个词的概率

归一化: p ( w ∣ C o n t e x t ( w ) ) = e y w , i w ∑ i = 1 N e y w , i p(w|Context(w))=\frac{e^{y_w,i_w}}{\sum_{i=1}^N e^{y_{w,i}}} p(wContext(w))=i=1Neyw,ieyw,iw

Hierarchical Softmax

CBOW

通过上下文预测当前词语的出现概率的模型

Continuous Bag-of-Words Model

似然函数: α = ∑ w ∈ C l o g p ( w ∣ C o n t e x t ( w ) ) \alpha=\sum\limits_{w\in C}logp(w|Context(w)) α=wClogp(wContext(w))

softmax分层思想

越重要的词离根节点越近

在每一步需要走左子树还是右子树,利用逻辑回归 L o g i s t i c Logistic Logisticsigmoid函数

输入层:上下文的词语的词向量。词向量是个随机值,随着训练的进行不断被更新

投影层:求和(简单的向量加法)

输出层:输出最可能的 w w w,语料库中词汇量是固定的 ∣ C ∣ |C| C个,所以上述过程其实也是一个多分类问题,给定特征,从 ∣ C ∣ |C| C个分类中挑一个

p w p^w pw:从根节点出发到达 w w w对应叶子节点的路径

l w l^w lw:路径中包含结点的个数

p 1 w , p 2 w … , p l w w p_1^w,p_2^w\dots,p^w_{l^w} p1w,p2w,plww:路径 p w p^w pw中的各个节点

d 2 w , … d l w w ∈ { 0 , 1 } d^w_2,\dots d^w_{l^w} \in \{0,1\} d2w,dlww{0,1}词w的编码, d j w d^w_j djw表示路径 p w p^w pw第j个节点对应的编码(根节点无编码)

θ 1 w … θ l w − 1 w ∈ R m \theta_1^w \dots \theta^w_{l^w-1}\in R^m θ1wθlw1wRm路径 p w p^w pw中非叶节点对应的参数向量

正例概率: σ ( x w T θ ) = 1 1 + e − x w T θ \sigma(x_w^T\theta)=\frac{1}{1+e^{-x_w^T\theta}} σ(xwTθ)=1+exwTθ1

负例概率: 1 − σ ( x w T θ ) 1-\sigma(x_w^T \theta) 1σ(xwTθ)

p ( d j w ∣ X w , θ j − 1 w ) = [ σ ( X w T θ j − 1 w ) ] 1 − d j w . [ 1 − σ ( x w T θ j − 1 w ) ] d j w p(d_j^w|X_w,\theta_{j-1}^w)=[\sigma(X_w^T\theta_{j-1}^w)]^{1-d_j^w}.[1-\sigma(x_w^T\theta_{j-1}^w)]^{d_j^w} p(djwXw,θj1w)=[σ(XwTθj1w)]1djw.[1σ(xwTθj1w)]djw

利用梯度上升进行词向量的求解

word2vec采用将和向量的更新量整个应用到每个单词的词向量上去

负采样(Negative Sampling)

如何选取负样本

高频率的词更容易被采样出来

根据词频将其公平的分配给每个词语

构建一个0~1的随机数,看随机数落在的区间是哪个词

Skip-gram

通过一个词预测它的上下文

举报

相关推荐

0 条评论