> 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/support-vector-machine.md).

# Support Vector Machine based

## Support Vector Machine Base Bearing Fault Diagnosis for Induction Motors Using Vibration Signals

2015, 황돈하, 윤영우, 선종호, 이종호, 대한전기학회

### Outer-race Rolling Bearing Faults

#### Characteristic frequencies

* vibration freq.:

![](/files/-MgyPAhdhfV7WtSyh-jL)

* harmonics of f\_od

  $$
  \eqalign{ & f\_{OD,k} = k \times f\_{OD} \cr & where,k = 1,2,3,... \cr}
  $$
* load에 따른 주파수

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

#### Experimental setup

* outer race fault

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

  * 외륜에 8mm, 12mm hole
* 75kW cage induction motor
  * rated voltage: 33V
  * rated current: 16.3A
  * f\_supply: 60Hz
  * speed: 1780 rpm

experimental setup

![](/files/-MgyQvI_mZChuRHzlmyY)

* test motor
  * NU318E roller bearing, 롤러 개수 N=13
  * acceleration sensor AS-022(from B\&K Vibro) 부착
* load motor
  * inverter 연결하여 load condition 제어
    * no load, 50%, 100%
* data acquisition system
  * sampling freq. F\_s=200kHz

### Proposed Diagnostic Method for Bearing Fault Detection

#### Background of SVM

#### Feature calculation

* peak-to-average ratio를 제안함

  $$
  PR = {{\sum\limits\_{k = 1}^K {P\_k } } \over {{1 \over J}\sum\limits\_{j = 1}^J {S\_j } }}
  $$

  P\_k: amplitude of the maximum peak located at the freq. band that is centered at the kth defect freq. harmonic(f\_OD,k) with a bandwidth BW

  (k번째 harmonic 주파수 근처에서 피크값)

  S\_j: amplitude at any freq.

  J: number of points in the spectrum

  K: number of harmonics in the spectrum
* PR에는 신호의 모든 harmonic 정보가 담겨있음, 그러나 load rate에 따라 중요한 일부만 feature로 사용함

  $$
  PR\_k = {{P\_k } \over {{1 \over M}\sum\limits\_{j = 1}^M {W\_{k,j} } }}
  $$

  k: harmonic index

  W\_k,j: amplitude of freq. component at the freq. band centered at f\_OD,k with BW

  M: number of freq. domain sample points in BW

#### Feature Selection

υ-fold validation 사용(???)

#### Training and classification

two-stage classification

![](/files/-MgyQvIcS3MnJKZRARhU)

1st SVM: 모든 데이터 학습

2nd SVM: 결함이 있는 데이터만 학습

#### Classification result

Bandwidth BW=8Hz로 설정

각 load condition에 따라 50번씩 실험

* Classifier

![](/files/-MgyQvIfOszDYP0QBWc8)

* 0% load condition

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

  PR1은 정상 베어링과 고장 베어링을 잘 구분하지만 고장베어링끼리는 구분할 수 없음
* 50% load condition & 100% load condition

  <img src="https://github.com/ykkimhgu/gitbook_docs/tree/435f25edb19198fd4ffa605cf93fb344ac5f8138/digital-twin/bearingfault_journal/C:/Users/Summer/AppData/Roaming/Typora/typora-user-images/image-20210716082827574.png" alt="image-20210716082827574" data-size="original">

  PR1에선 bearing 1의 값이 큰데 PR2에선 bearing 2의 값이 큼: 심각한 결함일수록 더 큰 고조파를 유도하기 때문

제안하는 기법: SFS method를 이용해 {PR1, PR2, ⋯, PR5}의 부분집합으로 각 부하마다 best feature set을 만들기

* 1st SVM

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

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

  <img src="/files/-MgyQvIq_j_Qjg3cGO5p" alt="" data-size="original">
* 2nd SVM

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

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

## Multi-class SVM을 이용한 회전기계의 결함 진단

2004, 황원우, 양보석, 한국소음진동공학회

### Support Vector Machine

![](/files/-MgyQvIvRKvT2TVaTmv2)

* hyperplane의 정의

  $$
  \eqalign{ & w \cdot x + b = 0 \cr & w \in R^N \cr & b \in R \cr}
  $$
* 회색 원과 사각형 데이터 포인트를 support vector라고 함
  * 나머지 데이터는 폐기해서 학습 시간이 빨라짐
* 두 hyperplane H1과 H2 사이의 거리가 최대가 되어야함

  $$
  margin = {2 \over {||w||}}
  $$
* Lagrangian을 사용해서 최적화한다(???)
* ???
* Lagrangian multiplier a\_i와 한계값 b로 새로운 데이터를 분류 가능함

  $$
  f\left( x \right) = sign\left( {\sum\limits\_{i = 1}^N {\alpha \_i y\_i \left( {x\_i \cdot x} \right) + b} } \right)
  $$
* 실제 데이터는 선형적으로 구분할 수 없는 경우가 많음
  * N차원의 입력 공간을 고차원의 특징공간(Q차원)으로 변환하면 선형적으로 구분 가능
    * 변환함수

      $$
      \eqalign{ & s = \Phi \left( x \right) \cr & where,,x \in R^N ,,,s \in R^Q \cr}
      $$
    * f(x)에 대입

      $$
      f\left( x \right) = sign\left( {\sum\limits\_{i = 1}^N {\alpha \_i y\_i \left( {\Phi \left( x \right) \cdot \Phi \left( {x\_i } \right)} \right) + b} } \right)
      $$

      <img src="https://github.com/ykkimhgu/gitbook_docs/tree/435f25edb19198fd4ffa605cf93fb344ac5f8138/digital-twin/images/svm/6.png" alt="" data-size="original">
    * kernel 함수

      $$
      K\left( {x,y} \right) = \Phi \left( x \right) \cdot \Phi \left( y \right)
      $$

      를 f(x)에 대입하면

      $$
      f\left( x \right) = sign\left( {\sum\limits\_{i = 1}^N {\alpha \_i y\_i K\left( {x,x\_i } \right) + b} } \right)
      $$

      * 일반적으로 kernel 함수로 RBF kernel, Polynomial kernel, Perceptron, Linear등 사용

### Multi-class SVM의 전략

**one-against-all, one-against-one**, directed acyclic graph, binary tree 등

#### one-against-all 기법

![](/files/-MgyQvJ-LBu0xXoodSPd)

k개의 상태를 분류하기 위해 k-1개의 svm 필요

#### one-against-one 기법

![](/files/-MgyQvJ1W6FVkAO-Vq8p)

k개의 상태를 분류하기 위해 k(k-1)/2개의 svm 필요

### 결함 진단 시스템의 구성

#### 실험 장치 및 데이터 취득

![](/files/-MgyQvJ31ycFHaPx1X1r)

* 결함의 종류
  * 편심, 편각, 정렬불량, 베어링 결함(내륜, 외륜, 볼, 복합), 디스크의 불평형

    <img src="/files/-MgyQvJ4Z_heeSAhkAxa" alt="" data-size="original">
* 데이터 취득
  * 베어링 하우징 상단에 부착된 가속도계 이용
  * 최대 주파수 5kHz, 데이터 수 16384개
  * 운전속도 1800rpm(30Hz)
* 결함별 진동 신호
  * 불평형: 1x(30Hz) 성분 증가
  * 편각 정렬 불량: 1x, 2x, 3x 성분 증가
  * 편심 정렬 불량: 2x, 3x 성분 증가
  * 베어링 외륜 결함: 외륜통과주파수(104.7Hz) 증가, 고주파 대역의 공진 성분 증가(충격 때문)
  * 베어링 내륜 결함: 내륜통과주파수(162.2Hz) 증가
  * 볼 결함: 볼 자전속도의 2배 성분 142.44Hz 성분 존재

#### 특징 추출

통계적 처리기법 이용

* 원신호에 대한 mean, RMS, shape factor, skewness, kurtosis, crest factor, entropy estimation, entropy error
* Daubeches-10 wavelet 변환을 level3까지 수행

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

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

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

#### 특징 선택

총 32개의 파라미터를 대상으로 유효성 평가를 통해 유효성 계수가 높은 파라미터들을 선택함

방법

1. 한 상태 집합에서 데이터간의 거리 d\_i,j 계산

   $$
   d\_{i,j} = {1 \over {N \times \left( {N - 1} \right)}}\sum\limits\_{m,n = 1}^N {|p\_{i,j} \left( m \right) - p\_{i,j} \left( n \right)|}
   $$
2. 다른 데이터 집합에서 각각 데이터간의 거리 d'\_i,j 계산

   $$
   d^, *{i,j} = {1 \over {N \times \left( {N - 1} \right)}}\sum\limits*{m,n = 1}^N {\left| {p\_{ai,m} - p\_{ai,n} } \right|}
   $$
3. 파라미터의 유효성 계수 계산

   $$
   \alpha \_i = d^, *{ai} /d*{ai}
   $$

유효성 계수가 큰 순서대로 8개의 특징 파라미터 사용

### Simulation 결과

#### 학습 및 테스트 데이터의 구성

* 총 160개의 데이터
  * 학습 데이터: 각 결함마다 10개씩 총 80개 사용
  * 테스트 데이터: 나머지 80개

#### 학습 및 테스트 결과

![](/files/-MgyQvJCw2lxb4L7UARq)

![](/files/-MgyQvJEWcBCMgFoT0cE)

학습 데이터는 거의 100%의 분류율

테스트 데이터는 Gaussian RBF가 다른 kernel보다 양호하고 one-to-one이 one-against-all보다 양호함

![](/files/-MgyQvJFXMCxDnn8T2Ux)
