SlideShare a Scribd company logo
1 of 55
Download to read offline
반도체 생산 설비간
Input Parameter 유사도 분석을 위한
알고리즘 개발
서울대학교 컴퓨터공학부
창의적 통합 설계 L팀
김건형 신승용 차현탁
Introduction
- 설비에 입력되는 대량의 파라미터
- 파라미터의 타입(Int, Double, Col Int, String, etc)
- 파라미터 총량
- 설비가 제대로 동작하게끔 입력이 되어있는지, 

설비간 유사성을 어떻게 파악해야할지,

비정상 설비가 있다면 어떤 설비인지 + 어떤 요인때문인지
Objectives
- 어떤 입력 파라미터가 영향을 주는지
- 파라미터의 분류(classification)를 통한 유사성 분석
- 설비 유사성을 통한 군집화(clustering) 및 

불량 검출(anomaly detection)
0. Data cleansing 

&
preprocessing
원본 CSV 데이터 특성
- parameter의 name & value 변조: 데이터 성격 파악 불가
- parameter name과 equipment name이 동시에 동일한 대상:
다른 column 정보 확인후 선별 작업 진행
1. Classification
- 정상/비정상 또는 그룹1, 2, …, n의 설비로 군집화를 위한

parameter classification
- 유사한 설비끼리의 그룹 

= 유사한 파라미터 값을 공유하는 설비끼리의 그룹
- 설비간 특정 파라미터가 특정 값으로 몰릴수록 

설비 동작에 중요한 파라미터라고 판단
Criteria
- 설비에 입력되는 파라미터를
- Constant: 설비별로 같아야하는 파라미터
- Group: 기준 이상의 대수만큼 값이 같아야하는 파라미터
- Random: 사실상 값이 제각각이여도 상관없는 파라미터
100%
30% 30% 30%
70%
Random
Group
Constant
- 보통 분류(Classification)은 분류 결과(label)를 바탕으로 학습
한 뒤 분류하는 supervised learning(지도학습)
- 주어진 파라미터를 classification할 학습된 모델도, label도 없
는 상황
- ‘유사한 값의 분포’를 바탕으로 군집화한 뒤 classification
- KDE(Kernel Density Estimation)
Kernel Density Estimation
- 밀도 추정: 관측된 데이터들의 분포로부터 원래 변수의 확률 분포
특성을 추정
- 커널 밀도 추정: 커널 함수를 이용한 밀도 추정 방식
- 커널: 원점을 중심으로 대칭이면서 적분값이 1인 non-
negative 함수(예: Gaussian)
- Bandwidth: 커널의 첨도를 결정
다양한 bandwidth에 따른 결과
적절한 bandwidth 결정

(Grid search cross validation)
['{"1": 61.47, "2": 61.47, "3": 61.47, "4": 61.47, "5": 61.47, "6": 61.47, "7": 61.47, "8": 61.47,
"9": 61.47, "10": 61.47, "11": 61.47, "12": 61.47, "13": 61.47, "14": 61.47, "15": 61.47, "16":
61.47, "17": 61.47, "18": 61.47, "19": 61.47, "20": 61.47, "21": 61.47, "22": 61.47, "23": 61.47,
"24": 61.47, "25": 61.47}']
Costant
['{"1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10":
true, "11": true, "12": true, "13": true, "14": true, "15": true, "16": true, "17": true, "22": true,
"23": true, "24": true, "25": true}', '{"18": false}', '{"19": false}', '{"20": false}', '{"21": false}']
Constant
['{"18": 61.47}', '{"19": 61.47}', '{"20": 61.47}', '{"21": 61.47}', '{"5": 121.47}', '{"23": 121.47}',
'{"24": 121.47}', '{"25": 121.47}', '{"1": 201.47, "2": 201.47, "3": 201.47, "4": 201.47, "6":
201.47, "7": 201.47, "8": 201.47, "9": 201.47, "10": 201.47, "11": 201.47, "12": 201.47, "13":
201.47, "14": 201.47, "15": 201.47, "16": 201.47, "17": 201.47, "22": 201.47}']
Group
['{"7": 1505840052}', '{"18": 1505839918}', '{"2": 1505841424}', '{"21": 1505841765}', '{"20":
1505842152}', '{"24": 1505842059}', '{"10": 1505842439}', '{"3": 1505842656}', '{"11":
1505842737}', '{"12": 1505842662}', '{"17": 1505842657}', '{"1": 1505842900}', '{"9":
1505843166}', '{"16": 1505843221}', '{"25": 1505843086}', '{"5": 1505843427}', '{"22":
1505843375}', '{"4": 1505843734}', '{"8": 1505843640}', '{"19": 1505843658}', '{"14":
1505843804}', '{"15": 1505843866}', '{"23": 1505843951}', '{"6": 1505844217}', '{"13":
1505844747}']
Radnom
- 설비에 입력되는 파라미터의 KDE의 결과,
- Constant: 한 그룹이 전체의 70%를 초과하는 경우
- Group: 한 그룹이 전체의 30% 이상인 경우
- Random: 어떠한 그룹도 전체의 30%이상을 차지하지 못하
는 경우
- 파라미터별로 값이 ‘같아야’할 필요는 없음
8개 이상
18개 이상
Group
Constant
100%
30% 30% 30%
70%
Random
Group
Constant
else
else서로 같은 값들이 존재할 수 있는데?
else
19, 19, 19, 19, 4, 5, 6, 4
else
19, 19, 19, 19, 4, 5, 6, 4
모두 다른 19 모두 다른 4
else
19, 19, 19, 19, 4, 5, 6, 4
모두 다른 19 모두 다른 4
설비 동작 특성에 영향을 주는 ‘집단’으로 보지 않기 위함
[
{
"1": true, "2": true, "3": true, "4": true, "5": true,
"6": true, "7": true, "8": true, "9": true, "10":
true, "11": true, "12": true, "13": true, "14": true,
"15": true, "16": true, "17": true, "22": true, "23":
true, "24": true, "25": true
},
{
"18": false
},
{
"19": false
},
{
"20": false
},
{
“21": false
}
]
constant
[
{
"3": 14, "4": 14, "5": 14, "9": 14, "10": 14,
"13": 14, "18": 14, "19": 14, "20": 14, "21":
14
},
{
"1": 26, "2": 26, "8": 26, "11": 26, "12": 26,
"14": 26, "15": 26, "16": 26, "17": 26
}
]
group
random
2. Clustering
Theory
- 비지도 학습(Unsupervised learning)
- 데이터 샘플간의 유사도/비유사도를 바탕으로 군집화
- 계층적 클러스터링 / 비계층적 클러스터링
- 계층적 클러스터링
- 굳이 몇 개의 군집(k)으로 나눠야하는지 설정해줄 필요가 없음
- 데이터 샘플간 거리에 대한 정의가 필요함
- 이를 위해 데이터의 성격에 대해 사전 정보가 필요
- 덴드로그램
- 비계층적 클러스터링
- 데이터에 대한 사전 정보가 필요하지 않으며 일반적으로 빠르게 결과를 확인해 볼
수 있음
- 몇 개의 군집(k)으로 나눠야 할지 여러번의 클러스터링 수행과 결과 분석이 필요함
- k 클러스터링
- 파라미터 타입, 내용이 다양하고 어떤 정보를 나타내는지 사전 정
보가 없음
- 데이터 샘플간 거리를 단순히 유클리드 거리로 적용할 수 없는 자
료형 또는 파라미터 특수성 존재(범주형)
- 비계층적 클러스터링 수행
K-means
K-modes
K-prototype
Numerical parameter
- Dimension reduce

다차원 데이터라면 어느 수준까지 차원 압축을 해야하는가
- Normalization

정규화를 진행해도 되는가
- Imputation

비어있는 값을 어떻게 처리해줄 것인가
Categorical parameter
- Distance crieria: 거리를 어떻게 정의할 것인가
- Hierarchical category: 범주의 계층이 다른 두 파라미터를 단순
비교해도 적절한가
- Verification: 무엇보다 파라미터에 대한 정보를 정확히 식별할
수 없다면 

처리 결과가 효용성을 갖는가?
Constant or Group
같은 집단으로 묶인 ‘유사한 값들’
동일한 카테고리
(더이상 numerical value가 클러스터링에 영향을 주지 않는다고 보는 관점)
5656: [‘{“9": [13.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"10": [16.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}',
'{"22": [13.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"2": [5.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "3": [3.4, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0], "4": [3.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "7": [7.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"11": [6.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "12": [3.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "14": [1.3, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0], "15": [4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "16": [6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"17": [3.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "24": [1.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"1": [-1.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0], "5": [-3.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "6": [-2.9, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0], "13": [-1.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "18": [-1.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "19": [-1.5,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "20": [-5.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "23": [-5.9, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0], "25": [-1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"8": [-32.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}']
5655: [‘{“9": [15.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"10": [11.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}',
'{"22": [14.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"2": [8.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "3": [3.3, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0], "4": [4.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "7": [6.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"11": [6.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "12": [3.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "15": [3.3, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0], "16": [5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "23": [3.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}',
'{"1": [-3.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "5": [-2.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "6": [-2.9, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0], "13": [-2.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "14": [-3.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"17": [-2.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "18": [-3.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "19": [-2.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0], "20": [-6.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "24": [-3.9, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0], "25": [-3.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"8": [-31.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}']
5656: [

{9},

{10},

{22},

{2, 3, 4, 7, 11, 12, 14, 15, 16, 17, 24},

{1, 5, 6, 13, 18, 19, 20, 23, 25},

{8}

]
5655: [

{9},

{10},

{22},

{2, 3, 4, 7, 11, 12, 15, 16, 23},

{1, 5, 6, 13, 14, 17, 18, 19, 20, 24, 25},

{8}

]
5656: [1, 2, 2, 2, 1, 1, 2, 4, 5, 6, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, None, 7, 1, 2, 1]
5655: [1, 2, 2, 2, 1, 1, 2, 4, 5, 6, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, None, 7, 2, 1, 1]
Encoding
- Constant: 0으로 표시
- Group: 그룹 크기가 큰 순서대로 1, 2, 3으로 표시
- Random 또는 Constant, Group에 포함되지 못한 설비(other):
4부터 increment
Imputation
- 대안1: None을 제외한 값과 유사한 파라미터로부터 값을
imputing
- 대안2: Random과 동일 기준 적용
- 대안2 선택: 값이 있지만(심지어 같은 값들이 여러개 있지만)
Random으로 분류된 값들이 상대적으로 불공정해짐
75636
3015

(constant: 1245,
group: 1770)
# of features
select unique parameter
약 34만개
classify only

Constant and Group

using KDE
99.12%
감소
K-modes
- categorical data에 적합한 비계층 클러스터링 기법
- https://github.com/nicodv/kmodes 패키지 사용
- 일반적으로 사용하는 유클리드 거리가 아닌 matching
dissimilarity를 거리 측정 기준으로 사용하고 있음
dissimilarity
matching dissim
X = [1 1 5] 

d(C1, X) = 1 = d(C2, X)
dissimilarity
Ng dissim
Michael K. Ng
Ng dissim
Michael K. Ng
X = [1 1 5] 

d(C1, X) = 1
d(C2, X) = 5/3
Select K - Elbow plot
Validate Clustering
- 클러스터링 평가 방법으로 Silhouette coefficient 사용
- 같은 클러스터끼리 뭉쳐있을 수록(minimize a[i])
- 가장 가까운 클러스터와의 거리는 멀수록(maximize b[i])
- Silhouette coefficent 값이 1에 가까울수록 적합
Silhouette plot
Silhouette plot
Discussion
- Silhouette 결과 분석
- 전체 실루엣 평균값 대비 가장
큰 클러스터의 설비들은 더 뭉쳐
있는 것을 확인함
- 하지만 실루엣 값이 0.1에도 못
미치는 수준: 사실상 다른 클러
스터에 속했더라도 큰 차이가 없
을것
- 실제로 클러스터를 결정하기까
지 iteration에 따른 cost의 감
소량이 굉장히 미미함
- 원인1: 너무 적은 data sample과 너무 많은 data feature
- 원인2: classification 단계의 기준 설정의 모호성
- 원인3: 데이터의 성격을 알 수 없는 근본적 문제(기준이 없음)
- 원인4: ng dissimilarity
Why ng dissim can make result worse?
- 클러스터 중심(centroid)와 같을 때, 비중에 따라 비유사도를 ‘덜’ 적용하는 방식
- 2로 encoding된 경우(group)와, 4로 encoding된 경우(others) 모두
centorid와 다르다면 같은 비유사도 1을 적용받게됨
- 게다가 데이터 샘플보다 feature가 월등히 많으므로 비유사도 1을 기본적으로
적용받을 확률이 높아짐
- 따라서 실제 각 데이터 포인트와 centroid간 거리 차이는 매우 미미한 수준
Conclusion
- 다차원 다타입의 데이터의 feature를 단순 차원 축소(PCA)가 아
닌 classification과 encoding을 통해 0.88% 수준으로 압축
- 데이터의 특성을 알 수 없는 상황에서 사용하기 어려운 것들(정
규화, data type 분류 등)을 적용하지 않고도 적용할 수 있는
encoding scheme 방식 제시
- k mode와 같은 categorical data에 대한 클러스터링 및 적합성
측정 방식 제시

More Related Content

Featured

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming LanguageSimplilearn
 

Featured (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

Algorithm for Analyzing Parameter Similarity of Semiconductor Facilities

  • 1. 반도체 생산 설비간 Input Parameter 유사도 분석을 위한 알고리즘 개발 서울대학교 컴퓨터공학부 창의적 통합 설계 L팀 김건형 신승용 차현탁
  • 2. Introduction - 설비에 입력되는 대량의 파라미터 - 파라미터의 타입(Int, Double, Col Int, String, etc) - 파라미터 총량 - 설비가 제대로 동작하게끔 입력이 되어있는지, 
 설비간 유사성을 어떻게 파악해야할지,
 비정상 설비가 있다면 어떤 설비인지 + 어떤 요인때문인지
  • 3. Objectives - 어떤 입력 파라미터가 영향을 주는지 - 파라미터의 분류(classification)를 통한 유사성 분석 - 설비 유사성을 통한 군집화(clustering) 및 
 불량 검출(anomaly detection)
  • 4. 0. Data cleansing 
 & preprocessing
  • 5. 원본 CSV 데이터 특성 - parameter의 name & value 변조: 데이터 성격 파악 불가 - parameter name과 equipment name이 동시에 동일한 대상: 다른 column 정보 확인후 선별 작업 진행
  • 6.
  • 8. - 정상/비정상 또는 그룹1, 2, …, n의 설비로 군집화를 위한
 parameter classification - 유사한 설비끼리의 그룹 
 = 유사한 파라미터 값을 공유하는 설비끼리의 그룹 - 설비간 특정 파라미터가 특정 값으로 몰릴수록 
 설비 동작에 중요한 파라미터라고 판단
  • 9. Criteria - 설비에 입력되는 파라미터를 - Constant: 설비별로 같아야하는 파라미터 - Group: 기준 이상의 대수만큼 값이 같아야하는 파라미터 - Random: 사실상 값이 제각각이여도 상관없는 파라미터
  • 11. - 보통 분류(Classification)은 분류 결과(label)를 바탕으로 학습 한 뒤 분류하는 supervised learning(지도학습) - 주어진 파라미터를 classification할 학습된 모델도, label도 없 는 상황 - ‘유사한 값의 분포’를 바탕으로 군집화한 뒤 classification - KDE(Kernel Density Estimation)
  • 12. Kernel Density Estimation - 밀도 추정: 관측된 데이터들의 분포로부터 원래 변수의 확률 분포 특성을 추정 - 커널 밀도 추정: 커널 함수를 이용한 밀도 추정 방식 - 커널: 원점을 중심으로 대칭이면서 적분값이 1인 non- negative 함수(예: Gaussian) - Bandwidth: 커널의 첨도를 결정
  • 13.
  • 15. 적절한 bandwidth 결정
 (Grid search cross validation)
  • 16. ['{"1": 61.47, "2": 61.47, "3": 61.47, "4": 61.47, "5": 61.47, "6": 61.47, "7": 61.47, "8": 61.47, "9": 61.47, "10": 61.47, "11": 61.47, "12": 61.47, "13": 61.47, "14": 61.47, "15": 61.47, "16": 61.47, "17": 61.47, "18": 61.47, "19": 61.47, "20": 61.47, "21": 61.47, "22": 61.47, "23": 61.47, "24": 61.47, "25": 61.47}'] Costant
  • 17. ['{"1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true, "16": true, "17": true, "22": true, "23": true, "24": true, "25": true}', '{"18": false}', '{"19": false}', '{"20": false}', '{"21": false}'] Constant
  • 18. ['{"18": 61.47}', '{"19": 61.47}', '{"20": 61.47}', '{"21": 61.47}', '{"5": 121.47}', '{"23": 121.47}', '{"24": 121.47}', '{"25": 121.47}', '{"1": 201.47, "2": 201.47, "3": 201.47, "4": 201.47, "6": 201.47, "7": 201.47, "8": 201.47, "9": 201.47, "10": 201.47, "11": 201.47, "12": 201.47, "13": 201.47, "14": 201.47, "15": 201.47, "16": 201.47, "17": 201.47, "22": 201.47}'] Group
  • 19. ['{"7": 1505840052}', '{"18": 1505839918}', '{"2": 1505841424}', '{"21": 1505841765}', '{"20": 1505842152}', '{"24": 1505842059}', '{"10": 1505842439}', '{"3": 1505842656}', '{"11": 1505842737}', '{"12": 1505842662}', '{"17": 1505842657}', '{"1": 1505842900}', '{"9": 1505843166}', '{"16": 1505843221}', '{"25": 1505843086}', '{"5": 1505843427}', '{"22": 1505843375}', '{"4": 1505843734}', '{"8": 1505843640}', '{"19": 1505843658}', '{"14": 1505843804}', '{"15": 1505843866}', '{"23": 1505843951}', '{"6": 1505844217}', '{"13": 1505844747}'] Radnom
  • 20. - 설비에 입력되는 파라미터의 KDE의 결과, - Constant: 한 그룹이 전체의 70%를 초과하는 경우 - Group: 한 그룹이 전체의 30% 이상인 경우 - Random: 어떠한 그룹도 전체의 30%이상을 차지하지 못하 는 경우 - 파라미터별로 값이 ‘같아야’할 필요는 없음
  • 22. 100% 30% 30% 30% 70% Random Group Constant else else서로 같은 값들이 존재할 수 있는데?
  • 23. else 19, 19, 19, 19, 4, 5, 6, 4
  • 24. else 19, 19, 19, 19, 4, 5, 6, 4 모두 다른 19 모두 다른 4
  • 25. else 19, 19, 19, 19, 4, 5, 6, 4 모두 다른 19 모두 다른 4 설비 동작 특성에 영향을 주는 ‘집단’으로 보지 않기 위함
  • 26. [ { "1": true, "2": true, "3": true, "4": true, "5": true, "6": true, "7": true, "8": true, "9": true, "10": true, "11": true, "12": true, "13": true, "14": true, "15": true, "16": true, "17": true, "22": true, "23": true, "24": true, "25": true }, { "18": false }, { "19": false }, { "20": false }, { “21": false } ] constant
  • 27. [ { "3": 14, "4": 14, "5": 14, "9": 14, "10": 14, "13": 14, "18": 14, "19": 14, "20": 14, "21": 14 }, { "1": 26, "2": 26, "8": 26, "11": 26, "12": 26, "14": 26, "15": 26, "16": 26, "17": 26 } ] group
  • 30. Theory - 비지도 학습(Unsupervised learning) - 데이터 샘플간의 유사도/비유사도를 바탕으로 군집화 - 계층적 클러스터링 / 비계층적 클러스터링
  • 31. - 계층적 클러스터링 - 굳이 몇 개의 군집(k)으로 나눠야하는지 설정해줄 필요가 없음 - 데이터 샘플간 거리에 대한 정의가 필요함 - 이를 위해 데이터의 성격에 대해 사전 정보가 필요 - 덴드로그램 - 비계층적 클러스터링 - 데이터에 대한 사전 정보가 필요하지 않으며 일반적으로 빠르게 결과를 확인해 볼 수 있음 - 몇 개의 군집(k)으로 나눠야 할지 여러번의 클러스터링 수행과 결과 분석이 필요함 - k 클러스터링
  • 32. - 파라미터 타입, 내용이 다양하고 어떤 정보를 나타내는지 사전 정 보가 없음 - 데이터 샘플간 거리를 단순히 유클리드 거리로 적용할 수 없는 자 료형 또는 파라미터 특수성 존재(범주형) - 비계층적 클러스터링 수행
  • 34. Numerical parameter - Dimension reduce
 다차원 데이터라면 어느 수준까지 차원 압축을 해야하는가 - Normalization
 정규화를 진행해도 되는가 - Imputation
 비어있는 값을 어떻게 처리해줄 것인가
  • 35. Categorical parameter - Distance crieria: 거리를 어떻게 정의할 것인가 - Hierarchical category: 범주의 계층이 다른 두 파라미터를 단순 비교해도 적절한가 - Verification: 무엇보다 파라미터에 대한 정보를 정확히 식별할 수 없다면 
 처리 결과가 효용성을 갖는가?
  • 36. Constant or Group 같은 집단으로 묶인 ‘유사한 값들’ 동일한 카테고리 (더이상 numerical value가 클러스터링에 영향을 주지 않는다고 보는 관점)
  • 37. 5656: [‘{“9": [13.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"10": [16.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"22": [13.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"2": [5.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "3": [3.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "4": [3.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "7": [7.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "11": [6.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "12": [3.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "14": [1.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "15": [4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "16": [6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "17": [3.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "24": [1.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"1": [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "5": [-3.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "6": [-2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "13": [-1.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "18": [-1.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "19": [-1.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "20": [-5.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "23": [-5.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "25": [-1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"8": [-32.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}'] 5655: [‘{“9": [15.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"10": [11.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"22": [14.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"2": [8.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "3": [3.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "4": [4.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "7": [6.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "11": [6.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "12": [3.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "15": [3.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "16": [5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "23": [3.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"1": [-3.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "5": [-2.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "6": [-2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "13": [-2.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "14": [-3.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "17": [-2.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "18": [-3.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "19": [-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "20": [-6.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "24": [-3.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "25": [-3.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}', '{"8": [-31.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}']
  • 38. 5656: [ {9}, {10}, {22}, {2, 3, 4, 7, 11, 12, 14, 15, 16, 17, 24}, {1, 5, 6, 13, 18, 19, 20, 23, 25}, {8} ] 5655: [ {9}, {10}, {22}, {2, 3, 4, 7, 11, 12, 15, 16, 23}, {1, 5, 6, 13, 14, 17, 18, 19, 20, 24, 25}, {8} ]
  • 39. 5656: [1, 2, 2, 2, 1, 1, 2, 4, 5, 6, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, None, 7, 1, 2, 1] 5655: [1, 2, 2, 2, 1, 1, 2, 4, 5, 6, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, None, 7, 2, 1, 1]
  • 40. Encoding - Constant: 0으로 표시 - Group: 그룹 크기가 큰 순서대로 1, 2, 3으로 표시 - Random 또는 Constant, Group에 포함되지 못한 설비(other): 4부터 increment
  • 41. Imputation - 대안1: None을 제외한 값과 유사한 파라미터로부터 값을 imputing - 대안2: Random과 동일 기준 적용 - 대안2 선택: 값이 있지만(심지어 같은 값들이 여러개 있지만) Random으로 분류된 값들이 상대적으로 불공정해짐
  • 42. 75636 3015
 (constant: 1245, group: 1770) # of features select unique parameter 약 34만개 classify only Constant and Group using KDE 99.12% 감소
  • 43. K-modes - categorical data에 적합한 비계층 클러스터링 기법 - https://github.com/nicodv/kmodes 패키지 사용 - 일반적으로 사용하는 유클리드 거리가 아닌 matching dissimilarity를 거리 측정 기준으로 사용하고 있음
  • 44. dissimilarity matching dissim X = [1 1 5] 
 d(C1, X) = 1 = d(C2, X)
  • 47. Ng dissim Michael K. Ng X = [1 1 5] 
 d(C1, X) = 1 d(C2, X) = 5/3
  • 48. Select K - Elbow plot
  • 49. Validate Clustering - 클러스터링 평가 방법으로 Silhouette coefficient 사용 - 같은 클러스터끼리 뭉쳐있을 수록(minimize a[i]) - 가장 가까운 클러스터와의 거리는 멀수록(maximize b[i]) - Silhouette coefficent 값이 1에 가까울수록 적합
  • 52. Discussion - Silhouette 결과 분석 - 전체 실루엣 평균값 대비 가장 큰 클러스터의 설비들은 더 뭉쳐 있는 것을 확인함 - 하지만 실루엣 값이 0.1에도 못 미치는 수준: 사실상 다른 클러 스터에 속했더라도 큰 차이가 없 을것 - 실제로 클러스터를 결정하기까 지 iteration에 따른 cost의 감 소량이 굉장히 미미함
  • 53. - 원인1: 너무 적은 data sample과 너무 많은 data feature - 원인2: classification 단계의 기준 설정의 모호성 - 원인3: 데이터의 성격을 알 수 없는 근본적 문제(기준이 없음) - 원인4: ng dissimilarity
  • 54. Why ng dissim can make result worse? - 클러스터 중심(centroid)와 같을 때, 비중에 따라 비유사도를 ‘덜’ 적용하는 방식 - 2로 encoding된 경우(group)와, 4로 encoding된 경우(others) 모두 centorid와 다르다면 같은 비유사도 1을 적용받게됨 - 게다가 데이터 샘플보다 feature가 월등히 많으므로 비유사도 1을 기본적으로 적용받을 확률이 높아짐 - 따라서 실제 각 데이터 포인트와 centroid간 거리 차이는 매우 미미한 수준
  • 55. Conclusion - 다차원 다타입의 데이터의 feature를 단순 차원 축소(PCA)가 아 닌 classification과 encoding을 통해 0.88% 수준으로 압축 - 데이터의 특성을 알 수 없는 상황에서 사용하기 어려운 것들(정 규화, data type 분류 등)을 적용하지 않고도 적용할 수 있는 encoding scheme 방식 제시 - k mode와 같은 categorical data에 대한 클러스터링 및 적합성 측정 방식 제시