abc 2016spring 講演資料
TRANSCRIPT
ビーコンはこう置いてみては?東海大学理学部大西 建輔
(石川登美雄君との共同研究)
自己紹介
•大西建輔 ([email protected] )
•東海大学准教授(情報系でもあり、数学系)• 普段はプログラミングや数学教えてます
• Androidとの付き合いは, GDD2009でGDDPhoneを貰ってから
• ABC参加は, 2011 Winterから, 2013 AutumnからABC実行委員も
ビーコンとは?
• BLE(Bluetooth Low Energy)はBluetooth の規格
• BLE規格のビーコン(Beacon)と呼ばれる発信器あり• 低電圧(Low Energy) ⇒ボタン電池1つで1年程度
• ビーコンのIDを発信(IDの変更も可能)⇒電波強度とIDを受信可能
• iOS, Android(4.3以降)でサポート⇒ビーコンを探知できるアプリを作成可能
研究動機BLE設置の現場では
• ビーコンを設置, 計測の繰り返し⇒時間と手間が必要, 高コストの原因
• ビーコンの位置を決める手法を提案⇒あらかじめ幾つかのパターンを作成⇒現地での調整
[本研究]
領域R , 正整数k が与えられる⇒ R内で k個のビーコンの位置を決定
ビーコン 3K設置10K以上
ビーコンの数の削減も
k-means method (Lloyd 1982)
点集合Pを k個のクラスタに分割する方法
⇒ k個の母点を決め, P をそれぞれの母点に近い点集合 Pi に分割
入力: 点集合P ;
出力 : クラスタ Pi (i = 1,2, …, k) ;
1. 母点 SP ={sp1, …, spk} を適当に決定;
2. Pi = {spiに近い点の集合} を計算;
3. spi = p / | Pi | ただし, p Pi ; # 重心を計算
4.
が前の値より小さい⇒Step 2 に戻る;
5. Pi (i = 1,2, …, k)を返す;
𝜑 𝑃 = 𝑖=1
𝑘
𝑝∈𝑃𝑖
𝑑(𝑝, 𝑝𝑖)2
k-means method 実行例(n=5000)
k-means method 実行例(n=5000, k=10)
k-means method 実行例(n=5000, k=10)
目的関数値: 40462.361962646
k-means method 実行例(n=5000, k=10)
k-means methodの特徴
•かなり高速に計算可能(繰り返し回数は少ない)
•結果は, 初期値に依存⇒幾つかの初期値を試し, 最もよい物を選択
•初期値を上手に選ぶ• k-means++ method
k-means++ method(Arthur et.al SoDA 2007) • k平均法で, 初期点の取り方を工夫
•最初の1点はランダムに
• d(spi , p)2 / d(spi , p)2 の確率で, 次の点を選択spi : p に最も近い初期点
•必要な k点ができれば, k-means methodを適用
k-means++ methodでは, O(log k)競合比を達成⇒必ず最適な値の O(log k)倍で抑えられる
(理論的な保証)
母点から遠い点が選ばれる確率
が高い
k-means++ method 実行例(n=5000, k=10)
k-means++ method 実行例(n=5000, k=10)
k-means++ method 実行例(n=5000, k=10)
目的関数値:40209.7234844853
今回は, ビーコンの配置
•入力は点集合ではなく, 領域 R⇒領域内の点をランダムに生成
(人が入れない場所には, 点を生成しない)
•生成された点集合に対し, k-means (ランダム初期点) または. k-means++ method
を適用⇒クラスタが出力⇒各クラスタの重心を計算し, ビーコン位置に
点集合の生成 (n = 7000)
k-means method の適用
k-means method の適用
計算機実験• k-means method(ランダムに初期点を選択)と
k-means++ methodを実装
• n =1000, 2000, …, 10000に対し, それぞれ10種類の点集合を生成
•全ての点集合に対し, k-means と k-means++ methodを適用
[取得データ] • 計算時間
• 収束までの繰り返し回数,
• 目的関数値,
• 正規化目的関数値(点数での正規化)
計算時間(ランダム, k-means++, 平均)
0
100
200
300
400
500
600
0 2000 4000 6000 8000 10000
Computation time (SP)
Random k-means++
(ms)
(# points)
計算時間(k-means method, 平均)
0
500
1000
1500
2000
2500
3000
3500
4000
0 2000 4000 6000 8000 10000
Computaion time (k-means)
Random k-means++
(ms)
(#points)
繰り返し回数(平均)
0
5
10
15
20
25
30
0 2000 4000 6000 8000 10000
Number of Repeat (average)
Random k-means++
(# points)
(# times)
目的関数値(平均と最小)
49500
50000
50500
51000
51500
52000
52500
53000
53500
54000
0 2000 4000 6000 8000 10000
Value of Objective function (min and averages)
Random k-means++ min
(# points)
実領域への適用(以前の配置)
実領域への適用(新しい配置)
実環境での精度の違い
0.000
0.100
0.200
0.300
0.400
0.500
0.600
0.700
0.800
0.900
1.000
1次 2次 3次7F(after) 7F(before)
まとめ領域 Rでの k個のビーコン配置の手法の提案
• Rでの点のランダム生成
• k-means method or k-means++ methodを適用
•出力クラスタから重心を計算し、ビーコン位置に
•計算時間は早い 10000点, k=5で4秒程度
•性能向上はそこそこ
今後の予定
• ビーコンの個数 kの決定 .…. なんとかなりそう
•距離計算の厳密化
•実際のビーコン配置の現場へ