机器学习—吴恩达_ 第10周_学习总结
机器学习—吴恩达_ 第10周_学习总结21.11.8-21.11.14一、无监督学习在原有的监督学习中,无监督学习和监督学习相比监督学习有标签信息,但是无监督学习是没有标签信息的,我们需要使用特有的函数方法使数据集寻找数据中间的内在关系,如将上图分为两个点集(簇)的算法被称为聚类算法。K-均值算法算法接收没有标记的数据集,然后将数据聚类成不同的组。是一个迭代算法,使用该算法的一般步骤为:确定需要分
机器学习—吴恩达_ 第10周_学习总结
21.11.8-21.11.14
一、无监督学习

在原有的监督学习中,无监督学习和监督学习相比监督学习有标签信息,但是无监督学习是没有标签信息的,我们需要使用特有的函数方法使数据集寻找数据中间的内在关系,如将上图分为两个点集(簇)的算法被称为聚类算法。
K-均值算法
- 算法接收没有标记的数据集,然后将数据聚类成不同的组。
- 是一个迭代算法,使用该算法的一般步骤为:
- 确定需要分的类数量n
- 选择K个随机的点,称为***聚类中心*** cluster centroids
- 于数据集中的每一个数据,按照距离KKK个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类
- 计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。
- 重复上面步骤,到中心点不在变化
实例:
迭代一次

迭代3次

迭代10次

K-均值的代价函数-畸变函数
K-均值最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,其中μc(i){{\mu }_{{{c}^{(i)}}}}μc(i)代表与x(i){{x}^{(i)}}x(i)最近的聚类中心点,要找使得代价函数最小的 c(1)c^{(1)}c(1),c(2)c^{(2)}c(2),…,c(m)c^{(m)}c(m)和μ1μ^1μ1,μ2μ^2μ2,…,μkμ^kμk:
J(c(1),...,c(m),μ1,...,μK)=1m∑i=1m∥X(i)−μc(i)∥2J(c^{(1)},...,c^{(m)},μ_1,...,μ_K)=\dfrac {1}{m}\sum^{m}_{i=1}\left\| X^{\left( i\right) }-\mu_{c^{(i)}}\right\| ^{2}J(c(1),...,c(m),μ1,...,μK)=m1i=1∑m∥∥∥X(i)−μc(i)∥∥∥2
- 聚类数量的选择可以通过代价函数和K的图像来选择(拐点处-肘部法则)

聚类的相关资料
1.相似度/距离计算方法总结
(1). 闵可夫斯基距离Minkowski/(其中欧式距离:p=2p=2p=2)
dist(X,Y)=(∑i=1n∣xi−yi∣p)1pdist(X,Y)={{\left( {{\sum\limits_{i=1}^{n}{\left| {{x}_{i}}-{{y}_{i}} \right|}}^{p}} \right)}^{\frac{1}{p}}}dist(X,Y)=(i=1∑n∣xi−yi∣p)p1
(2). 杰卡德相似系数(Jaccard):
J(A,B)=∣A∩B∣∣A∪B∣J(A,B)=\frac{\left| A\cap B \right|}{\left|A\cup B \right|}J(A,B)=∣A∪B∣∣A∩B∣
(3). 余弦相似度(cosine similarity):
nnn维向量xxx和yyy的夹角记做θ\thetaθ,根据余弦定理,其余弦值为:
cos(θ)=xTy∣x∣⋅∣y∣=∑i=1nxiyi∑i=1nxi2∑i=1nyi2cos (\theta )=\frac{{{x}^{T}}y}{\left|x \right|\cdot \left| y \right|}=\frac{\sum\limits_{i=1}^{n}{{{x}_{i}}{{y}_{i}}}}{\sqrt{\sum\limits_{i=1}^{n}{{{x}_{i}}^{2}}}\sqrt{\sum\limits_{i=1}^{n}{{{y}_{i}}^{2}}}}cos(θ)=∣x∣⋅∣y∣xTy=i=1∑nxi2i=1∑nyi2i=1∑nxiyi
(4). Pearson皮尔逊相关系数:
ρXY=cov(X,Y)σXσY=E[(X−μX)(Y−μY)]σXσY=∑i=1n(x−μX)(y−μY)∑i=1n(x−μX)2∑i=1n(y−μY)2{{\rho }_{XY}}=\frac{\operatorname{cov}(X,Y)}{{{\sigma }_{X}}{{\sigma }_{Y}}}=\frac{E[(X-{{\mu }_{X}})(Y-{{\mu }_{Y}})]}{{{\sigma }_{X}}{{\sigma }_{Y}}}=\frac{\sum\limits_{i=1}^{n}{(x-{{\mu }_{X}})(y-{{\mu }_{Y}})}}{\sqrt{\sum\limits_{i=1}^{n}{{{(x-{{\mu }_{X}})}^{2}}}}\sqrt{\sum\limits_{i=1}^{n}{{{(y-{{\mu }_{Y}})}^{2}}}}}ρXY=σXσYcov(X,Y)=σXσYE[(X−μX)(Y−μY)]=i=1∑n(x−μX)2i=1∑n(y−μY)2i=1∑n(x−μX)(y−μY)
Pearson相关系数即将xxx、yyy坐标向量各自平移到原点后的夹角余弦。
2.聚类的衡量指标
(1). 均一性:ppp
类似于精确率,一个簇中只包含一个类别的样本,则满足均一性。其实也可以认为就是正确率(每个 聚簇中正确分类的样本数占该聚簇总样本数的比例和)
(2). 完整性:rrr
类似于召回率,同类别样本被归类到相同簇中,则满足完整性;每个聚簇中正确分类的样本数占该类型的总样本数比例的和
(3). V-measure:
均一性和完整性的加权平均
V=(1+β2)∗prβ2∗p+rV = \frac{(1+\beta^2)*pr}{\beta^2*p+r}V=β2∗p+r(1+β2)∗pr
(4). 轮廓系数
样本iii的轮廓系数:s(i)s(i)s(i)
簇内不相似度:计算样本iii到同簇其它样本的平均距离为a(i)a(i)a(i),应尽可能小。
簇间不相似度:计算样本iii到其它簇CjC_jCj的所有样本的平均距离bijb_{ij}bij,应尽可能大。
轮廓系数:s(i)s(i)s(i)值越接近1表示样本iii聚类越合理,越接近-1,表示样本iii应该分类到 另外的簇中,近似为0,表示样本iii应该在边界上;所有样本的s(i)s(i)s(i)的均值被成为聚类结果的轮廓系数。
s(i)=b(i)−a(i)max{a(i),b(i)}s(i) = \frac{b(i)-a(i)}{max\{a(i),b(i)\}}s(i)=max{a(i),b(i)}b(i)−a(i)
(5). ARI
数据集SSS共有NNN个元素, 两个聚类结果分别是:
X={X1,X2,...,Xr},Y={Y1,Y2,...,Ys}X=\{{{X}_{1}},{{X}_{2}},...,{{X}_{r}}\},Y=\{{{Y}_{1}},{{Y}_{2}},...,{{Y}_{s}}\}X={X1,X2,...,Xr},Y={Y1,Y2,...,Ys}
XXX和YYY的元素个数为:
a={a1,a2,...,ar},b={b1,b2,...,bs}a=\{{{a}_{1}},{{a}_{2}},...,{{a}_{r}}\},b=\{{{b}_{1}},{{b}_{2}},...,{{b}_{s}}\}a={a1,a2,...,ar},b={b1,b2,...,bs}
记:nij=∣Xi∩Yi∣{{n}_{ij}}=\left| {{X}_{i}}\cap {{Y}_{i}} \right|nij=∣Xi∩Yi∣
ARI=∑i,jCnij2−[(∑iCai2)⋅(∑iCbi2)]/Cn212[(∑iCai2)+(∑iCbi2)]−[(∑iCai2)⋅(∑iCbi2)]/Cn2ARI=\frac{\sum\limits_{i,j}{C_{{{n}_{ij}}}^{2}}-\left[ \left( \sum\limits_{i}{C_{{{a}_{i}}}^{2}} \right)\cdot \left( \sum\limits_{i}{C_{{{b}_{i}}}^{2}} \right) \right]/C_{n}^{2}}{\frac{1}{2}\left[ \left( \sum\limits_{i}{C_{{{a}_{i}}}^{2}} \right)+\left( \sum\limits_{i}{C_{{{b}_{i}}}^{2}} \right) \right]-\left[ \left( \sum\limits_{i}{C_{{{a}_{i}}}^{2}} \right)\cdot \left( \sum\limits_{i}{C_{{{b}_{i}}}^{2}} \right) \right]/C_{n}^{2}}ARI=21[(i∑Cai2)+(i∑Cbi2)]−[(i∑Cai2)⋅(i∑Cbi2)]/Cn2i,j∑Cnij2−[(i∑Cai2)⋅(i∑Cbi2)]/Cn2
二、数据压缩
- 将数据从三维降至二维:将三维向量投射到一个二维的平面上,强迫使得所有的数据都在同一个平面上,降至二维的特征向量。

- 主成分分析(PCA)是最常见的降维算法:
在PCA中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长读。将nnn维数据降至kkk维,目标是找到向量u(1)u^{(1)}u(1),u(2)u^{(2)}u(2),…,u(k)u^{(k)}u(k)使得总的投射误差最小

主成分分析与线性回归是两种不同的算法。主成分分析最小化的是投射误差(Projected Error),而线性回归尝试的是最小化预测误差。线性回归的目的是预测结果,而主成分分析不作任何预测。上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于红线投影)。
PCA 减少nnn维到kkk维算法:
第一步是均值归一化。我们需要计算出所有特征的均值,然后令xj=xj−μjx_j= x_j-μ_jxj=xj−μj如果特征是在不同的数量级上,我们还需要将其除以标准差 σ2σ^2σ2。
第二步是计算协方差矩阵(covariance matrix)ΣΣΣ:
∑=1m∑i=1n(x(i))(x(i))T\sum=\dfrac {1}{m}\sum^{n}_{i=1}\left( x^{(i)}\right) \left( x^{(i)}\right) ^{T}∑=m1∑i=1n(x(i))(x(i))T,Sigma=1m∑i=1n(x(i))(x(i))TSigma=\dfrac {1}{m}\sum^{n}_{i=1}\left( x^{(i)}\right) \left( x^{(i)}\right) ^{T}Sigma=m1i=1∑n(x(i))(x(i))T
第三步是计算协方差矩阵ΣΣΣ的特征向量(eigenvectors):

对于一个 n×nn×nn×n维度的矩阵,上式中的UUU是一个具有与数据之间最小投射误差的方向向量构成的矩阵。如果我们希望将数据从nnn维降至kkk维,我们只需要从UUU中选取前kkk个向量,获得一个n×kn×kn×k维度的矩阵,我们用UreduceU_{reduce}Ureduce表示,然后通过如下计算获得要求的新特征向量z(i)z^{(i)}z(i):z(i)=UreduceT∗x(i)z^{(i)}=U^{T}_{reduce}*x^{(i)}z(i)=UreduceT∗x(i),其中xxx是n×1n×1n×1维的,因此结果为k×1k×1k×1维度。
低维向高维:xxx为2维,zzz为1维,z=UreduceTxz=U^{T}_{reduce}xz=UreduceTx,相反的方程为:xappox=Ureduce⋅zx_{appox}=U_{reduce}\cdot zxappox=Ureduce⋅z,xappox≈xx_{appox}\approx xxappox≈x。

高斯分布&&异常检测
高斯分布,也称为正态分布,例如变量 xxx 符合高斯分布 x∼N(μ,σ2)x \sim N(\mu, \sigma^2)x∼N(μ,σ2)则其概率密度函数为:
p(x,μ,σ2)=12πσexp(−(x−μ)22σ2)p(x,\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)p(x,μ,σ2)=2πσ1exp(−2σ2(x−μ)2)
μμμ和σ2σ^2σ2的计算方法如下:对阴影部分积分值为1
μ=1m∑i=1mx(i)\mu=\frac{1}{m}\sum\limits_{i=1}^{m}x^{(i)}μ=m1i=1∑mx(i) σ2=1m∑i=1m(x(i)−μ)2\sigma^2=\frac{1}{m}\sum\limits_{i=1}^{m}(x^{(i)}-\mu)^2σ2=m1i=1∑m(x(i)−μ)2

异常检测算法:对于给定的数据集 x(1),x(2),...,x(m)x^{(1)},x^{(2)},...,x^{(m)}x(1),x(2),...,x(m),我们要针对每一个特征计算 μ\muμ 和 σ2\sigma^2σ2 的估计值:
μj=1m∑i=1mxj(i)\mu_j=\frac{1}{m}\sum\limits_{i=1}^{m}x_j^{(i)}μj=m1i=1∑mxj(i) σj2=1m∑i=1m(xj(i)−μj)2\sigma_j^2=\frac{1}{m}\sum\limits_{i=1}^m(x_j^{(i)}-\mu_j)^2σj2=m1i=1∑m(xj(i)−μj)2
获得了平均值和方差的估计值,给定新的一个训练实例,根据模型计算 p(x)p(x)p(x)
p(x)=∏j=1np(xj;μj,σj2)=∏j=1112πσjexp(−(xj−μj)22σj2)p(x)=\prod\limits_{j=1}^np(x_j;\mu_j,\sigma_j^2)=\prod\limits_{j=1}^1\frac{1}{\sqrt{2\pi}\sigma_j}exp(-\frac{(x_j-\mu_j)^2}{2\sigma_j^2})p(x)=j=1∏np(xj;μj,σj2)=j=1∏12πσj1exp(−2σj2(xj−μj)2)
当p(x)<εp(x) < \varepsilonp(x)<ε时,为异常。
异常检测VS监督学习
| 异常检测 | 监督学习 |
|---|---|
| 非常少量的正向类(异常数据 y=1y=1y=1), 大量的负向类(y=0y=0y=0) | 同时有大量的正向类和负向类 |
| 许多不同种类的异常,非常难。根据非常 少量的正向类数据来训练算法。 | 有足够多的正向类实例,足够用于训练 算法,未来遇到的正向类实例可能与训练集中的非常近似。 |
| 未来遇到的异常可能与已掌握的异常、非常的不同。 | |
| 例如: 欺诈行为检测 生产(例如飞机引擎)检测数据中心的计算机运行状况 | 例如:邮件过滤器 天气预报 肿瘤分类 |
三、推荐系统(Recommender Systems)
根据用户数据预测:当已经有了数据的时候,我们可以通过对用户原有的数据进行预测出这个用户的趋向,如用户1给爱情片的分数很高,但是给动作片的分很低,我们可以推算出用户更多喜欢爱情片,于是可以将爱情片的类型推荐给用户。
基于内容的推荐系统:通过所有用户给这个电影的评价打分,得出这个电影的特征,如有两个特征:爱情片:x1=0.8x_1=0.8x1=0.8;动作片:x2=0.2x_2=0.2x2=0.2;我们知道电影的数据后,我们可以针对用户的喜好将该电影进行推送。
总之不管是通过对用户还是电影分析,我们都能得出一些特征。但是既没有用户的参数,也没有电影的特征,这两种方法都不可行了
协同过滤Collaborative filtering, CF
CF有两种基本方法:基于用户的协同过滤和基于项目的协同过滤。 步骤:
- 了解数据库中有多少用户/项目与给定的用户/项目相似。
- 考虑到与它类似的用户/项目的总权重,评估其他用户/项目,来预测你会给该产品用户的打分。
在协同过滤从算法中,我们通常不使用方差项,如果需要的话,算法会自动学得。
协同过滤算法使用步骤如下:
-
初始 x(1),x(1),...x(nm), θ(1),θ(2),...,θ(nu)x^{(1)},x^{(1)},...x^{(nm)},\ \theta^{(1)},\theta^{(2)},...,\theta^{(n_u)}x(1),x(1),...x(nm), θ(1),θ(2),...,θ(nu)为一些随机小值
-
使用梯度下降算法最小化代价函数
-
在训练完算法后,我们预测(θ(j))Tx(i)(\theta^{(j)})^Tx^{(i)}(θ(j))Tx(i)为用户 jjj 给电影 iii 的评分
通过这个学习过程获得的特征矩阵包含了有关电影的重要数据,这些数据不总是人能读懂的,但是我们可以用这些数据作为给用户推荐电影的依据。
例如,如果一位用户正在观看电影 x(i)x^{(i)}x(i),我们通过两部电影的特征向量之间的距离∥x(i)−x(j)∥\left\| {{x}^{(i)}}-{{x}^{(j)}} \right\|∥∥x(i)−x(j)∥∥的大小可以寻找另一部电影x(j)x^{(j)}x(j)。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)