java 板


LINE

你的問題,不單單是 Java 平台的問題,使用任何語言實作,都有類似的狀況 要解你這個問題,首先得要分析你所使用的 distance function (norm) 不同的 distance function 所需的解法會不太一樣 我先回答幾個推文中所提到的狀況 ※ 引述《jyleef (龍蝦)》之銘言: : 我的資料量大約有五百萬筆(小於) : 然後每一筆要分為45欄 : 所以陣列宣告下去等於 5百萬*45 (型態會用到String 或 double(二選一)) : 已經有將記憶體配置改成 -Xmx1575 (已經是最大了) → 無解 : 也有想過要改用分批讀取再寫入的方式 : 可是之後要跑 k-means 演算法,還是要一次看全部的資料 → 再度無解 : 目前我的電腦配備為(只用一台電腦跑) :-- :



※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 219.85.40.79 : 推 slalala:運算過程為什麼不透過資料庫紀錄? 02/13 16:04 五百萬筆資料,又要跑 k-means 演算法 如果使用資料庫的話,performance 基本上是無法想像 (或者找找看有什麼 database engine 有針對適合用於 k-means 演算法作優化) : 推 a1234957:基本上這是最無腦的解法 02/13 20:49 原po的解法是否真的無腦,有時是迫於資料的形態,無法一概而論 : → flowwinds:你用到k-means的distance是一筆資料跟另一筆資料嗎? 02/13 23:55 : → flowwinds:一筆資料45個column跟另一筆資料45個column算出一個距離 02/13 23:58 : → flowwinds:如果是這樣可以不用 load 全部資料算出initial distance 02/14 00:01 : → flowwinds:matrix,而有initial distance matrix應該能跑之後集群法 02/14 00:03 計算 initial distance matrix 在其它地方合適 偏偏在原po這個例子中不合適 直接看這個 initial distance matrix 的 dimension 為 5,000,000 x 5,000,000 (好吧,其中有一半的是重覆,所以縮為 5,000,000 x 2,500,000) 共有 12,500,000,000,000 個 換句話說,整個 distance matrix 必須使用 12,500,000,000,000 個 double 儲存 (資料量 100T bytes) 不只記憶體塞不下,一般個人用或實驗室電腦的硬碟恐怕也塞不下這麼大量的資料 當然,這個 distance matrix 不是 sparse matrix 但我們曉得,這 12.5T 個 double 有絕大部分用不到 所以似乎我們可以只紀錄用的部分,以 sparse matrix 呈現 但問題在於,在還沒跑過 k-means 演算法之前,要如何知道有哪些被用到? 要嘛先跑一次 k-means 演算法 (那這樣問題等於解完了) 要嘛,要另外想一個演算法,猜測可能會用到哪些資料 但去想這種演算法,搞不好都可以發表論文了 ---------- 回答原 po 的問題 要處理這個問題,首先,降低執行期間所需的資料量是要務 如何降低則與這個問題所使用的 distance function 相關 一筆資料有45欄,先確認一件事 在計算兩筆資料的 distance 時,這45欄資料是否都會用到? 假設,只用到其中三欄,那問題就好辦多了 就只將會用到的這三欄資料讀進記憶體即可 這時,所需的記體體為 5,000,000 x 3 x 8 = 120M bytes ---------- 如果這 45 欄資料都會用到 再來就尋求是否可以降低資料維度的函數,從 45 維降為少數維度 如果你的 distance function 可以表達為 d(x_1, x_2, ..., x_45, y_1, y_2, ..., y_45) = f( g_1(x_1, x_2, ..., x_a), g_1(y_1, y_2, ..., y_a), g_2(x_(a+1), x_(a+2), ..., x_b), g_2(y_(a+1), y_(a+2), ..., y_b), ..., g_n(x_(m+1), x_(m+2), ..., x_45), g_n(y_(m+1), y_(m+2), ..., y_45) ) 時,而且 n 值很小時 (比如,n = 3) 那恭喜你,你只要先計算每筆資料的 g_1, g_2, ..., g_n 值 而記憶體只要記錄每筆資料的 g_1, g_2, ..., g_n 值即可 n 愈小,所需的記憶體愈少 不過,大家最常使用的 distance function: Euclidean norm (x1-y1)^2 + (x2-y2)^2 + ... + (x45-y45)^2 卻無法依此方式降低資料維度 ---------- 如果上述方式均無效 那麼,就得要將資料存於硬碟中 這當然無法像前述將資料放在記憶體中那麼快 還好,k-means 演算法,每個 iteration 只要從頭到尾循序讀取一次硬碟資料即可 算句話說,如果 iterate 三次,就是從頭到尾讀取三次硬碟資料 如果 iterate 五次,就是從頭到尾讀取五次硬碟資料 如果 iterate 十次,就是從頭到尾讀取十次硬碟資料 那這時有另一種可能的做法,就是你可以考慮是否一定要解 exact solution? 接不接受 sub-optimal solution? 假如,exact solution 需要一百次 iteration 但,十次 itaration 的結果,total squared distance sum 只比最佳值多 0.1% 那這個結果是不是你可以接收的? 如果你可以接受類似上述的 sub-optimal solution 那,就不需要使用原本的結束判斷條件 (前後兩次 iteration 群集邊界不變動) 而可以使用較為寬鬆的結束判斷條件 (比如,前後兩次 iteration 的 total squared distance sum 變動量小於萬分之一) ---------- 當然,還可能存在其它加速方法 不過,要如何加速,都要針對問題本身的特性處理 不單單只是 k-means 演算法本身是否可以加速的問題 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.129.52 ※ 編輯: mgtsai 來自: 60.250.129.52 (02/15 19:33)
1F:→ flowwinds:感謝回覆,受教了~沒考慮到 distance matrix需要更多空間 02/15 20:46
2F:推 smallworld:Kmeans is NP hard 02/17 22:36
3F:推 gmoz:AMAZON EC2 (誤 02/18 21:05







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP