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의 코드 페이지 를 통해 배울 수 있는 오염 및 기타 여러 변수를 수정하여 해당 알고리즘을 더욱 최적화할 수 있습니다 . 

모두 제일 좋다,

Leave a Comment

SharePoint의 계산된 열 | 개요

SharePoint의 계산된 열 | 개요

SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.

Power Apps에서 변수 만들기: 컬렉션 작업

Power Apps에서 변수 만들기: 컬렉션 작업

컬렉션 변수를 사용하여 Power Apps에서 변수 만드는 방법 및 유용한 팁에 대해 알아보세요.

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거가 수행할 수 있는 작업과 Microsoft Power Automate의 예를 사용하여 이를 사용하는 방법을 알아보고 이해하십시오!

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름 및 용도에 대해 자세히 알아보세요. 다양한 작업 및 시나리오에 사용할 수 있는 다양한 유형의 흐름에 대해 설명합니다.

흐름에서 Power Automate 종료 작업 제어

흐름에서 Power Automate 종료 작업 제어

조건이 충족되지 않는 경우 흐름에서 작업을 종료하는 Power Automate 종료 작업 컨트롤을 올바르게 사용하는 방법을 알아봅니다.

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 실행 기능에 대해 자세히 알아보고 자신의 앱에서 바로 웹사이트, 전화, 이메일 및 기타 앱과 같은 기타 서비스를 실행하십시오.

Power Automate의 HTTP 요청 – 소개

Power Automate의 HTTP 요청 – 소개

타사 애플리케이션 통합과 관련하여 Power Automate의 HTTP 요청이 작동하는 방식을 배우고 이해합니다.

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop에서 Send Mouse Click을 사용하는 방법을 알아보고 이것이 어떤 이점을 제공하고 흐름 성능을 개선하는지 알아보십시오.

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수의 작동 방식, 다양한 종류, 각 변수가 앱에 기여할 수 있는 사항을 알아보세요.

Power Automate에서 실행할 데스크톱 흐름 예약

Power Automate에서 실행할 데스크톱 흐름 예약

이 자습서에서는 Power Automate를 사용하여 웹 또는 데스크톱에서 작업을 자동화하는 방법을 알려줍니다. 데스크톱 흐름 예약에 대한 포괄적인 가이드를 제공합니다.