
рдирдорд╕реНрдХрд╛рд░ред рдпрд╣ рд▓реЗрдЦ
рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдбреАрд╕реЗрдВрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдбреЗрдЯрд╛ рдХреЛ
рдХреНрд▓рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдпрд╣ рд╡рд┐рдзрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдХрд╛рджрдорд┐рдХ рд╣реИред рдореБрдЭреЗ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рддрд╛рдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореАрдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдбреЗрдЯрд╛ рд╕реЗрдЯ рдкрд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
рд╕реЗрдВрдЯреНрд░реЛрдЗрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрд░рдорд┐рдХ рд╡рдВрд╢ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд╕рд╛рде k- рд╕рд╛рдзрди рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдкреВрдЫрддрд╛ рд╣реВрдВред рдХреЛрдб рдореЗрдВ рдЖрд░ред
рдбреЗрдЯрд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП,
рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреЗ рд╕реЗрдВрд╕рд░ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ : 7352 рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреБрд▓ 563 рдлрд╝реАрд▓реНрдб; рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рд╕реЗ 2 рдлрд╝реАрд▓реНрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдХреБрд▓ 6 рдХреНрд░рд┐рдпрд╛рдУрдВ (рд╡реЙрдХрд┐рдВрдЧ, рд╡реЙрдХрд┐рдВрдЧ_рдЕрдкрд╕реНрдЯрд╛рд░, рд╡реЙрдХрд┐рдВрдЧ_рдбрд╛рдЙрд╕реНрдЯрдПрдпрд░рд╕, рд╕рд┐рдЯрд┐рдВрдЧ, рд╕реНрдЯреИрдирд┐рдВрдЧ, рд▓рд╛рдИрдВрдЧ) рдХреЗ рд▓рд┐рдП, рд╕реЗрдВрд╕рд░ рдХреА рд░реАрдбрд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдВрдХ рдкрд░ рд╕реЗрдЯ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЖрдпрд╛рдореЛрдВ рдХреЛ рдХрдо рдХрд┐рдП рдмрд┐рдирд╛ рдРрд╕реЗ рд╕реЗрдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред рдЖрдпрд╛рдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдкреНрд░рдореБрдЦ рдШрдЯрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рдЧрдпрд╛ рдерд╛ , рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдорд╛рдирдХ рдЖрд░ рднрд╛рд╖рд╛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛
рдореЗрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЙрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ рдФрд░ рддреАрд╕рд░реЗ рдореБрдЦреНрдп рдШрдЯрдХ рдкрд░ рдореВрд▓ рд╕реЗрдЯ рдХреНрдпрд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдХреЛрдбm.proj <- ProjectData(m.raw, e$eigenVectors[, c(1, 3)]) plot(m.proj[, 1], m.proj[, 2], pch=19, col=rainbow(6)[unclass(as.factor(samsungData$activity))], xlab="first", ylab="third", main="Two components; actions")

рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХрд▓реНрдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рджреЛ-рдЖрдпрд╛рдореА рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
K- рд╕рд╛рдзрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд╛рдЧрдд рд╕рдорд╛рд░реЛрд╣
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХреЗрддрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ:
- рдХрдИ рд╕реЗрдВрдЯреНрд░реЛрдЗрдбреНрд╕
рд╕рдВрдмрдВрдзрд┐рдд рд╕рдореВрд╣
- рдореВрд▓ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
Kth рдХреНрд▓рд╕реНрдЯрд░, рдореВрд▓ рд╕реЗрдЯ рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИ
рдЕрдм
рд╢рд╛рд╕реНрддреНрд░реАрдп k- рд╕рд╛рдзрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд▓рд╛рдЧрдд рд╕рдорд╛рд░реЛрд╣ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдпрд╛рдиреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЗрдВрдЯреНрд░реЛ рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдХреБрд▓ рджреНрд╡рд┐рдШрд╛рдд рд╡рд┐рдЪрд▓рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕реА рдХреЗрдиреНрджреНрд░рдХ рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдпреЛрдЧ рдиреНрдпреВрдирддрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

, рдЬрд╣рд╛рдВ
рдПрдл - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЙрдореНрдореАрдж-рдЕрдзрд┐рдХрддрдордХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкреНрд░рднрд╛рд╡реА рд╢рд┐рдХреНрд╖рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рд╣реИ ред рдЖрдЗрдП R рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
рдХреЛрдб kmeans.inner <- kmeans(m.proj, 3) plot(m.proj[, 1], m.proj[, 2], pch=19, col=rainbow(3)[unclass(as.factor(kmeans.inner$cluster))], xlab="first", ylab="third", main=paste(k, " clusters; kmeans \n cost = ", kmeans.inner$tot.withinss/2, sep=""))

рдзреАрд░реЗ-рдзреАрд░реЗ рдЙрддрд░рдирд╛
рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдбреАрд╕реЗрдВрдЯ рдЕрд▓реНрдЧреЛрд░рд┐рдердо рдЕрдкрдиреЗ рдЖрдк
рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдбрд╛рдпрд░реЗрдХреНрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдЫреЛрдЯреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
, рдПрд░рд░ рдмреИрдХ рдкреНрд░реЛрдкреЗрдЧреЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╛
рдПрдХ рд╕реАрдорд┐рдд рдмреЛрд▓реНрдЯрдореИрди рдорд╢реАрди рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрдВрдЯреНрд░рд╛рд╕реНрдЯ рдбрд╛рдЗрд╡рд░реЗрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЙрдбрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдВрд╢рд┐рдХ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЪреВрдБрдХрд┐ рд╣рдордиреЗ рдХреНрд▓рд╛рд╕рд┐рдХ k- рд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рддреЛ
f рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рджреВрд░реА рдХрд╛ рдХреЛрдИ рднреА рдорд╛рдк, рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рдореАрдЯреНрд░рд┐рдХ рд╣реЛ
рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд╣рдо рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реЗрдЯ
X рдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреНрдпрд╛ рд╣реИред рдЖрдЗрдП рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕реЗ рдПрдХ рд╕реВрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХреЗ, рдЬреЛ рдХрд┐ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛: рд╕реЗрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рд╕реЗ рдиреНрдпреВрдирддрдо рджреВрд░реА рдХрд╛ рдпреЛрдЧ рддреАрди рд╕реЗрдВрдЯреАрдореАрдЯрд░ рддрдХред рдпрд╣ рд╕реВрддреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдЖрдЗрдП рдЕрдм рдирдП рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ:

рдЦреИрд░, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рдиреНрдпреВрдирддрдо рд╡реНрдпреБрддреНрдкрдиреНрди рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: рдЕрдЧрд░
a- рд╕реЗрдВрдЯреНрд░реЛрдЗрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рд╕реЗ рджреВрд░реА рдХрдо рд╣реИ, рддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡реЗрдХреНрдЯрд░ рддрддреНрд╡ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рджреВрд░реА рдХреЗ рд╡рд░реНрдЧ рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдорд╛рдорд▓рд╛ рд╢реВрдиреНрдп рд╣реИ:

рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рджреВрд░реА рдХреЛ рдЪреБрдХрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдРрд╕рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд┐рдзрд┐ рджреВрд░реА рд╕рдорд╛рд░реЛрд╣ рдФрд░ рджреЛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдмреАрдЪ рджреВрд░реА рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреА рдЧрдгрдирд╛ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рджреВрд╕рд░реЗ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдШрдЯрдХ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдЖрдзрд╛ рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рд╡рд░реНрдЧ" (рдпрд╣ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рдмрд╛рдж рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ), рд╕рд╛рде рд╣реА рдврд╛рд▓ рд╡рдВрд╢ рд╕рдорд╛рд░реЛрд╣ рднреАред :
рджреВрд░реА рдХреЗ рдХрд╛рд░реНрдпрджреВрд░реА рд╕рдорд╛рд░реЛрд╣
HalfSqEuclidian.distance <- function(u, v) { # Half of Squeared of Euclidian distance between two vectors # # Args: # u: first vector # v: second vector # # Returns: # value of distance return(sum((uv)*(uv))/2) }
рдЖрдВрд╢рд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд╛рд░реНрдп
HalfSqEuclidian.derivative <- function(u, v, i) { # Partial derivative of Half of Squeared of Euclidian distance # between two vectors # # Args: # u: first vector # v: second vector # i: index of part of second vector # # Returns: # value of derivative of the distance return(v[i] - u[i]) }
рдХреНрд░рдорд┐рдХ рд╡рдВрд╢ рд╡рд┐рдзрд┐ KMeans.gd <- function(k, data, distance, derivative, accuracy = 0.1, maxIterations = 1000, learningRate = 1, initialCentroids = NULL, showLog = F) { # Gradient descent version of kmeans clustering algorithm # # Args: # k: number of clusters # data: data frame or matrix (rows are observations) # distance: cost function / metrics # centroid: centroid function of data # accuracy: accuracy of calculation # learningRate: learning rate # initialCentroids: initizalization of centroids # showLog: show log n <- dim(data)[2] c <- initialCentroids InitNewCentroid <- function(m) { c <- data[sample(1:dim(data)[1], m), ] } if(is.null(initialCentroids)) { c <- InitNewCentroid(k) } costVec <- vector() cost <- NA d <- NA lastCost <- Inf for(iter in 1:maxIterations) { g <- matrix(rep(NA, n*k), nrow=k, ncol=n) #calculate distances between centroids and data d <- matrix(rep(NA, k*dim(data)[1]), nrow=k, ncol=dim(data)[1]) for(i in 1:k) { d[i, ] <- apply(data, 1, FUN = function(v) {distance(v, c[i, ])}) } #calculate cost cost <- 0 for(i in 1:dim(data)[1]) { cost <- cost + min(d[, i]) } if(showLog) { print(paste("Iter: ", iter,"; Cost = ", cost, sep="")) } costVec <- append(costVec, cost) #stop conditions if(abs(lastCost - cost) < accuracy) { break } lastCost <- cost #calculate gradients for(a in 1:k) { for(b in 1:n) { g[a, b] <- 0 for(i in 1:dim(data)[1]) { if(min(d[, i]) == d[a, i]) { g[a, b] <- g[a, b] + derivative(data[i, ], c[a, ], b) } } } } #update centroids for(a in 1:k) { for(b in 1:n) { c[a, b] <- c[a, b] - learningRate*g[a, b]/dim(data)[1] } } } labels <- rep(NA, dim(data)[1]) for(i in 1:dim(data)[1]) { labels[i] <- which(d[, i] == min(d[, i])) } return(list( labels = labels, cost = costVec )) }
рдкрд░реАрдХреНрд╖рдг KMeans.gd.result <- KMeans.gd(k, m.proj, HalfSqEuclidian.distance, HalfSqEuclidian.derivative, showLog = T) plot(m.proj[, 1], m.proj[, 2], pch=19, col=rainbow(k)[unclass(as.factor(KMeans.gd.result$labels))], xlab="first", ylab="third", main=paste(k, " clusters; KMeans.gd \n cost = ", KMeans.gd.result$cost[length(KMeans.gd.result$cost)], sep=""))
рдЖрдЗрдП рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред

рдФрд░ рдпрд╣ рджреЛрдиреЛрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╕реЗ рд▓рд╛рдЧрдд рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдореВрд▓реНрдп рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдмрддрд╛рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рддреАрди рд╕рдореВрд╣реЛрдВ рдореЗрдВ рджреЛ рдЖрдпрд╛рдореА рд╕реЗрдЯ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рднрд╛рдЬрди рдорд┐рд▓рд╛, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдЕрдзрд┐рдХ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреБрдЫ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ (рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реЛрддреА рд╣реИ, рдЕрдиреНрдп рджреЛ, рдФрд░ рддреАрд╕рд░рд╛ рддреАрди)ред
рдЖрдЗрдП рд╣рдо рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ)ред рдЖрдЬреНрдЮрд╛ рджреЗрдирд╛ k рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рд╕рдореВрд╣реЛрдВ, n рдбреЗрдЯрд╛ рдЖрдпрд╛рдо рд╣реИ, рдореАрдЯрд░ рдбреЗрдЯрд╛ рдХреА рд░рд╛рд╢рд┐ рд╣реИ (k <= m)ред рдЪрд░рдо рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗ = рдореАред
- EM рд╕рдВрд╕реНрдХрд░рдг:

- рдЬреАрдбреА рд╕рдВрд╕реНрдХрд░рдг:

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ, рджреЛрдиреЛрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рдорд╛рди рд╕реНрддрд░ рдкрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИред
рдЖрдк рдпрд╣рд╛рдБ рд╕рднреА рдХреЛрдб
рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред