2.2K Views
March 29, 24
スライド概要
[第8回大阪sas勉強会] 高田浩成
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
第8回 大阪SAS勉強会 SASによるk-means法 イーピーエス統計解析部 高田浩成 2023/3/24 1
目的・概要 • k-means法は統計・機械学習の分野でよく見かける • SASに専用のプロシジャがある • アルゴリズム学習の一例として扱ってみる 1. 非階層クラスター分析の立場 2. k-means法アルゴリズムの紹介 3. FASTCLUSプロシジャによる実装 4. アウトプット情報の考察 2
k-means法とは 例)2次元空間上でk=3 と指定した場合のイメージ • データを特徴(数値)に基づき 任意のk個にグループ分けするアルゴリズム • 非階層クラスター分析の代表とされる手法 • 互いに近いデータは同じクラスターの方針 • クラスターの中心・割当を繰り返す • 用途 顧客のセグメント化、遺伝子発現のパターン化 △ ○ ① ○ ○ △ ② △ △ ○ ○ × ③ × × 3
機械学習の種類(人工知能の概念) ①教師あり学習 • 目的変数あり→入力・出力データの関係を分析 • 線型回帰:説明変数との関係性を誤差が最小になるように予測 • ロジスティック回帰:2値(0,1)の目的変数の発生確率の予測 ②教師なし学習 • 目的変数なし→入力からその背景にあるパターンや構造を見つける • クラスター分析:値の類似性をもとにデータをグループ化 • 主成分分析:データの特徴を残しながら簡素化(次元削減) ③強化学習 • 最初からデータは無く、システム自身が試行錯誤して精度を高める ※それらの構造として、網状化したニューラルネットワークやさらに多層化した ディープラーニングが存在 4
クラスター分析の種類 クラスター:集落、クラスタリング:分類 ①階層クラスター分析 • 樹形図のイメージ • クラスター数は自動計算 • 例:ウォード法、群平均法 ②非階層クラスター分析 • クラスター数を予め手動設定 • ビッグデータに対して計算速度的に有用 • 例:k-means法、混合正規分布モデル Y(AB) B A A X(ABC) B C C 5
【k-means法】アルゴリズム 𝑛 arg min𝑉1 ,⋯,𝑉𝑘 min ∥ 𝑥𝑖 − 𝑉𝑗 ∥2 最小距離となる引数Vを格納 𝑖=1 𝑗 i:データ番号 j:クラスター番号 k:クラスター数 ★クラスター中心とクラスター割当の更新を繰り返す ①各データxiに対してランダムにクラスターを割り振る。 ②各クラスタの中心Vjを計算する。 ③各xiと各Vjとの距離を求め、xiを最も近い中心のクラスターに割 当て直す。 ④全てのxiのクラスターの割当てが変化しなかった場合、収束と 判断して処理を終了する(そうでない場合はVjを再計算して上記 処理を繰り返す)。 6
【k-means法】手順イメージ(2次元) ① ② クラスター中心の更新 ① ② クラスター割当の更新 ① ② クラスター中心の更新 収束するまで続く 7
【SAS】FASTCLUSプロシジャ • k-means法を実装するプロシジャ(SASオンラインマニュアル記載) proc fastclus data=[入力] out=[出力] maxclusters=[分類数] outstat=[統計情報] seed=[初期値データセット] ; var [数値変数1] [数値変数2] [数値変数3] … ; run ; maxclustersオプションは手動設定で必須 outstatオプションにより全アウトプット情報をデータセット出力可能 seedオプションによりデータセットに値に関わらず初期値を手動で設定可能 (設定しない場合は固定値) 8
サンプルデータ(SASHELP.CARS) N=428、自動車モデルの情報から3分類(大型・中型・小型のイメージ) No. 変数名 内容 1 MSRP メーカー希望小売価格[$] 2 Invoice 請求書価格[$] 3 EngineSize エンジンサイズ[L] 4 Cylinders シリンダー部品数 5 Horsepower 馬力 6 MPG_City 燃料消費率(一般道路)[miles/gallon] 7 MPG_Highway 燃料消費率(高速道路)[miles/gallon] 8 Weight 重量[lbs] 9 Wheelbase ホイールベース(最遠軸距)[inch] 10 Length 全長[inch] 9
入力データセット・解析プログラム 10変数 428 obs ・・・・・・ proc fastclus data=SASHELP.CARS out=OUT outstat=OUTSTAT maxc=3 ; var MSRP Invoice EngineSize Cylinders Horsepower MPG_City MPG_Highway Weight Wheelbase Length ; run ; 10
出力データセット 【OUTSTAT=】統計情報 (アウトプット画面参照) 入力DSの右端に付与 【OUT=】クラスタリング結果 ・・・・・・ 11
アウトプット1:初期値・サイズ 初期値設定無し:最大値・最小値・中間値を配慮?(k-means++法?) OBS413 OBS207 OBS335 12
アウトプット2:決定係数 クラスター数が増える (クラスターサイズが小さくなる) と上昇しやすい 決定係数R2=(相関係数R)2 13
アウトプット3:データ特徴 参考: 変動係数CV=標準偏差÷平均 クラスター間の分布の格差は小さめで分類できている? 14
2次元イメージ(散布図) proc fastclus data=SASHELP.CARS out=OUT maxc=3 ; var EngineSize Horsepower ; クラスタリング結果をSGPLOTプロシジャで描画 run ; (クラスター別にマーカー変更) 初期値 ※可視化の便宜上、エンジンサイズと馬力の 2次元に設定して再解析後、グラフ出力。 空間的には違和感ないが クラスターのサイズに偏り・・・ (設定次第で度数0になることも) 15
初期値変更による結果の違い proc fastclus data=SASHELP.CARS out=OUT seed=SEED maxc=3 ; var EngineSize Horsepower ; run ; SEEDデータセットで任意の初期値を設定 初期値変更 クラスターバランスが改善 16
まとめ • k-means法のしくみとSASでの実装方法を紹介 • 高次元では人の目で分類するのは困難 →FASTCLUSプロシジャで高速クラスタリングが実現 • 初期値依存性があり最良の結果が得られるわけではない →複数回の試行や他手法との併用に必要性も • セグメント化手法として知っておいて良いかもしれない • AI導入の時代に向けてアルゴリズム関係にも注意を向けたい 17
参考資料 • 『データサイエンティスト基本スキル84』 野村総合研究所データサイエンスラボ、日本経済新聞出版(2022.12) • SAS Help Center: PROC FASTCLUS Statement https://documentation.sas.com/doc/en/statcdc/14.2/statug/statug_fastclus_s yntax01.htm • k平均法、k-means++法: Wikipedia https://ja.wikipedia.org/wiki/K平均法 https://ja.wikipedia.org/wiki/K-means++法 • クラスター分析の手法: 株式会社ALBERT・データ分析基礎サイト https://www.albert2005.co.jp/knowledge/data_mining/cluster/hierarchical_clu stering https://www.albert2005.co.jp/knowledge/data_mining/cluster/nonhierarchical_clustering 18