数学建模社区-数学中国

标题: 【机器学习】无监督学习的概念,使用无监督学习发现数据的特点 [打印本页]

作者: 杨利霞    时间: 2022-9-14 16:37
标题: 【机器学习】无监督学习的概念,使用无监督学习发现数据的特点
【机器学习】无监督学习的概念,使用无监督学习发现数据的特点
) d( K- ~3 i2 j  S7 Y9 I' d& p+ n! O
到目前位置,我们主要把注意力集中在监督学习的问题上,数据集中的每个数据点都有一个已知的标签或者目标值。然而如果面对没有已知的输出结果,或者没有人监督学习算法,我们要怎么做。# V  Y/ A+ g% R. u* f: v
/ r! b5 H! t0 y( ]" E
这就是无监督学习 。: G. q2 o1 u+ A5 s+ @0 e8 R
) z0 D9 [' J) p* \% W) w
在无监督、非监督学习中了,学习过程仅使用输入数据,没有更多的指导信息,要求从这些数据中提取知识。我们已经讨论了非监督学习众多形式的一种降维。另一个普及的领域就是聚类分析。他的目的是吧数据分为相似元素组成的不同区域中。4 I9 ?" @: p/ o9 Y3 {2 ~' ?
' u2 o/ X& D. W, k
在本章中,我们想要理解不同的聚类算法如何从简单到,无标记的数据集中提取特征。这些结构特征,可以用于特征处理,图像处理,甚至是作为无监督学习任务的预处理步骤。& a) p" a0 ~: F$ e# ?7 j0 Y
作为一个具体的例子,我们将对图像进行聚类,将色彩空间降到16位数。- K; x1 R  w4 k7 L

3 @% y6 z8 j) \* A解决的问题' ^4 v# k# y$ u, l
1.K-means聚类和期望最大化是什么?如何在opencv中实现这些算法。
, z7 I; n6 t& A' U# x  d- Z/ A$ d2.如何在层次树中使用聚类算法。他带来的好处有哪些。1 u2 a8 ?1 m# v1 e% o6 j# E
3.如何使用无监督学习,进行预处理,图像处理,分类。  E4 W9 k8 W) ^
( x0 b( ~# U2 N; z% }* j5 T6 |: W+ j; Z
1 理解无监督学习: W0 R. K6 p' q0 }/ L, y
无监督学习可能有很多形式,但是他们的目标总是把原始数据转化为更加丰富,更加有意义的表示,这么做可以让人们更容易理解,也可以更方便的使用机器学习算法进行解析。
( S/ L6 U- k8 [( W# M7 h无监督学习的应用包括一下应用:8 v/ ?: n2 }' x3 |& v
1降维:他接受一个许多特征的高维度数据表示,尝试对这些数据进行压缩,以使其主要特征,可以使用少量的携带高信息量的数据来表示。
$ k* j# G7 ~/ X+ @6 t  y6 b2因子分析:用于找到导致被观察的到的数据的隐含因素或者未观察到的方面。) ?' _  [" Z& r' j$ Q$ A+ g8 K
3聚类分析:
: S: I/ g  f: y' B4 X! M尝试把数据分成相似元素组成的不同组。3 ~2 |! c3 r. u* u* ^
5 N# o* ^5 ]- p3 P( Z: ~
无监督学习主要的挑战就是,如何确定一个算法是否出色,或者学习到什么有用内容,通常评估一个无监督学习算法结果的唯一方式是手动检查,并确定结果是否有意义。
- X' q4 L# i) h8 L/ }: ?) H; ^1 s; q  |4 z  Q) E
话虽然如此,但是非监督学习,可以非常有,比如作为预处理或者特征提取的步骤。
/ o! G* X% |7 r# I$ M% a. O+ y1 [. n) P
2理解K-means聚类
0 ]- C. m3 Y3 u* s" D$ U3 g" oOpencv 提供最有用的聚类算法是k-means,因为它会从一个没有标记的多维度数据集中搜寻预设的K个聚类结果。' l! q& [, I8 H

% D# [$ n7 X# r1 Q它通过两个简单的假设来完成最佳聚类了。: }1 k. d# U( Z) N
1 每个聚类中心都是属于该类别的所有数据点的算术平均值0 \4 H& h  p  I+ U4 m" b8 w8 q
2 聚类中的每一个点相对其他聚类中心,更靠近本类别的中心。
5 A; `: z8 Y  F. Z8 B$ {3 U
! M! V4 B9 A. r; C" p3 M- {( W2.1 实现第一个kmeans例子
* \  s3 w/ ?! k" A! L6 p首先,生成一个包含四个不同点集合的数据集。为了强调这是一个非监督的方法,我门在可视化将忽略哪些标签。使用matplotlib进行可视化。4 F" O. z6 Y, b+ v5 ~
0 b' n9 {8 }- A
import matplotlib.pyplot as plt6 r6 X! Z% k& ], a
import pylab2 _+ r! D, j) o4 q, E
from sklearn.datasets._samples_generator import make_blobs5 n( H  t; Y  n  O8 x( T
6 N9 |7 A" @4 x! c$ T
plt.style.use('ggplot')! p( }4 A- q5 [: m2 D* j! u9 m- V
x,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)
' A% F  R9 O: v  m0 ~+ aplt.scatter(x[:,0],x[:,1],s=100)
9 `7 |  t2 h/ d' bpylab.show(), R2 D9 d# A/ k/ @
; Q: Z! ^8 o0 \

& a2 q+ v. k9 ?/ O5 @* l( g3 O16 h8 N- N% ?" g' L, ~8 I2 e7 ]8 `
2. a1 [& f: r7 M- T/ n6 D$ f* m3 p
3/ s  h: u1 i7 o( n
4
0 \9 D5 _# Z* S% L7 Q- O; J5
; A& Z% A6 C+ H) R$ Z6, B# k+ |/ b4 p4 J' b; K; ]2 |
7
6 @  V" C9 j- c! f, C89 v+ Z  I) ~' C: e- ]$ K8 h" o
9
9 y# K9 J5 O) t5 O/ m9 `! m( [10# ^! `3 h" p: o# h( X: F
+ b2 k$ c6 m6 A
我们创建一个四个不同区域的聚类,centers=4,一共300节点。- W2 d! F, |# ]2 a  Y3 n) ?  g
如上程序生成图像所示结果。
; M& @. f2 r1 C9 C' ]尽管没有给数据分配目标标签,但直接使用肉眼还是可以看出来一共是四类。
& ~& H% {6 y) P: okmeans就可以通过算法办到,无需任何关于目标的标签或者潜在的数据分布的信息。8 A" V! W# s4 g" `, k
当然尽管,kmeans在opencv中是一个统计模型,不能调用api中的train和predict。相反,使用cv2.kmeans可以直接使用这个算法。。为了使用这个模型,我们需要指定一些参数,比如终止条件,和初始化标志。7 Y2 T+ ?# h+ }5 {. q4 v) X

3 _9 C+ z! ~3 N. I9 E! H* z2 I( W我们让算法误差小于1.0(cv2.TERM_CRITERIA_EPS),或者已经 执行了十次迭代(cv2.TERM_CITTERIA_MAX_ITER)时候终止。8 r! D; a: J7 G

$ ?) \3 z8 X3 @- V
* N( f- ]$ |" x1 d7 M! I8 ~
+ l( x' C! w( @$ {; y; V5 s6 q6 e7 pimport matplotlib.pyplot as plt5 m8 P. v2 `8 S! v/ V
import pylab
- {  s$ y6 v% }4 v% \/ M& nfrom sklearn.datasets._samples_generator import make_blobs1 u- ~0 t# D$ o! V
import cv2% H! i& U/ X& I% m: p" Z
import numpy as np
! u7 H) I! x; G, T
' k) ~3 O* [- P8 J! N& [" u# Nplt.style.use('ggplot')4 n4 G2 l9 Z; _) |! p
x,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)* r* `( _; K3 M$ V2 U- _
plt.scatter(x[:,0],x[:,1],s=100)
; M: L0 e1 S* @! l% l6 ?6 k+ H. ~  ]) I/ C6 {  [: A
1 z' Y/ \9 J; i
criteria=(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,10,1.0)
7 w5 l  K+ s8 j! Tflags=cv2.KMEANS_RANDOM_CENTERS
1 D. h7 ]* k1 @: y- t1 V# Rcompactness,labels,centers=cv2.kmeans(x.astype(np.float32),4,None,criteria,10,flags)
; d5 a  A0 v0 s5 |) uprint(compactness)' M3 J. |3 N  R, j: p
9 i0 X9 r) r3 ?0 L
plt.scatter(x[:,0],x[:,1],c=labels,s=50,cmap='viridis')- G$ n" y$ |# ^( j7 n# u
plt.scatter(centers[:,0],centers[:,1],c='black',s=200,alpha=0.5)
% G4 K) w. K/ K" M" L& V( r7 X- ~
0 v# ]1 x8 p5 lpylab.show()8 j  m4 H6 u9 d$ e5 |) s0 T) D

# v& O: S1 P! M, E( @% _# b
2 G8 M% s& V8 p3 }) t. b6 u/ u- G+ l& l' P
* h0 R6 U* j  X3 g4 w
8 f; s% U7 o0 Z' _- R8 i% ?

& |8 u' J4 H% r& `- g; k, V
( v6 O  Y2 L: Z/ ]16 |( y6 l8 ]% C/ |
2
/ B" K* M, i, W) }6 [/ u3
- k7 k$ T, c2 q, H  J4# @* E" {' C7 E" Z
5
1 s& n# y7 O4 T. i" |1 `6
$ h8 d1 l$ i" I5 {, B& ~# T. _7
3 Y) B4 D6 C4 C+ ~, Y8
4 b' g) G' D& ?3 _5 ?+ P  O" p+ j9
- Z  u! h0 l* d- z  q: O10
) Q! U$ t' Z" h5 \& K% x4 j' i11
4 W* v+ ]+ ]0 |12& G. Q! i% T' ?8 ]2 y5 r: W2 w% i: ?
13( p# n. \/ `- r3 I% A6 O8 o
14
! E' [" ^' l" ~8 p! E7 t15- n. [* T& V7 X0 z* ]9 t# ~( U
16
. P) a, w! E% A# M8 ?2 e178 V- q" t9 l7 u7 w
188 V: X7 p; A* ^0 J. P" o+ A% w, Q
19
0 p& {0 m# B/ v7 M4 i20
0 V. q+ ^2 ^& q+ D21$ m9 @) }8 P/ }! `3 }
22" }4 M8 M) A8 m" a4 M
23
# D  V# D# t/ X$ q24$ A/ n% s. e  x3 H" |% h0 T
25# C+ C& R* E$ S
26
6 c4 X! X$ W0 Y. i) _  v8 o4 q; q上面程序结果可以产生图2的效果。
& Q5 H7 [4 R6 k2 ~" d4 S
9 c; I7 u* q5 Rprint(compactness)这个变量,表示每个点到它聚类中心的距离平方和。较高紧凑都表明所有的点更靠近他们的聚类中心,较低 的紧凑度表明不同的聚类可能无法的很好区分。7 i4 C3 d3 h+ J; z) V, N( c8 x) h
( {' L. `- K9 H, S% k
当然,这个是非常依赖于x中的真实值。如果点与点之间最初的距离比较大,那我们就很难得到一个非常小的紧凑度。因此,把数据画出来,并按照聚类标签分配不同颜色,可以显示更多信息。! ~6 _* @3 m: `4 f6 E
+ ?( E) |6 ]6 H% j
3理解kmeans
6 y6 f, ~3 O% `  b9 Ykmeans是聚类众多常见期望最大化中一个具体的例子。简单来说,算法处理的过程如下所示:' \0 o6 q8 G3 N, C
1.从一些随机的聚类中心开始) x$ n$ U  d) U0 g& i) v
2.一种重复直到收敛' o9 A+ \  ?) h  ]& m

& l8 a' R  E/ @7 X/ e期望步骤:把所有的数据点分配到离他们最近的聚类中心。
- i& x' E* K% }- C# v, |最大化步骤:通过取出聚类中所有点的平均来更新聚类中心。3 h' Z" L* R3 V6 p8 h1 U. l" I
7 K$ {0 `- \! S2 u
它涉及到一个定义聚类中心位置的适应性函数最大化的过程。对于kmeans最大化是计算一个聚类中所有数据点的算数平均得到。
+ G* f7 I" D7 X' {; j————————————————6 S: n9 G: T" v, _; p
版权声明:本文为CSDN博主「紫钺-高山仰止」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。7 ^3 \% ?8 r. k) K
原文链接:https://blog.csdn.net/qq_43158059/article/details/126789000
) H. N8 C+ d: M" U0 F, k" I* D" E8 f$ o
# i) l. q" \& `. o' l: n4 N





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5