# 帳號分析 Hierarchical Clustering_20.11.20 ## 資料預處理 將原本資料無法協助分析的 空格 emoji 標點符號 非中英數文字 透過正則表示式 drop 掉 ![](https://i.imgur.com/WABwfAI.png) ![](https://i.imgur.com/1c14CFd.png) ## 肉眼檢視可能相似的帳號 ![](https://i.imgur.com/YQIdCcD.png) ![](https://i.imgur.com/AKrSuP7.png) ![](https://i.imgur.com/k9YYJY3.png) ![](https://i.imgur.com/xCiA86F.png) ![](https://i.imgur.com/LNnJebY.png) ## Question **1.廠商允許重複的nickname?** ![](https://i.imgur.com/Uol59OR.png) ## 將字串與數字切開 ex: dog99 = 'dog','9','9' 分別用 word2vec embedding 後再相加當作最終 embedding 值 流程: * drop 空值 * sort * 取 500 筆 * embedding * training and visualization ### 效果 * 相同的找的出來(但不乾淨) ![](https://i.imgur.com/nfjgATR.png) * 類似帳號找得出來(但不完全) ![](https://i.imgur.com/kPDOwUD.png) ![](https://i.imgur.com/MAZJ9Cw.png) # Update(20/11/27) * 將英文後的數字忽略不 embedding => 'dog99' = 'dog' ## index[50500:51000] ; epoch:5 ; linkage method='average' * 可以分出 w, x, y, z 四大群 * 'yopak201~2' 與 'yopak202~8' 不同群且很遠 ![](https://i.imgur.com/0CyehyR.jpg) ![](https://i.imgur.com/yuiNNqz.jpg) * 其他表現不錯 ![](https://i.imgur.com/M8UcpcF.jpg) ## index[41500:42000] ; epoch:5 ; linkage method='average' ![](https://i.imgur.com/bSI1olx.png) ![](https://i.imgur.com/T49i6bj.png) --- ### ● 先排序再進去 train (word2vec 依前後給向量) ## index[41500:42000] ; epoch:100 ; linkage method='average' file_name: result_201127_0100.svg ![](https://i.imgur.com/Uzsjmpv.png) ## Question ### word2vec 困境 判斷相似度需要讓 model 看過所有字,公司新增帳號,就重 train ? ### 透過分群找到大群,群內資料都是完全相同的 先 drop 重複的? (透過相同nickname 洗帳號?) ### word2vec 找最相像的 10 個效果不好 ![](https://i.imgur.com/h5CVGWd.png) # Update(20/12/02) ## 上次問題解答 * word2vec 困境:判斷相似度需要讓 model 看過所有字,公司新增帳號,就重 train ? + 就重 train (ex:每月資料 train 一個 model 找可疑帳號進一步追蹤) * 透過分群找到大群,群內資料都是完全相同的: 先 drop 重複的? (透過相同nickname 洗帳號?) + 不 drop 掉重複的,可以帳號通常會是流水號 ## 改變點 不使用 Word2Vec 改將每個字母的 ASCII 存成陣列去做比較 ![](https://i.imgur.com/pl14kOg.png) * **註: padding (用 0)到長度為 15** ![](https://i.imgur.com/bUqN3yS.png) ## index[41500:42000] ; epoch:5 ; linkage method='average' ![](https://i.imgur.com/bSI1olx.png) ![](https://i.imgur.com/3kFskqo.png) ![](https://i.imgur.com/ArUZdCh.png) 相似帳號及流水號都會被歸類在同一群,效果不錯 # Update(20/12/09) ## vector 距離計算方式 ``` sch.linkage(ordArr,metric='euclidean',method='average') ``` * euclidean(歐式距離) ![](https://i.imgur.com/P613ZuD.png) ![](https://i.imgur.com/dMwYU8Z.png) * cosine ![](https://i.imgur.com/OgYfMaw.png) ![](https://i.imgur.com/w6L2fdH.png) 結果: result_201208_0702(尚可,沒有 euclidean 好) ### Cosine vs Euclidean 比較 舉例,`C`與`CC`理應為同一群,但Cosine將其歸類在不同群,而Euclidean有將其歸類在同一群。 #### Cosine ![](https://i.imgur.com/F65ny5S.png) ![](https://i.imgur.com/2QIIXZE.png) #### Euclidean ![](https://i.imgur.com/i9f4KGy.png) * cityblock ![](https://i.imgur.com/lURPOTy.png) 結果: result_201208_0708(尚可,同樣長度比較容易抓在一起 ##### 資料: https://www.aiuai.cn/aifarm1390.html ## 實測時間 * 500 筆 : 0:12.159019 figsize=(200,50) * 1000 筆 : 0:27.070813 figsize=(400,100) * 10000 筆 : 3:088584 figsize=(500,300) ## 實測 10000 筆 data ``` (sch.linkage(ordArr,metric='euclidean',method='average')) (index[30000:40000] ; linkage method='average') ``` 結果: result_201208_0759 ![](https://i.imgur.com/5kfKNsz.png) ![](https://i.imgur.com/5hDdyRZ.png) ![](https://i.imgur.com/0kzyXfX.png) ![](https://i.imgur.com/iQf4tSU.png) ##### 資料:https://haojunsui.github.io/2016/07/16/scipy-hac/ ###### tags: `Progress Report` `Account Analysis`