K-meansクラスターを学習した
IBM Data Scienceコースの、Machine Learning with PythonからK-meansを学習したので概要をまとめる。
・教師なし学習で用いられる。
・階層なしクラスタリング手法のひとつである。
・ビジネスではウェブサイトへの流入測定、顧客の区分け、カード利用者の破産可能性判断などに用いられることが多い。
・ランダムにk個のクラスターに分けて、各クラスタの中心(centroids)を得る。k個の中心と各データの距離が求まったら、最も距離が近いデータに中心を振りなおす。これを最適な中心になるまで繰り返す。
・k値を大きくしすぎるとアンダーフィッティング、小さくしすぎるとオーバーフィッティングになるので注意が必要。High-under, Low-over
・実際にk=3, k=5のように変更してプロットして違いを確認した。
作業の流れ
・sklearnから使う
・データCSVをpandasで読み込む
・プリプロセッシング(カテゴリー変数にはOne-hot encodingというダミー変数の手法が用いられるが、今回はバッサリ切り落とした)
・ノーマライズ
・モデリングは以下の感じ。
clusterNum = 3
k_means = KMeans(init="k-means++", n_clusters=clusterNum, n_init=12)
k_means.fit(X)
labels = k_means.labels_
・洞察(Education, Age, Incomeというフィーチャーでグラフ化)
・結果判定
まとめ
K-means法を学習した。K-meansは不均衡なクラスターでは良好なパフォーマンスは発揮できない。K-Meansの目的は、すべてのクラスターにおけるクラスター内分散を同時に最小化することである。
Posted by tomo
December 24 01:12, 2025