---
# System prepended metadata

title: 帳號分析 Hierarchical Clustering_20.11.20
tags: [Account Analysis, Progress Report]

---

# 帳號分析 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`
