> For the complete documentation index, see [llms.txt](https://ykkim.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ykkim.gitbook.io/wiki/industrial-ai/bearingfault_journal/heterogeneous-feature-selection.md).

# Feature Model and Feature Selection

2015, Thomas W. Rauber, Member, IEEE, Francisco de Assis Boldt, and Flávio Miguel Varejão

## Introduction

* CWRU dataset 사용
* Statistical feature
  * envelope feature
* Feature selection
  * dimension을 줄이고 parameter의 성능을 높이기 위함
  * univariate feature의 경우에는 feature selection이 필요하지 않음

    ex) Fisher score 사용
  * multivariate feature는 search algorithm 필요

    statistical, wavelets, and envelopes 같은 서로 별개인 모델에서 feature를 조합할 수도 있음
  * SVM 어쩌구
* Training, validation, and test data splitting
* Validation
  * LOO(leave-one-out), K-fold cross validation
  * estimated accuracy가 유일한 성능 평가 기준이지만 AUC-ROC(area under the receiver operating characteristic curve)같은 것도 있음

Feature models

* 각각 다른 signal feature extraction methods에서 비롯된 feature를 융합해서 사용했던 연구는 없었음

  ↓ bearing fault diagnosis를 위한 일반적인 framework와 이 논문에서 제안하는 framework

  <img src="/files/-MhT_hIlVreDiXzvq5sa" alt="" data-size="original">

## Sequence of Information Processing

1. Signal feature extraction: 센서로 데이터 취득
2. Feature pooling: 최대한 많은 정보를 갖도록 global feature vector를 assemble
3. Feature extraction on the feature level: feature vector에서 새로운 feature를 extract, 이 새로운 feature는 dimension도 줄어들고 machine condition의 정보를 추상적으로 가지고 있음
4. Feature selection: dimension reduction과 판별력을 증가시키기 위함
5. Classification

   이 방법은 extraction 단계에서 관련 없는 feature는 버리고 관련 있는 feature를 얻을 수 있음

### Statistical feature

![](/files/-MhT_hImYilFu09UgxyP)

![](/files/-MhT_hIndBwr13XX8PxT)

time domain, freq. domain의 statistical features

(time domain feature 10개 + freq. domain feature 3개) \* (DE, FE 두 가지 진동 데이터) = 26개의 feature

### Complex envelope analysis

* 베어링 고장에는 4가지 fault freq.가 있음
  * f\_s = shaft rotational freq.
  * f\_c = fundamental cage freq. (CWRU 데이터에는 없음)
  * f\_bpi = ball-pass inner-raceway freq.
  * f\_bpo = ball-pass outer-raceway freq.
* hilbert transform으로 계산됨

  * definition: 신호 h(t)와 1/πt의 convolution

  $$
  \tilde h\left( t \right): = H\left{ {h\left( t \right)} \right}: = h\left( t \right)\*{1 \over {\pi t}} = {1 \over \pi }\int\_{ - \infty }^\infty {h\left( t \right){{d\tau } \over {t - \tau }}}
  $$

  * analytic signal

    $$
    {h\_a}\left( t \right): = h\left( t \right) + i\tilde h\left( t \right)
    $$
* 순서를 다시 정리하면
  1. high pass filtering of the raw signal → signal h(t) 얻음
  2. h(t)에서 h\_a(t) 얻음
  3. Fourier transform: F{h\_a(t)}
  4. analysis its spectrum: |F{h\_a(t)}|
* Feature: 1% narrowband RMS energy 계산
  * (DE, FE 데이터 2가지) \* (f\_bpi, f\_bpo, f\_b 세가지 주파수) \* (cross detection) \* (sixth harmonic)

    \= 2 \* 3 \* 2 \* 6 = 72개의 envelope feauture
  * cross detection? : For the CWRU database, the sensor at the DE, although with less confidence, can detect the faults at the FE; hence, the number of features duplicates.

### Wavelet packet analysis

* wavelet decomposition보다 felxible함
* mother wavelet: Daubechies 4 사용
* level 4까지 분해

  \~\~ 복잡한 수학정인 정의 \~\~

### Feature pooling and dimensionality reduction

feature model을 얻고 나서 그것들을 common pool로 merge 시킴

* feature pool의 index(?)

  26개의 statistical features + 72개의 complex envelope features + 32개의 wavelet packet feature = 130개
* 이 feature들은 중복과 noise가 포함되어 있음 → feature vector의 dimension을 낮추는 게 목적
* reference 28에서는 PCA, partial least squares, independent component analysis, Fisher discriminant analysis, and subspace-aided approach 등의 방법 사용

### Feature selection

* 기본적으로 selection criterion과 search strategy로 구성됨
* wrapper approach
  * classifier의 성능을 estimate..?
  * *가장 좋은 성능을 보이는 feature의 subset을 뽑아내는 방법*
* filter approach
  * feature set을 평가하기 위해 다른 기준을 사용함
  * selection filter의 장점: 속도가 빠름
  * 단점: wrapper 방식에 비해 성능이 안 좋음
  * *사용자에게 feature-rank를 줘서 각 feature가 얼만큼의 영향력을 가지는지 알려주는 방법*
* Best feature(BF) search
  * 선택 기준을 평가하는 방법
    * 각 feature x\_j(j = 1, 2, ..., D)에 대한 선택 기준 J({x\_j})를 평가하고 J에 대해 feature을 내림차순으로 정렬하고 선택된 set X\_d를 정렬된 set의 첫번째 d feature로 설정함
  * BF 장점: 속도가 빠름
  * BF 단점: multidimensionality of the problem을 무시함
* Sequential forward selection (SFS)
  * empty set에서 시작해서 feature 후보군과 이미 선택된 set들을 같이 테스트하는 방법
* Sequential backward selection (SBS)
  * 모든(D개의) feature를 선택하고 D-d feature가 삭제될때까지 feature를 하나씩 삭제하는 방법

    \= d feature가 남아있을때까지
  * floating techniques
  * SFFS
  * SFBS

최근 연구에서 wrapper와 filter method를 combine하려는 시도는 고려되지 않는다(...?)

## Classification and performance estimation

### CV(Cross validation) techniques

* x% training data, 100-x% test data
* K-fold CV
  * 계산의 복잡성을 줄이면서도 통계적 유의성을 얻을 수 있음
  * K개의 subset으로 나눠짐
  * 각 subset은 training에 K-1번, test에 1번 사용됨

    +) 데이터셋을 k개의 같은 크기로 나눠서 한 부분씩 test set으로 사용하여 k개의 test performance를 평균을 내는 방법

    장점: LOO CV에 비해 빠른 속도, validation set approach보다 높은 정확도
* LOO(leave-one-out) CV
  * training 시간이 너무 길지 않다면 사용할 수 있음
  * K-fold CV의 특수한 경우임: total dataset이 N pattern임(K = N)
  * 단순하게 train-test data로 나누는 것보다 더 신뢰도가 높음 - 암묵적으로 각 available pattern이 테스트되기 때문임(...?)

    +) N번의 모델을 만들고 각 모델을 만들 때 하나의 샘플을 제외하면서 그 제외한 샘플로 test set performance를 계산하는 방법이라고 함

    장점: 모든 샘플에 대해 한번씩은 test하기 때문에 randomness가 없음, validation set approach와 다르게 매우 stable한 결과를 얻을 수 있음

    단점: 연산량이 많음, k-fold CV에 비해 model의 다양성이 적음

이 논문에서는 classifier architecture의 training cost에 따라 LOO와 K-fold CV를 사용했음

### Performance criteria

* accuracy와 AUC-ROC 두 가지가 사용됨
* AUC-ROC: 분류해야할 클래스가 두 가지이고, 각 클래스로 분류될 확률을 return하는 경우에 사용 가능
  * negative class가 positive class보다 훨씬 많은 경우에 좋음 ( = normal condition이 fault보다 훨신 많음)

### Classifier architectures

* k-nearest neighbor classifier
* nonparametric method의 한 종류
* *새로운 데이터가 들어왔을 때 근처의 기존 데이터의 k개의 majority votes로 classification하는 방법*
* MLP
  * 대표적인 artificial neural network의 한 종류
* SVM
  * 오랫동안 많은 영역에서 사용된 classifier

## Experimental result

CWRU dataset 사용

### Condition classes

![](/files/-MhT_hIqH1kQV72ORz7I)

​ table 3. machine condition classes defined for the experiments

* 일반적인 CWRU data를 사용한 논문들보다 더 많은 class를 사용함
  * fault의 위치, fault의 심각성, 모터에 대한 위치 등을 구분하기 위함
  * load 분류가 가장 어려운 문제

### Signals to patterns

* 전체 신호는 회전 신호의 반복이기 때문에 일정한 time interval의 연속으로 자르는 게 좋음
  * 테스트를 통해 15번의 nonoverlapping interval이 성능 저하의 threshold라고 찾음

### Experiment 1: Feature extraction

각 machine condition에 따라 feature vector로 split함

1. ↓ statistical features in the time and freq. domain

   <img src="/files/-MhT_hIsZqkIoHu0x8Jl" alt="" data-size="original">
2. narrow band energy of the complex envelope magnitude에서 72개의 feature

   <img src="/files/-MhT_hItu9RAzEF-5ugp" alt="" data-size="original">

   * six harmonic freq. 주변의 1%만큼 narrow band라고 정의함
   * ex) expected freq.가 30Hz (running speed of the machine) \* 5.4152인 경우는 2\*30\* 5.4152 ( = 324.91) 근처를 봐야함 : narrow band는 interval \[(324.91\*0.99), (324.81\*1.01)] = \[321.66, 328.16 Hz]
3. wavelet packet analysis

![](/files/-MhT_hIwDlNZHA_zXUSV)

![](/files/-MhT_hIx2Bv0PpX8XeSV)

* fault의 종류는 같지만 심각도(결함의 크기)가 다름
* 대비를 높이기 위해 0.007 결함은 0hp, 0.021 결함은 3hp인 데이터 사용

  <img src="/files/-MhT_hIyTFkEpGnqUCuL" alt="" data-size="original">
* freq. band 4,4와 4,12에서 값이 크게 차이남
* normal 데이터는 4,0에서 값이 확 높아짐

### Experiment 2: Performance Without Feature Selection

* 1-nearest neighbor classifier는 항상 LOO CV로 validation해야함
* SVM과 MLP는 연산량이 많기 때문에 tenfold CV(10개의 fold로 나누는 CV)를 사용해야 함

![](/files/-MhT_hJ-sZ0l_tqWSngc)

statistical feature model이 가장 정확도가 떨어지고 wavelet packet이 가장 정확도 높음

complete pool이 항상 가장 정확한 건 아님(일부 feature에 노이즈가 있기 때문에 결과가 안 좋을 수도 있음)

### Experiment 3: Feature selection

![](/files/-MhT_hJ032_ZMmi7j43l)

* x 축은 선택된 feature의 수
* global pool과 세가지 feature pool 다 테스트했지만 wavelet 결과만 표시
* global pool의 경우에는 SFFS, SFS가 같은 기능을하고 SBS, SFBS가 같은 기능을 함
* wavelet의 결과를 보면 floating기법이 sequential 결과보다 더 나은 성능을 보임
* 결론: global pool에서 선택된 feature의 성능이 더 좋다

### Experiment 4: AUC-ROC for different feature models and number of selected features

![](/files/zlBKX9BAE82lXXVFMDg1)

* ROC 곡선을 보기 편하게 만들기 위해(?) separating the classes 난이도를 인위적으로 높임
  1. signal sampling resolution을 낮춤
  2. 한 signal에서 pattern의 수를 15개에서 50개로 늘림
  3. 50개의 패턴을 sample하기 위해 첫 2초만 사용함

![](/files/-MhT_hJ3TA8IBVz4SESd)

![](/files/-MhT_hJ4ImayyK5ALtwV)

fig. 4, 5를 통해 one feature model보다 여러 feature를 동시에 사용하는 게 더 성능이 좋다는 것을 확인할 수 있음

### Experiment 5: Comparison of feature selection and feature extraction by PCA

* PCA는 feature selection과 다르게 기존의 feature들을 조합해서 새로운 feature를 만들어내는 방법, feature selection은 original feature가 변하지 않지만 PCA는 variance에 따라 rank됨(variance가 크다고 해서 무조건 성능이 좋아지는 건 아님)

![](/files/-MhT_hJ53un3ss4XyRLv)

table 9 : feature selection(SFS) 방법과 feature extraction(PCA) 방법의 성능 비교

![](/files/-MhT_hJ7hy0Ykag_vHEj)

![](/files/-MhT_hJ8GNMwEyanoUAv)

fig. global pool과 wavelet packet의 PCA 결과

## Conclusion

* 3개의 feature model과 classifier architecture, performance criteria는 이미 많이 사용하고 있는 것들임
* 그러나 다른 논문들은 feature model의 낮은 성능을 지나치게 정교한 classifier model로 보완하려고 함
* 이 논문에서는 good process description을 사용하는 경우에는 classifier는 간단해도 괜찮다는 점을 시사함
