非监督学习
如下图所示,,非监督学习是把相距较近的点划分为K个簇

具体可以应用于市场分割、社交网络分析、组织计算集群和天文数据分析
K-均值算法
输入:需要划分的集群数量K,以及训练集
{
x
(
1
)
,
x
(
2
)
,
…
,
x
(
m
)
}
\{x^{(1)},x^{(2)},\dots,x^{(m)}\}
{x(1),x(2),…,x(m)}。
其中,
x
(
i
)
∈
R
n
x^{(i)}\in R^n
x(i)∈Rn(不需要
x
0
=
1
x_0=1
x0=1)
算法过程:
随机初始化K个集群中心点
μ
1
,
μ
2
,
.
.
.
,
μ
k
∈
R
n
\mu_1,\mu_2,...,\mu_k\in R^n
μ1,μ2,...,μk∈Rn(一般从样本中随机取K个)
Repeat
f
o
r
i
=
1
t
o
m
c
(
i
)
=
距
离
x
(
i
)
最
近
的
集
群
中
心
的
编
号
(
相
当
于
将
样
本
分
配
到
各
集
群
中
心
点
)
f
o
r
k
=
1
t
o
m
μ
k
:
=
所
有
归
属
于
该
集
群
中
心
的
样
本
的
均
值
点
(
移
动
集
群
中
心
到
均
值
上
)
for\quad i = 1\quad to\quad m \\ c^(i) = 距离x^{(i)}最近的集群中心的编号 (相当于将样本分配到各集群中心点) \\ for\quad k = 1\quad to\quad m \\ \mu_k := 所有归属于该集群中心的样本的均值点 (移动集群中心到均值上)
fori=1tomc(i)=距离x(i)最近的集群中心的编号(相当于将样本分配到各集群中心点)fork=1tomμk:=所有归属于该集群中心的样本的均值点(移动集群中心到均值上)
优化目标
代价函数:
J
(
c
(
1
)
,
…
,
c
(
m
)
,
μ
1
,
…
,
μ
K
)
=
1
m
∣
x
(
i
)
−
μ
c
(
i
)
∣
2
J(c^{(1)},\dots,c^{(m)},\mu_1,\dots,\mu_K)=\frac{1}{m}|x^{(i)}-\mu_{c^{(i)}}|^2
J(c(1),…,c(m),μ1,…,μK)=m1∣x(i)−μc(i)∣2
由上可知,先簇分配,改变
c
(
1
)
,
…
,
c
(
m
)
c^{(1)},\dots,c^{(m)}
c(1),…,c(m)值,使J降低,再通过移动簇中心,改变
μ
1
,
…
,
μ
K
\mu_1,\dots,\mu_K
μ1,…,μK,进一步使J降低
另外,目标函数就是使代价函数最小
随机初始化集群中心点
- 集群中心点数量K应小于样本数量m
- 从样本中随机取K个样本作为集群中心点
选取多组K个随机样本作为集群中心点,分别经过K均值算法进行迭代更新后,选取J值最小的那组集群中心点。
选取集群中心点数量K
-
肘部法则

如上面左图,使J值下降的转折处即为合适的K值;
但是实际上并不好用,因为一般是像右图,很难找到转折点 -
按目标选择
通过找到集群的目的,来选择K值,比如目标是增加分类多样化,那K值取大一些,如果目标是减少类别(减少产品类型,降低生产成本),那K值取小一些。
降维
数据压缩
将两维特征的样本 ( x 1 , x 2 ) (x_1,x_2) (x1,x2)压缩成一维 z 1 z_1 z1:

将三维特征的样本
(
x
1
,
x
2
,
x
3
)
(x_1,x_2,x_3)
(x1,x2,x3)压缩成两维
(
z
1
,
z
2
)
(z_1,z_2)
(z1,z2):

数据可视化
这步主要是观察压缩后的数据是否有一定规律(一般不要指望能看出来规律。。)
以下是国家的各个特征数据,包括GDP、平均收入、平均年龄等

以上特征压缩成两维后:

将压缩后的特征可视化(如果将GDP相关数据压缩成一维,国家规模相关数据压缩成另一维,则可以看到如美国就国家规模和GDP都高,新加坡国家规模小而GDP高):

主成分分析(PCA)
PCA与线性回归的区别,如下图,线性回归是样本点到假设函数的y轴距离最短;而PCA是样本点到假设函数的距离最短

算法过程
-
样本集: x ( i ) x^{(i)} x(i)
-
均值归一化:
x j ( i ) = x j ( i ) − μ j s j μ j = 1 m ∑ i = 1 m x j ( i ) x^{(i)}_j = \frac{x^{(i)}_j-\mu_j}{s_j} \\ \\ \mu_j=\frac{1}{m}\sum_{i=1}^mx^{(i)}_j xj(i)=sjxj(i)−μjμj=m1i=1∑mxj(i)
其中, s j s_j sj的取值为令 x j ( i ) x^{(i)}_j xj(i)在一个小范围内,请参照之前博客中提到的均值归一化步骤。 -
求协方差方程机器特征向量
∑ = 1 m ∑ i = 1 m ( x ( i ) ) ( x ( i ) ) T \sum=\frac{1}{m}\sum^m_{i=1}(x^{(i)})(x^{(i)})^T ∑=m1i=1∑m(x(i))(x(i))T
在octave中:

从上图可知,取由svd函数计算得到的n*n矩阵U的第1列到第k列为Ureduce,转置Ureduce后乘以样本 x ( i ) ( 列 向 量 ) x^{(i)}(列向量) x(i)(列向量),就得到降维后的样本 x ( i ) x^{(i)} x(i)
重建维度
将上面的
z
=
U
r
e
d
u
c
e
′
∗
x
z=Ureduce'*x
z=Ureduce′∗x的算式反转,得到下式:
x
a
p
p
r
o
x
(
i
)
=
U
r
e
d
u
c
e
∗
z
(
i
)
x^{(i)}_{approx} = Ureduce*z^{(i)}
xapprox(i)=Ureduce∗z(i)
选择要下降到的维度K
K值的选取,要在尽量小的情况下,保证数据压缩后的差异性不要太大,也就是说,需要衡量以下差异指标:

上面指标小于等于0.01,说明差异度小于等于1%,保留了99%方差
上面的差异指标在实际计算中,通过octave的svd函数返回的n*n的S矩阵([U,S,V]=svd(Sigma))来计算,如下式:
1
−
∑
i
=
1
k
S
i
i
∑
i
=
1
n
S
i
i
≤
0.01
1-\frac{\sum_{i=1}^kS_{ii}}{\sum_{i=1}^nS_{ii}}\le0.01
1−∑i=1nSii∑i=1kSii≤0.01
实际上计算:
∑
i
=
1
k
S
i
i
∑
i
=
1
n
S
i
i
≥
0.99
\frac{\sum_{i=1}^kS_{ii}}{\sum_{i=1}^nS_{ii}}\ge0.99
∑i=1nSii∑i=1kSii≥0.99
PCA应用建议
-
在监督学习中也可以用于压缩数据(比如逻辑回归和线性回归,将特征数目压缩)
-
PCA应用:
- 压缩:减小存储量、加快机器学习算法运行
- 数据可视化,压缩到维度k为2或3(维度太高无法可视化)
-
不建议使用PCA来避免过拟合。且注意k值最好远小于n值,比如k为1000,n为10000
-
在使用PCA前,先使用原始样本 x ( i ) x^{(i)} x(i)进行训练,若不行,再用PCA
947



被折叠的 条评论
为什么被折叠?



