---
# System prepended metadata

title: 資料探勘

---

# 資料探勘
* paper presentation：20min + 5min Q&A
* HW1(4月中)：data preprocessing (data -> vector -> Reduction)
## 1-Data Preprocessing!
[](https://i.imgur.com/BbxQOpX.png)
### Cleaning data
* Why Data Preprocessing？
    * ->Data是imcomplete、noisy、inconsistent(表示方式有差異)
* Handle Missing Data
    * 方法： 
        1. 忽略
        2. 人為or自動處理
* handle noisy data
1. Binning method:
    1. Data排序，分到好幾個桶子中(bin)
        1. Equal-width：同寬度。0-20000、20001-40000
        2. Equal-depth：固定切n個，每個bin的數目大致相同
    2. 做smoothing：4 8 9 15
        1. by means：4 4 4 4
        2. by bin boundaries：看Data與頭尾的值誰較近4 4 4 15
    ![](https://i.imgur.com/82pLjRf.png)

2. clustering：在cluster以外的Data視為noisy data
3. 半人工半機器處理noisy Data
4. regression：離線越遠的點視為noisy data

### Data Integration：整合多個database
* data integration：把不同source的data整合在一起。
    * schema integration(名稱)：id vs 序號
    * 統一度量衡
### data transformation
* smoothing：remove noise
* aggregation：summarization， data cube construction
* Generalization：concept hierarchy (以同一相似階層做分系，EX年齡層)
* normalization：![](https://i.imgur.com/2dgj08g.png)

    1. min-max：將資料等比例縮放到 [0, 1] 區間中。![](https://i.imgur.com/O4P0V1d.png)
    2. z-score：$z=\frac{x-mean}{std}$
    3. log scaling：log(x)
    4. softmax function：x' = $\frac{e^x}{\sum e^x}$，頻率高的data影響力更大。
### Data discretization資料離散化：將資料以區間重新劃分，常用於數據資料。
### data reduction：用較少資料，但能表示原本大量資料的結果。
* feature/dimension/attribute selection(較不熱門)
#### dimensionality Reduction
1. 一個個加(greedy)：一個個feature測試效果，前一個找到的feature搭配。
2. 一個個減
3. 1+2混用(先加後減)
4. Decison tree：把分類效果最好的feature作為root分2類。靠近root的feature優先選![](https://i.imgur.com/Mc67nfX.png)
#### data compression
* 儲存可處理的資料中有效的部分
![](https://i.imgur.com/uQuguDp.png)
* Haar：任何函數都可用2個正交函數(內積=0)(1,1)、(1,-1)表示，同除以根號2
    * 步驟：
        1. 以2個為一組
        2. 先與(1,1)做內積、再做(1,-1)![](https://i.imgur.com/C8al2pl.png)
        * 即2個為單位相加除以根號2，全跑完再做相減除以根號2
    * Wavelet Transforms：可用於降維
        * ![](https://i.imgur.com/w2qJdwh.png)
        * 轉換前後：內積不變，絕對值不變，無損壓縮
* 其他更多組合：Daubechies wavelet：以n個為一組
    * 可用於圖片壓縮
* Principal Component Analysis
    * 找到較少的feature數量表示原資料
    * Singular Value Decomposition (SVD)
    * X1用新的feature投影到Y1、Y2![](https://i.imgur.com/pBQBR75.png)
    * 以可顯區分資料最多的Y投影。Y1比Y2好
    * Y1 Y2怎麼來? -> eigenvalue、eigenvector
        * 以eigenvalue較大的Attribute作為新的Y
    * SVD decomposition奇異值分解：$A=U * \lambda * V^T$
        * 是一種線性代數演算法，拆分後可得關鍵資訊。奇異值分解同時包含了旋轉，縮放和投影三種作用
        * U：資料數目的單位向量， 將$AA^T$的特徵向量組成的就是我們SVD中的U矩陣，
        * $\lambda$：eigenvlaue重要性，由左上到右下遞減，只有對角線元素有值，且代表想下降到的維度。不一定是方陣。
            * 在某個奇異值的數目（r個）之後，其他奇異值都置為零，這就意味著資料集中僅有 r 個重要特徵，其餘的都是噪聲或冗餘資料。
        * V：attribute數目的單位向量
        * 實務上k不會很大(基本上遠小於n)，即可降維並包含很多資訊![](https://i.imgur.com/0UzDkiQ.jpg)![](https://i.imgur.com/OqdgWms.jpg)
        * 

        * ![](https://i.imgur.com/Ykldezq.png)![](https://i.imgur.com/4qQLgx0.png)
        * ![](https://i.imgur.com/Lh0I7fO.png)
            * 5維資料投影到2維：原資料與![](https://i.imgur.com/1IPdW2a.png)做內積得x,y值
            * 用$A*V=U * \lambda$比較好算，即AV (= UL) defines the transformed dataset
                1. 先用$A^TA$拆分eigenvalue與eigenvvector得到V
                2. 再用原資料$A*V=U * \lambda$極為壓縮後的資料。
        * 取的維度可用$\dfrac{\sum \lambda(c個)}{\sum \lambda(全部)}$約為80%~90%較好
    * (SVD應用在IR)Latent Semantic Analysis (LSA, LSI)
        * ![](https://i.imgur.com/SIsnAjb.png)負值無法得到資訊
    * Non-negative Matrix Factorization (NMF)：為解決負值無法顯示意義的問題
        * 拆成2個矩陣，$V=W*H$，皆為正值
        * 目標：Minimize $||V-WH||^2$ with respect to W and H, W,H>0
        * n個維度下降至c個維度
        * 理想的狀況：W的單位向量互相垂直$W^TV=W^TWH$
        * 學習過程![](https://i.imgur.com/IM4H3Ak.png)
        * ![](https://i.imgur.com/FfXh0OH.png)分解之後出來的兩個矩陣，參考上圖，H矩陣是書目隊上一個新的維度，你可以把他想成不同的書可以被分成不同的群，所以裡面的數值就是不同的書目被歸到不同群的程度，W矩陣顧客對上一個新的維度，你可以把他想成這些客戶喜歡不同群的程度
        * 有時處理結果反而更清楚(因為非負值?)![](https://i.imgur.com/R69igt3.png)
        * NMF Basis Images
            * Only allowing adding of basis images makes intuitive sense
        * NMF可用於填空值(影片推薦系統)
            * 參考類似user or 影片來填空值![](https://i.imgur.com/kgmyzI2.png)
    * Autoencoder(非線性reduction)：非線性mapping。x與x'越相近越好![](https://i.imgur.com/kiFZVs6.png)
        * 使用activation function達到non-linear mapping
        *  Training autpencoder：若input為bit vector或機率vector，常使用cross entropy![](https://i.imgur.com/FfQDsG3.jpg)
![](https://i.imgur.com/79G4yvE.png)
        *  使用cross entropy loss：計算2個機率分布(x、$x^'$)的距離
        * ![](https://i.imgur.com/V43gTi0.png)
        * 左邊適合處理已看過的資料 -> 新資料不要太多![](https://i.imgur.com/xVq13Wm.png)
            * 適用於training階段
            * hidden nodes對training來說會是好的feature
        * 右邊有些feature是湊出來的，要挑。但較適合複雜的分布![](https://i.imgur.com/jnKdf5e.png)


* Numerosity Reduction：減少數量
    * 2種方式
        * 有參數方法：假設資料符合某種model分布，以model(函數)表示，紀錄model即可。例：Regression
            * 常使用最小平方法to fit the line
        * 無參數方法：沒有相似model，要用其他方式，例：Sampling、Clustering、直方圖記錄分布(只挑重要的feature)
        * ![](https://i.imgur.com/NSitbVg.png)
        * Sampling(取樣)：通常用adaptive sampling method，如：分層抽樣(Stratified sampling)用一些特徵分層，不同層間變異大，在各自層裡取樣。
* Hierarchical Reduction
    * 以不同解析度觀點來切資料
* Discretization離散分法：訂定數值範圍來切(1-10，11-20...)
* Concept hierarchies：以較高層次的概念來切(青少年、青年、中年...)
* Entropy-Based Discretization：先假設一個切割點,在計算該點左右兩邊的值以評估該點是否屬於好的分割點,反覆作業直到找到最好的分割點,屬於supervised
    * Entropy = $\sum -P_i*log(P_i)$
        * ![](https://i.imgur.com/u7ZtJq7.png)，此為遞迴方法，直到中止條件如![](https://i.imgur.com/6Q2IkrM.png)
        * 資料分布平均時，entropy值越大
        * entropy用於分辨資料一致性，越大->資料分布越分散
        * 可協助決定切資料entropy越小越好
* Segmentation by Natural Partitioning
    * A simply 3-4-5 rule can be used to segment numeric data into relatively uniform, “natural” intervals.
## 2-Classification
### Classification vs. Prediction
* Prediction：models continuous-valued functions, i.e., predicts unknown or missing values
### Classification: A Two-Step Process
* training、testing
### Evaluating Classification Methods
* Accuracy
* Speed
* Robustness：對資料欄位是否都要有值才能預測?
* Scalability
* Interpretability可解釋性
### Decision Tree
* ![](https://i.imgur.com/nzu76kK.png)
#### 挑attribute的方法
* 找出有鑑別力的attribute做分類
* top-down recursive divide-and-conquer manner
* 連續性資料做分段切割
* 何時停止？
    1. 分類內全部一致
    2. 有一定threshold數量一致
* 如何選attribute？用Information Gain(entropy算)，稱為ID3方法
    * ![](https://i.imgur.com/2nhSlGJ.png)
    * Information gain = 初始entropy - 參數entropy
    * Information gain越大越好
* Computing Information-Gain for Continuous-Value Attributes
    * 用切的(best split point)
* ID3 -> C4.5，Gain Ratio for Attribute Selection (C4.5)
    * Information gain的正規化
    * ![](https://i.imgur.com/N8vZ0TZ.png)
* Gini index (CART, IBM IntelligentMiner)
![](https://i.imgur.com/ozfuMus.png)
    * GINI INDEX越小，各組資料一致性較高 -> 可選此attribute
    * All attributes are assumed continuous-valued

* 基本上，分成越多組(越多label)的attribute，越有機會成為分類依據。但不一定表現越好 -> 用gain ratio處理![](https://i.imgur.com/ZD4KzEW.png)
    * 但gain ratio也有問題，傾向選會分小堆的attribute

* decision tree的解釋力較高
* ![](https://i.imgur.com/F5KAHrx.png)
#### Overfitting and Tree Pruning
* 避免overfitting的方法：剪枝
    1. Prepruning: Halt tree construction early—do not split a node if this would result in the goodness measure falling below a threshold
    2. Postpruning: Remove branches from a “fully grown” tree—get a sequence of progressively pruned trees。bottom-up方式修剪過多的樹枝

#### Enhancements to Basic Decision Tree Induction
![](https://i.imgur.com/oKiiEyF.png)
### Bayesian classification
#### 基礎介紹：以機率為主的分類方式
* 假設：事件獨立、incrementally漸進方式增加/減少機率
* 事前機率、事後機率
* ![](https://i.imgur.com/i3DLbZ9.png)，可省略分母(都一樣)
* 獨立：![](https://i.imgur.com/o4ozEcB.png)
* 解決連乘越小的問題 -> 取log連加
#### Bayesian Belief Networks
![](https://i.imgur.com/nK5jqjo.png)![](https://i.imgur.com/OOzjmhQ.png)
![](https://i.imgur.com/8WEcmp3.png)
#### Neural Network
##### Feed & foreward
* x交運算後若通過threshold$\theta$，進行下一NODE運算![](https://i.imgur.com/uW7WpAv.png)
* 若發生error，threshold與w參數需調整
    * threshold調整![](https://i.imgur.com/O2JloD6.png)
    * w參數調整![](https://i.imgur.com/L886DzT.png)
* ![](https://i.imgur.com/dLaxUT7.png)
    * Hidden layer的調整：用output layer的調整做反向權重加總
* ![](https://i.imgur.com/Z3vNhyu.png)

#### CNN & RNN
* Convolutional Neural Network (CNN)
    * ![](https://i.imgur.com/tgRmT7c.png)

        * ![](https://i.imgur.com/2nyqzra.png)
    * 解為：上式所得的面積(矩陣運算)
    * 2種layer組成：
        * Convolutional layer：擷取局部重要資訊(EX轉角)
        * pooling layer：簡化圖層資訊4x4 -> 2x2
        * 以上可擷取特徵，並解決：平移、縮放、旋轉等差距
        * ![](https://i.imgur.com/RKi4ZVg.png)
    * Activation functions：主要是利用非線性方程式，解決非線性問題，若不使用激勵函數，類神經網路即是以線性的方式組合運算，這樣機器學習就沒意義了
        1. Sigmoid
            * 用於分類問題，輸出範圍介於[0, 1]。
            * 由於feed-forward network通常會用back-propagation訓練，這個方法是gradient-based method，所以activation是可微的函數比較好計算
            *  ![](https://i.imgur.com/0sdDXlA.png)微分最大值$1/4$![](https://i.imgur.com/XXuNHWX.png)
        2. Hyperbolic tangent
            * 常用於分類問題，輸出範圍介於[-1, 1]，學得比Sigmoid慢
            *  ![](https://i.imgur.com/b403yak.png)微分最大值1![](https://i.imgur.com/z5F04DJ.png)
    * ![](https://i.imgur.com/uTzOJ0G.png)
        * 例：$Err_3=O_3(1-O_3) [W_{3-6}O_6(1-O_6)(O_6-T_6)+W_{3-7}O_7(1-O_7)(O_7-T_7)+W_{3-8}O_8(1-O_8)(O_8-T_8)]$
    * Vanishing gradient problem：太多layer時，微分的learning效果會越來越小，以Hyperbolic tangent為例：$(1/4)^n$
        * 解法：使用另一Activation function----Relu函數$f(x)=max(0,x)$
* RNN & LSTM(RNN的一種，在Vanishing gradient problem改良)
* RNN：將input連接output後，再作為input輸入![](https://i.imgur.com/489DOJ8.png)
    * 仍然有Vanishing gradient problem
* LSTM
    * 加入Cell state：表示network狀態，LSTM會同時學習C、h
        * 用來忘掉一些要素
    * ![](https://i.imgur.com/pgjPi5g.png)
    * ![](https://i.imgur.com/9LhmVzO.png)
        * concat：2向量接起來
        * C：忘舊的，記新的
        * $f_t$：bit計算後為0的話，忘掉![](https://i.imgur.com/bwVjnP1.png)
        * $i_t$決定哪些bit要帶到下一層。$C_t'$決定哪些內容要帶到下一層![](https://i.imgur.com/NSzZcTV.png)
        * 計算以上資訊得到$C_t$![](https://i.imgur.com/JKdJIp7.png)
        * $o_t$根據上層h與輸入x計算。$h_t$由$o_t$與$C_t$做tanh計算得到![](https://i.imgur.com/4SsUAQ4.png)
* Neural network
    * 缺點：
        1. training時間很久
        2. 很多參數需調整
        3. 解釋性低
    * 優點：
        1. 對noise data抵抗性高
        2. 可平行化計算
        3. 對真實世界資料表現良好

## Reinforcement Learning
* ![](https://i.imgur.com/7Wrxbnq.png)
    * 以最大化Reward為目標
    * 常用於做很久的learning
* 監督式與增強式學習差距![](https://i.imgur.com/sxhY6ua.png)
* Reinforcement learning種類![](https://i.imgur.com/Zkbih13.png)
    * actor：由state、reward學習
    * critic：評估一個actor的好壞，好的actor會藉由Critic挑出，Q-learning就是這樣的方法。
* ![](https://i.imgur.com/QO92zmf.png)![](https://i.imgur.com/lPrOQhr.png)
* ![](https://i.imgur.com/kIOqeGm.png)以Reward的總和評量Actor分數
    * ![](https://i.imgur.com/3rU5DFK.png)
    * 以圍棋為例，可能依最後棋局贏輸算一次分
    * 條件機率計算![](https://i.imgur.com/fVhJDaT.png)，調整$\theta$學習actor(第2項)
    * ![](https://i.imgur.com/kqYOrj2.png)
    * 對reward做gradient descent![](https://i.imgur.com/6cS1Ob5.png)

* ![](https://i.imgur.com/zSV005Y.png)![](https://i.imgur.com/rfxpb13.png)
* (舊)![](https://i.imgur.com/WbPCqrM.png)
* Actor-Critic![](https://i.imgur.com/6FheslZ.png)

## Support Vector Machine分辨模型容忍度，常用OR做最佳化
* 紅色點帶入直線方程式距離大於等於1；綠色點小於等於1![](https://i.imgur.com/XJoHxrS.jpg)

* 點與直線的距離、點在範圍外的距離
![](https://i.imgur.com/1Bg7PVM.png)![](https://i.imgur.com/QgW7rZN.png)
* 2次曲線![](https://i.imgur.com/s2R1R7j.png)
    * 一般式$ax^2+bxy+cy^2+sx+ey+f=0$
    * 可做座標轉換簡化問題![](https://i.imgur.com/BNdKt6p.png)![](https://i.imgur.com/0qowklc.png)
    * ![](https://i.imgur.com/Fkj12Yl.png)目標為最大化 margin
    * Kernel Functions：通常是多項式(polymonial)![](https://i.imgur.com/IgvF7rX.png)![](https://i.imgur.com/gW2lT9i.png)
    * RBF kernal可優先用，特色是?甚麼時候導致缺點?![](https://i.imgur.com/cHfEHIM.png)![](https://i.imgur.com/VndBKgU.png)![](https://i.imgur.com/6QvmtrK.png)黃色點應分到與綠色相近，但被分成紅色 -> overfitting
    * 若非線性可分怎麼辦?![](https://i.imgur.com/aEri1CW.png)slack variable(允許誤差)
    * SVM與Neural Network的差異?![](https://i.imgur.com/45DzUVC.png)
* KNN
    * ![](https://i.imgur.com/RrkMIBe.png)
    * KNN有甚麼問題![](https://i.imgur.com/1QJv1R0.png)Curse of dimensionality

## Genetic Algorithm
* ![](https://i.imgur.com/cr6GeGl.png)
* ![](https://i.imgur.com/E7bS1pW.png)


## Ensemble Methods
* ![](https://i.imgur.com/MvD5ct7.png)
### Boosting
* Weights are assigned to each training tuple
* After a classifier Ci is learned, the weights are updated to allow the subsequent classifier, Ci+1, to pay more attention to the training tuples that were misclassified by Ci
* Comparing with bagging: boosting tends to achieve greater accuracy, but it also risks overfitting the model to misclassified data
* Adaboost
![](https://i.imgur.com/AEL9PDL.png)
![](https://i.imgur.com/shJ2KCO.png)
![](https://i.imgur.com/Un28jN1.png)
![](https://i.imgur.com/IWkR6W3.png)
![](https://i.imgur.com/slH03lc.png)



## Clustering
* 甚麼時候用? -> label出不來的時候
* clustering時domain knowledge要參與少，減少參數input
* 處理資料：可用z-score做正規化
* similarity：距離公式(Euclidean)
* Binary的距離 Jaccard coefficient
* nominal variable(multi-class)的距離
    1. $d(i,j)= \dfrac{p-k}p$
    2. 全部binary化表示000 001 010 011 100
* ordinal variable有順序值的距離
    * normalize到0-1
* Ratio-scaled variable：數值差異太大時
    * 取log
* Mix type(各種資料型態混和時)
    1. 分開算，再加權平均
* vector方式：文件
    * cosine similarity

### cluster之間的距離
* single link：合併的時候可能使資料點的差異過大問題、complete link：合併時可能併到不是最相近的cluster問題、average link、centriud'：可能不是原本的資料點、medoid：以最靠近centroid的真實資料來計算


#### cluster算中心點
* centroid
* raddius(半徑)
* Diameter(直徑)

#### Clustering的方法
* 分割：資料點到中心點的距離越小越好
    * k-means
        * 優點：
            * 有效率O(tkn)，基本上t, k << n，可視為linear時間複雜
            * 大多結束在local minimun -> 就多做幾次看哪個好
        * 缺點：
            * 中心點要算得出來才能使用(EX文字資料的中心點?)
            * 要先決定分成幾個cluster k，不一定直覺
            * noise, outlier data 影響很大
            * 無法計算出不規則形狀的cluster，大都圓形
        * k-means變形：k-mode可處理分類label的資料
            * 以出現頻率最多的資料為中心點
            * k-medoids：最靠近centoid的點
        * PAM(Partitioning Around Medoids)
            * starts from an initial set of medoids and iteratively replaces one of the medoids by one of the non-medoids if it improves the total distance of the resulting clustering
            * PAM works effectively for small data sets, but does not scale well for large data sets

    
    * Fuzzy C-means：![](https://i.imgur.com/KTcOyTz.png)

        * 一個資料點可以屬於2個以上的cluster(以機率為基礎)，一樣先任意選c個center
        * 以m控制fuzzy程度(m>=1)，m為1時退化為k-means
        * 隸屬度與距離的$\dfrac{2}{m-1}$次方成反比，隸屬度計算![](https://i.imgur.com/QNBbBTM.jpg)
        * ![](https://i.imgur.com/VmUviuL.png)
        * 資料點隸屬度的計算![](https://i.imgur.com/YHrbuJs.png)
        * 資料點與每個中心點的機率總合為1；中心點對每個中心點的機率總和通常不為1
        * 新中心點的計算![](https://i.imgur.com/0fJ2xOz.png)
        * 下圖的分母應該要個別m次方![](https://i.imgur.com/BFWK2Cu.jpg)
        * 優點：非監督式、一定會收斂(converge)
        * 缺點：計算時間長，一樣對noise、outlier

* 階層型Hierarchical clustering
    * 每次把最接近的cluster合併
        * bottom-up(AGNES)常用
        * top-down(DIANA)
        * Chameleon：做Graph，Node之間越多連結表示越相似
            * ![](https://i.imgur.com/mfeLX05.png)
            * 可做出不規則形狀的cluster

* Density-based：密度較高的點為一cluster(較多使用DBSCAN)
    * DBSCAN
        * 2個參數Eps(半徑)、MinPts(形成一個cluster的最少資料個數)，受參數影響很大![](https://i.imgur.com/jQRHLLS.png)
        * Directly density-reachable：若以q為中心作圓，若可包含p，則p為q所Directly density-reachable![](https://i.imgur.com/HpOI8JU.png)

        * Density-connected：若o可以從p、q作Density-reachable，則可能可以合併。![](https://i.imgur.com/gxhJAxA.png)
        * ![](https://i.imgur.com/c5YcEkL.png)
        * 做法：![](https://i.imgur.com/MAbLLns.png)
* grid-based：資料點存在的空間切成格子，格子內密度夠高可為一cluster，鄰近間的格子可合併。(Wavecluster)
    * Wavecluster![](https://i.imgur.com/8icEzdS.png)
        * 透過wave-transform，不同resolusion有不同的cluster![](https://i.imgur.com/IMWqvic.png)

        * 特性![](https://i.imgur.com/X8dKfxI.png)
            * 








* model-based：假設資料符合某些model分布
    * EM model(Expectation Maximization)統計方法：c-means的延伸，每個點與中心點都有一個機率權重分布關係
        * 步驟![](https://i.imgur.com/5p4mqn0.png)
        * 例子：
            * 假設成績服從下列分布![](https://i.imgur.com/VP9gfFF.png)
            * 做Maximize likelihood![](https://i.imgur.com/46nkjz2.png)
            * 一個問題![](https://i.imgur.com/iEa7Fup.png)![](https://i.imgur.com/zPWErMU.png)
            * 做EM步驟到收斂![](https://i.imgur.com/3yyOhKs.png)
        * 在cluster時，假設資料成常態分佈![](https://i.imgur.com/NCyCRxm.png)
            * ![](https://i.imgur.com/Zm6340r.png)
            * 目標：最佳化k個中心點位置
    * LDA(Latent Dirichlet Allocation)：假設符合Dirichlet分布，常用在text mining![](https://i.imgur.com/elvyzkr.png)
        * 計算機率分布
        * 怎麼標顏色? -> 用Gibbs sampling algorithm
        * ![](https://i.imgur.com/waWhWdQ.png)
            * -i：先把第i個字MASK掉
            * 前項：文章d內，除了MASK掉的那一個字，屬於topic k的字越多，機率越大。
            * 後項：所有文章中，除了MASK掉的那一個字，屬於topic k的字越多，機率越大。
        * 例子![](https://i.imgur.com/uDXl9hI.png)
        * Clustering high-dimensional data![](https://i.imgur.com/BEel7h7.png)
        * Curse of Dimensionality：因在投影到不同維度下，data間的距離會放大或縮小
            * 僅使用部分的dimension來切分資料
            * ![](https://i.imgur.com/vb6tTct.png)![](https://i.imgur.com/A7OdpCe.png)


* frequent pattern-based：找出常發生的pattern作clustering
    * 只使用部分實驗結果來分析![](https://i.imgur.com/r56h0uH.png)

* user-guided(constraint-based)

* What is outlier discovery：找出最少出現的東西![](https://i.imgur.com/KidXUKH.png)
    * ![](https://i.imgur.com/jzg0wum.png)





