Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이상값 탐지는 기계 학습 분야에서 중요한 작업입니다. 데이터 세트의 일반적인 추세에서 벗어난 비정상적인 관찰 또는 데이터 포인트를 식별하는 데 사용됩니다. 이상치 탐지를 위한 효과적인 알고리즘 중 하나는 Isolation Forest 알고리즘입니다. 

오늘 블로그에서는 Isolation Forest 알고리즘의 기본 사항을 다루고 이를 사용하여 Python을 사용하여 데이터 세트에서 이상값을 감지하는 방법을 시연합니다 . 이 블로그 하단에서 이 튜토리얼의 전체 비디오를 볼 수 있습니다 .

목차

Isolation Forest 알고리즘 대 박스 플롯 방법 

아래에 이상값 감지를 위한 두 개의 시각적 개체가 나와 있습니다. Outlier Detection을 위해 Isolation Forest ML 모델을 사용할 때와 비교하여  사용할 때 시각적 표현의 중요한 차이점에 주목하십시오 .

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

Isolation Forest ML 모델에서 IS Anomaly Detection 알고리즘이 감지한 이상값의 비율은 32.56%입니다. 같은 알고리즘을 사용하면 데이터의 나머지 67.44%가 정상 범위에 속해 상당히 민감합니다. 우리의 목표는 Python을 사용하여 이 감도를 미세 조정하는 것입니다 . 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

전통적인 이상값 탐지 방법

이상값을 찾는 전통적인 방법은 박스 플롯 방법을 사용하는 것입니다 . 이 방법에서는 IQR을 사용하여 데이터의 예상 범위를 벗어나는 것을 찾습니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이 예에서 수염 위의 이 단일 지점은 이상치입니다.

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이 시각적 그래프를 파이 차트로 변환하면 전체 데이터의  2.33% 에 해당하는 하나의 특정 이상값을 얻게 됩니다 .

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이 블로그에서는 Isolation Forest ML 방법을 사용하는 방법을 배우고 기존 방법과 일치하도록 미세 조정하고 감도를 높이거나 낮춥니다.

격리 포레스트 알고리즘을 위한 데이터 세트

LuckyTemplates에서 데이터 세트를 엽니다. 그런 다음 데이터 변환을 클릭합니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이 튜토리얼의 데이터 세트가 표시됩니다. 여기에는 Date , number of Users , IndexIsolation Forest Outlier 가 포함되며 정상 범위에 대한 출력은 1이고 이상값에 대한 출력은 -1입니다  .

또한 Traditional Outlier 에 대한 열과 Isolation Forest Outlier를 반영하는  IS Anomaly Detection 이라는 제목의 조건부 열이 있습니다 .

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

두 번째 쿼리는 모든 것을 결합하는 방법을 배울 데이터 프레임을 보여줍니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

파이썬 코드

속성 창 에서 실행 중인 두 개의 Python 스크립트를 볼 수 있습니다 . 이러한 Python 스크립트 중 하나를 사용하여 Isolation Forest 출력을 생성 하고 다른 하나를 사용하여 기존 이상값을 생성합니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

격리 포레스트 알고리즘 Python 코드

Python 스크립트 실행을 클릭하여 코드를 봅니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이 Python 코드에서는 pandas를 pd로 가져오고 Isolation Forest 라는 것을 사용합니다 . 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

Isolation Forest는 트리 구조를 기반으로 결정을 내린 다음 이상값인지 여부를 결정하는 트리 기반 모델입니다. 특정 이상값을 찾는 데 두 가지 다른 방법을 사용하기 때문에  이를 앙상블 모델 이라고 합니다.

또한 기본적으로 데이터 세트를 보유하는 dataset 변수를 df 로 바꿉니다 . 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

데이터 세트가 주어지면 아래에 강조 표시된 두 줄의 코드가 필요하지 않으므로 해당 줄을 삭제할 수 있습니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

우리가 하는 일은 모델을 인스턴스화하는 것입니다.

모델을 IsolationForest 로 저장 하고 모델이 사용자와 함께 데이터를 학습하도록 합니다 . 그런 다음, 학습한 모든 데이터를 다시 검토하고 어떤 데이터가 이상값이어야 하는지 예측하는  Anomaly Detection 이라는 새 열을 만듭니다 .

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이 기능의 경우 오염 에 대한 기본값은 0.5 로 설정됩니다 . 따라서 현재 매우 민감하며 많은 이상값을 찾을 것입니다. 이것이 이전의 원형 차트에서 32.56%로 매우 높은 범위의 이상값을 갖는 이유입니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

덜 민감하게 만들기 위해 IsolationForest 함수 에 오염 = .1을 추가할 수 있습니다 .

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

마지막으로 색인을 재설정하고 확인을 클릭합니다.

결과에 요약 테이블이 표시됩니다. 적용된 단계 창 으로 이동하여 df를 클릭합니다 .

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

출력에서 Anomaly Detection 열 아래에서 이상값을 찾을 수 있습니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

또한 기존의 이상치 옆에서 어떻게 수행되는지 확인하고 싶습니다. 

전통적인 아웃라이어 파이썬 코드

이 예제에서는 Run Python script1인 또 다른 Python 스크립트를 실행할 것입니다 .

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이 코드는 제1사분위수와 제3사분위수를 사용하여 이상치 함수를 추가합니다. q3에서 q1을 빼면 사 분위수 범위(IQR)를 얻습니다 . 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

다음 두 줄은 이상값에 대한 조건을 설정합니다. 첫 번째 줄은 1.5 * iqr 미만은 음수 또는 더 낮은 이상치로 간주된다고 말합니다. 이것은 또한 우리가 전통적인 방법으로 이상값을 찾는 방법이기도 합니다.

우리는 또한 데이터에서 가장 높은 지점으로 하나의 이상치가 있다는 것을 알고 있습니다. 이를 설명하기 위해 두 번째 줄은 q3 + 1.5 * iqr 보다 높은 데이터 포인트 도 이상값으로 간주한다고 명시합니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

해당 데이터 세트를 반환하고 outliers(df, 'Users') 함수를 사용합니다 . 그런 다음 확인을 클릭합니다.

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이전에 가지고 있던 것과 유사한 요약 테이블이 나타납니다. 

Applied Steps 창 으로 이동하여 Changed Type1 을 클릭하면 Traditional OutlierAnomaly Detection 열이 나란히 표시 되며 후자는 1과 -1을 사용하여 이상값을 나타내지만 그렇지 않습니다.

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

그러나 Python에서 날짜를 사용하면 엉망으로 나타날 수 있습니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

우리가 할 수 있는 일은 Add Column 에서 Index를 사용하여 추가 열을 만드는 것입니다 .

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

그런 다음 Merge 를 사용하여 인덱스를 이전 열에 추가하여 원래 열/데이터 세트의 모든 정보를 보존할 수 있습니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

모든 것이 함께 있으면 코드를 실행하고 시각적 개체를 업데이트할 수 있습니다. 이상값의 오염도를 0.5에서 0.1로 변경했기 때문에 그래프의 이 부분이 상당히 줄어드는 것을 볼 수 있습니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

시각적 개체로 돌아가서 변경 사항 적용을 클릭합니다. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

이상 탐지가 데이터의 32.56%에서 11.63%로 어떻게 줄었는지 확인하십시오. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

결과에서 알 수 있듯이 이는 이상값 감지를 최적화하는 좋은 방법입니다. 

또한 사람들이 전통적인 방법을 사용할 때 1.5보다 낮은 값을 사용할 수 있지만 그럼에도 불구하고 1.5 x IQR 이 전통적인 방법임을 기억하십시오. 

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘

Python에서 이상값 감지를 위한 격리 포레스트 알고리즘


LuckyTemplates에서 이상값 결과 감지 및 표시
LuckyTemplates에서 동적 이상값 트리거 포인트 생성
LuckyTemplates 이상 감지 기능: 작동 방식

결론

Isolation Forest 알고리즘을 사용하면 데이터 세트에서 비정상적인 관찰을 쉽게 식별하고 제외할 수 있으므로 분석의 정확도가 향상됩니다. 이 자습서에서는 Python을 사용하여 이상값 탐지를 위해 Isolation Forest 알고리즘을 사용하는 방법에 대한 단계별 가이드를 제공했으며, 이는 자신의 프로젝트에서 이를 구현하는 데 도움이 될 것입니다.

우리가 한 것은 Python 코드를 사용하여 이상을 찾는 매우 쉬운 방법이었습니다 . Python의 코드 페이지 를 통해 배울 수 있는 오염 및 기타 여러 변수를 수정하여 해당 알고리즘을 더욱 최적화할 수 있습니다 . 

모두 제일 좋다,


파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

R에서 RDS 파일을 저장하고 로드하는 방법

R에서 RDS 파일을 저장하고 로드하는 방법

R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.

LuckyTemplates의 컨텍스트 필터링 소개

LuckyTemplates의 컨텍스트 필터링 소개

이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.

LuckyTemplates를 사용한 비즈니스 보고

LuckyTemplates를 사용한 비즈니스 보고

지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것