K-means

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

k-means (anglicky „k průměrů“) je často používaný algoritmus nehierarchické shlukové analýzy. Předpokládá, že shlukované objekty lze chápat jako body v nějakém eukleidovském prostoru a že počet shluků k je předem dán (případně lze vyzkoušet různá k, pro každé spustit algoritmus znovu a výsledky porovnat). Shluky jsou definovány svými centroidy, což jsou body ve stejném prostoru jako shlukované objekty. Objekty se zařazují do toho shluku, jehož centroidu jsou nejblíže. Algoritmus postupuje iterativně tak, že se vyjde z nějakých (obvykle náhodně zvolených) centroidů, přiřadí do nich body, přepočítá centroidy tak, aby šlo o těžiště shluku bodů, pak opět přiřadí body k nově stanoveným centroidům a tak dál, až dokud se poloha centroidů neustálí.

Konvergence algoritmu je zaručena a v praxi bývá obvykle poměrně rychlá. Nemusí však najít globální optimum ve smyslu nejmenšího součtu čtverců vzdáleností od centroidů a navíc pro různé volby počátečních centroidů mohou vzniknout různá řešení.

Pojem k-means poprvé použil James MacQueen roku 1967 a myšlenka pochází od Huga Steinhause (1957). Popsaný základní algoritmus navrhl Stuart Lloyd z Bell Labs roku 1957 (publikováno až 1982). +more Roku 1965 E. W. Forgy uveřejnil stejnou metodu, proto se někdy nazývá Lloydův-Forgyho algoritmus. Efektivnější verzi navrhli a ve Fortranu naprogramovali Hartigan a Wong (1975/1979).

Image:K Means Example Step 1. svg|1. +more k výchozích centroidů (zde je k=3) se náhodně umístí v prostoru dat (shlukované objekty šedé, centroidy barevné) Image:K Means Example Step 2. svg|2. Objekty se přiradí nejbližším centroidům, čímž vznikne k shluků. Centroidy tak definují Voroného teselaci prostoru. Image:K Means Example Step 3. svg|3. Přepočtou se centroidy shluků tak, aby šlo o těžiště objektů, jež patří do těchto shluků. Image:K Means Example Step 4. svg|4. Kroky 2 a 3 se opakují, dokud nedojde k ustálení (konvergence).

Reference

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top