기계 학습의 품질 메트릭. 랭킹 트레이닝

각 목록 내의 요소에 대해. 부분 순서는 일반적으로 각 항목에 대한 점수를 지정하여 제공됩니다(예: "관련됨" 또는 "관련 없음", 두 개 이상의 등급이 가능함). 순위 모델의 목표는 훈련 세트의 순위가 새 데이터에 맞는 방식으로 (어떤 의미에서) 가장 근사하고 일반화하는 것입니다.

순위 학습은 아직 젊고 빠르게 발전하는 연구 분야로, 2000년대에 정보 검색 방법을 적용하는 분야에 대한 관심이 등장했습니다. 기계 학습순위 문제를 위해.

백과사전 YouTube

  • 1 / 5

    순위 모델을 교육하는 동안 및 작업 중에 각 문서 요청 쌍은 문서, 쿼리 및 해당 관계의 속성을 특성화하는 순위 기능(순위 요소 또는 신호라고도 함)의 숫자 벡터로 변환됩니다. 이 표시는 세 그룹으로 나눌 수 있습니다.

    다음은 현장에서 잘 알려진 LETOR 데이터 세트에 사용된 순위 기능의 몇 가지 예입니다.

    • 측정값 TF, TF-IDF, BM25 및 다양한 문서 영역(제목, URL, 본문, 링크 텍스트)의 요청에 일치하는 언어 모델
    • 문서 영역의 길이 및 IDF 합계
    • PageRank 및 HITS와 같은 링크 순위 알고리즘의 다양한 변형으로 얻은 문서 순위.

    품질 측정항목 순위 지정

    동료 리뷰와 함께 샘플에 대한 순위 알고리즘의 성능을 평가하고 비교하는 몇 가지 메트릭이 있습니다. 종종 순위 모델의 매개변수는 이러한 측정항목 중 하나의 값을 최대화하는 방식으로 조정되는 경향이 있습니다.

    측정항목의 예:

    알고리즘 분류

    Microsoft Research Asia의 Tai-Yan Liu는 자신의 기사 "정보 검색을 위한 순위 지정 학습"과 주제별 컨퍼런스 연설에서 순위 지정 학습 문제를 해결하는 데 현재 사용할 수 있는 방법을 분석하고 입력에 따라 세 가지 접근 방식으로 분류를 제안했습니다. 표현 사용 데이터 및 기능 미세:

    점별 접근

    노트

    1. 타이 옌 류 (2009) 정보 검색을 위한 순위 학습, 정보 검색의 기초와 동향: Vol. 3: 3번, p. 225-331, ISBN 978-1-60198-244-5, DOI 10.1561/1500000016. WWW 2009 컨퍼런스에서 T. Lew의 연설 슬라이드가 있습니다.

    FRD를 컴파일하는 시스템 분석가의 실무에서 종종 공식화되지 않은 것들이 있습니다. 예를 들면 다음과 같은 요구 사항이 있습니다.

    • 앱이 빨라야 합니다.
    • 애플리케이션은 약간의 트래픽을 소비해야 합니다.
    • 비디오 자료는 고품질이어야 합니다.

    FRD에 "있는 그대로" 쓰여진 이러한 요구 사항은 나중에 문제의 엄청난 원인이 됩니다. 이러한 요구 사항을 공식화하는 것은 분석가에게 끊임없는 골칫거리입니다. 일반적으로 분석가는 두 단계로 문제를 해결합니다. 첫째, "동등한" 형식 요구 사항이 제시되고, 그런 다음 의사 소통 과정(고객, 도메인 전문가 등)에서 그러한 형식 요구 사항이 입증됩니다. 원래 요구 사항을 대체할 수 있습니다. 일반적으로 우리가 받은 요구 사항은 작동하지 않습니다. 그것은 시스템이 할 수 있어야 하는 "무엇"을 기술하는 것이 아니라 "그것을 하는 방법"을 기술합니다. 동시에 "어떻게 할 것인가"는 특정 질적 특성으로 공식화되어야합니다.

    라는 논문의 서문이었다. 시스템 분석가수학적 장치를 능숙하게 구사할 수 있어야 하며 동시에 고객에게 "수학"을 설명할 수 있어야 합니다. 이제 예를 살펴보겠습니다.

    분류 문제에 대해

    Amazon Omakase와 유사한 상황별 광고 시스템에 대한 FRD를 작성한다고 가정해 보겠습니다. 미래 시스템의 모듈 중 하나는 컨텍스트 분석기가 될 것입니다.

    분석기는 웹 페이지의 텍스트를 입력으로 받아 컨텍스트 분석을 수행합니다. 그가 이 일을 하는 방식은 우리에게 별로 관심이 없습니다. 출력에서 제품 범주 세트(이 세트는 미리 결정됨)를 얻는 것이 중요합니다. 또한 이러한 범주를 기반으로 배너, 제품 링크(예: Amazon) 등을 표시할 수 있습니다. 분석기는 여전히 우리에게 블랙박스이며, 여기에 질문(문서 텍스트 형식)을 하고 답을 얻을 수 있습니다.

    고객은 분석기가 "상황을 잘 파악하기"를 원합니다. 이 요구 사항이 의미하는 바를 공식화해야 합니다. 먼저 컨텍스트에 대해 이야기해 보겠습니다. 분석기에 의해 반환된 바로 그 범주 집합에 대한 것입니다. 문서(웹 페이지)가 미리 결정된 수의 클래스 집합에 매핑되는 분류 문제로 이것을 정의할 수 있습니다. 우리의 경우 클래스는 제품 카테고리입니다. 분류 작업은 워드 프로세싱(예: 스팸 필터)에서 매우 일반적입니다.

    평가 지표

    분류 문제에 적용 가능한 평가 메트릭을 고려하십시오. 우리가 알고 있다고 하자 옳은일부 문서에 대한 범주. 다음과 같이 가상 분석기의 답변을 그룹화해 보겠습니다.

    • 참 긍정( 참 긍정) - 출력에서 ​​볼 것으로 예상하고 얻은 범주
    • 가양성( 가양성) — 출력에 없어야 하는 범주와 분석기가 출력에 잘못 반환한 범주
    • 거짓 부정( 위음성) — 볼 것으로 예상했지만 분석기가 결정하지 않은 범주
    • 트루 네거티브( 진정한 부정)는 출력에 있어서는 안 되는 범주이며 분석기의 출력에도 정확하게 존재하지 않습니다.

    정답을 알고 있는 일련의 문서(웹 페이지)를 테스트 세트라고 합시다. 카테고리별 조회수를 계산하면 커플문서 - 범주), 답변 분포의 표준 테이블을 얻습니다.

    표의 왼쪽 열은 문서와 범주의 "올바른" 조합(출력에서 예상되는 존재)이고 오른쪽 열은 올바르지 않습니다. 표의 맨 윗줄은 분류기의 긍정적인(긍정적인) 답변이고, 맨 아래 줄은 부정적인 것입니다(우리의 경우 답변에 범주가 없음). 모든 쌍의 수가 문서 - 범주같음 N, 그것은 쉽게 볼 수 있습니다

    일반적으로 이제 고객의 요구 사항을 양식(오답의 수는 0)으로 작성하고 거기서 멈출 수 있습니다. 그러나 이러한 시스템은 실제로 존재하지 않으며 물론 분석기는 테스트 샘플과 관련된 오류로 작동합니다. 정확도 측정항목은 오류 비율을 이해하는 데 도움이 됩니다.

    분자에는 행렬의 대각선이 표시됩니다. 정답의 총 수는 총 질문 수로 나뉩니다. 예를 들어, 가능한 10개 중 9개의 정답을 제공한 분석기의 정확도는 90%입니다.

    미터법 F 1

    정확도 메트릭을 적용할 수 없다는 간단한 예는 신발 브랜드를 식별하는 작업입니다. 텍스트에서 신발 브랜드에 대한 언급 수를 계산하려고 한다고 가정해 보겠습니다. 주어진 엔티티가 신발 브랜드(Timberland, Columbia, Ted Baker, Ralph Lauren 등)인지 여부를 결정하는 것이 목표인 분류 문제를 고려하십시오. 즉, 텍스트의 엔터티를 A - 신발 브랜드, B - 기타의 두 가지 클래스로 나눕니다.

    이제 단순히 클래스 B(다른 모든 것)를 반환하는 퇴화 분류기를 고려하십시오. 어느엔터티. 이 분류기의 경우 참 긍정 응답의 수는 0이 됩니다. 일반적으로 주제에 대해 생각해 보겠습니다. 하지만 인터넷에서 텍스트를 읽을 때 신발 브랜드를 얼마나 자주 접하게 될까요? 이상하게도 일반적인 경우 텍스트 단어의 99.9999%가 신발 브랜드가 아닙니다. 표본 100,000개에 대한 응답 분포 행렬을 작성해 보겠습니다.

    99990 / 100000 = 99.99%와 같은 정확도를 계산해 보겠습니다! 그래서 우리는 본질적으로 아무것도 하지 않지만 정답의 비율이 높은 분류기를 쉽게 만들었습니다. 동시에 우리는 신발 브랜드를 정의하는 문제를 해결하지 못한 것이 분명합니다. 사실 우리 텍스트의 올바른 개체는 분류에 의미가 없는 다른 단어로 강하게 "희석"되어 있습니다. 이 예를 보면 다른 메트릭을 사용하려는 것이 이해할 수 있습니다. 예를 들어, 값 분명히 "쓰레기" - 정답을 의미하는 것 같지만 성장 결과적으로 기여를 강력하게 "억제"합니다. 티피(이것은 우리에게 중요합니다) 정확도 공식에.

    정밀도(P, 정밀도) 측정을 다음과 같이 정의합니다.

    쉽게 알 수 있듯이 정확도 측정은 분류기에서 받은 긍정적인 답변이 얼마나 많은지를 나타냅니다. 정확도가 높을수록 잘못된 히트 수가 줄어듭니다.

    그러나 정확도 측정은 분류기가 모든 정답을 반환했는지 여부에 대한 아이디어를 제공하지 않습니다. 이를 위해 소위 완전성 측정(R, 회상)이 있습니다.

    완전성의 측정은 예상되는 답변에서 가능한 한 많은 긍정적인 답변을 "추측"하는 분류기의 능력을 특징으로 합니다. 가양성은 이 메트릭에 어떤 식으로든 영향을 미치지 않습니다.

    Precision 및 Recall은 분류기에 대해 "다양한 각도에서" 상당히 철저한 설명을 제공합니다. 일반적으로 이러한 시스템을 구축할 때 이 두 가지 지표 사이에서 지속적으로 균형을 유지해야 합니다. 분류기를 보다 "낙관적"으로 만들어 재현율을 높이려고 하면 오탐지가 증가하여 정밀도가 떨어집니다. 예를 들어 결과를 더 엄격하게 필터링하여 분류기를 더 "비관적"으로 만든 다음 정밀도를 높이면 분류기를 조정하면 특정 수의 정답이 거부되어 재현율이 동시에 저하됩니다. 따라서 분류기를 특성화하기 위해 소위 F 1 메트릭이라는 하나의 값을 사용하는 것이 편리합니다.

    사실, 이것은 단순히 P와 R의 조화 평균입니다. P = R = 100%인 경우 F 1 메트릭은 최대값 1(100%)에 도달합니다.
    (우리의 퇴화 분류기 F 1 = 0에 대해 추정하는 것은 쉽습니다). F 1 값은 이러한 시스템에 대한 가장 일반적인 메트릭 중 하나입니다. FRD에서 분석기의 임계값 품질을 공식화하는 데 사용할 것은 F 1입니다.

    분류 문제에 대한 F 1 을 계산하는 데에는 두 가지 주요 접근 방식이 있습니다.

    • 합계 F 1: 모든 클래스에 대한 결과가 하나의 단일 테이블에 요약되어 있으며 이에 따라 F 1 메트릭이 계산됩니다.
    • 미디엄 F 1: 각 클래스에 대해 자체 분할 행렬과 자체 F 1 값을 구성한 다음 모든 클래스에 대해 간단한 산술 평균을 취합니다.

    두 번째 방법이 필요한 이유는 무엇입니까? 사실은 다양한 클래스의 표본 크기가 크게 다를 수 있다는 것입니다. 일부 클래스의 경우 예제가 거의 없을 수도 있고 일부 클래스의 경우 많은 예제가 있을 수도 있습니다. 결과적으로 하나의 "큰" 클래스의 메트릭이 하나의 공통 테이블에 요약되어 다른 모든 클래스의 메트릭이 "막히게" 됩니다. 모든 클래스에 대해 시스템 품질을 다소 균일하게 평가하려는 상황에서는 두 번째 옵션이 더 좋습니다.

    훈련 및 테스트 세트

    위에서 우리는 모든 답을 알고 있는 단일 샘플에 대한 분류를 고려했습니다. 이것을 우리가 설명하려는 컨텍스트 분석기에 적용하면 상황이 조금 더 복잡해집니다.

    우선 상품 카테고리를 수정해야 합니다. F 1 의 일부 값을 보장하고 클래스 집합이 무한정 확장될 수 있는 상황은 사실상 막다른 골목입니다. 따라서 범주 집합이 고정되어 있음을 추가로 규정합니다.

    사전에 알려진 주어진 샘플에 대한 F 1 값을 계산합니다. 이 샘플은 일반적으로 가르치는. 그러나 우리는 우리가 알지 못하는 데이터에 대해 분류기가 어떻게 작동할지 모릅니다. 이러한 목적을 위해 소위 테스트 샘플, 때때로 황금 세트. 훈련 세트와 테스트 세트의 차이는 순전히 추측에 불과합니다. 결국 몇 가지 예제 세트가 있으면 원하는 대로 훈련 세트와 테스트 세트로 나눌 수 있습니다. 그러나 자가 학습 시스템의 경우 올바른 훈련 샘플의 형성이 매우 중요합니다. 잘못 선택된 예는 시스템 품질에 큰 영향을 줄 수 있습니다.

    전형적인 상황은 분류기가 훈련 세트에서 좋은 결과를 보여주고 테스트 세트에서 완전히 실패하는 경우입니다. 분류 알고리즘이 기계 학습을 기반으로 하는 경우(즉, 훈련 세트에 따라 다름) 더 복잡한 "부동" 체계를 사용하여 품질을 평가할 수 있습니다. 이를 위해 우리는 우리가 가진 모든 예를 10개의 부분으로 나눕니다. 첫 번째 부분을 제거하고 알고리즘을 훈련하는 데 사용합니다. 나머지 90%는 테스트 샘플로 사용되며 F 1 값을 계산합니다. 그런 다음 두 번째 부분을 제거하고 훈련 부분으로 사용합니다. 우리는 F 1 의 또 다른 값을 얻습니다. 결과적으로 우리는 10개의 F 1 값을 얻었고 이제 최종 결과가 될 산술 평균 값을 취합니다. 다시 말하지만 이것은 방법입니다(일명 교차 검증) 기계 학습 기반 알고리즘에만 의미가 있습니다.

    FRD 작성으로 돌아가서 우리의 상황이 훨씬 더 나쁘다는 것을 알 수 있습니다. 우리는 잠재적으로 무제한의 입력 세트(인터넷의 모든 웹 페이지)를 가지고 있으며 페이지의 컨텍스트를 평가할 방법이 없습니다. 인간 참여. 따라서 샘플은 수동으로만 구성할 수 있으며 컴파일러의 변덕에 크게 의존합니다(페이지를 범주로 분류할지 여부는 사람이 결정합니다). 우리에게 알려진 예에서 측정값 F 1 을 추정할 수 있지만 어떤 식으로든 F 1 을 찾을 수는 없습니다. 모든 웹 페이지에 대해. 따라서 잠재적으로 무제한 데이터 세트(예: 무수히 많은 웹 페이지)의 경우 때때로 "포케 방법"(감독되지 않음)이 사용됩니다. 이를 위해 특정 수의 예제(페이지)가 무작위로 선택되고 이에 따라 운영자(사람)가 올바른 범주(클래스) 집합을 구성합니다. 그런 다음 이러한 선택된 예에서 분류기를 테스트할 수 있습니다. 또한 우리가 선택한 예가 다음과 같다고 가정합니다. 전형적인, 우리는 알고리즘의 정확도(정밀도)를 근사할 수 있습니다. 동시에 Recall을 평가할 수 없으므로(선택한 예제 외부에 정답이 몇 개 있는지 알 수 없음) F1도 계산할 수 없습니다.

    따라서 알고리즘이 가능한 모든 입력에서 어떻게 동작하는지 알고 싶다면 이 상황에서 평가할 수 있는 최선은 Precision의 대략적인 값입니다. 모든 사람이 미리 결정된 고정 표본을 사용하는 데 동의하면 F 1의 평균값을 계산할 수 있습니다. 이 샘플의 경우.

    결국?

    그리고 결국 우리는 다음을 수행해야 합니다.

    1. 훈련 세트를 수정하십시오. 교육 샘플은 "올바른" 컨텍스트에 대한 고객의 아이디어를 기반으로 구축됩니다.
    2. 분석기의 범주 집합을 수정합니다. 무한한 클래스 집합에 대해 F1을 계산할 수 없습니까?
    3. 요구 사항을 다음과 같이 설명합니다. 분석기는 평균 F 1 값이 80% 이상인 컨텍스트를 결정해야 합니다.(예를 들어)
    4. 고객에게 이것을 설명하십시오.

    보시다시피 그런 시스템(특히 마지막 포인트)에 대해 FRD를 작성하는 것은 쉽지 않지만 가능합니다. 임계값 F 1 에 관해서는, 이러한 경우 유사한 분류 문제에 대해 F 1 값을 구축하는 것이 가능합니다.

    UDC 519.816

    S. V. SEMENIKHIN L. A. 데니소바

    옴스크 주립 기술 대학

    랭킹을 위한 머신 러닝 방법

    URCO 메트릭에 대한 수정된 유전자 알고리즘 기반

    정보검색 결과 페이지의 문서 순위 문제, 머신러닝 순위 문제 등을 고려한다. 수정된 유전자 알고리즘을 기반으로 하는 품질 메트릭 LOCO를 사용하여 순위 함수를 최적화하는 접근 방식이 제안됩니다. 개발된 알고리즘은 LETO^의 테스트 컬렉션에 대해 연구되었으며 순위에서 기계 학습에 대한 효율성이 표시되었습니다.

    키워드: 정보 검색, 기계 학습 순위, 관련성, 최적화, 유전 알고리즘.

    1. 소개. 최신 정보 검색 시스템(IRS)에서 시스템이 작동하는 데이터의 양은 너무 커서 사용자의 검색 쿼리에 대한 응답으로 관련 문서의 순위를 지정하는 것이 핵심 작업입니다. IPS 개발의 이 단계에서 랭킹을 위한 머신러닝(ML)이 가장 큰 관심을 받고 있다. 수치적 방법(특히 기울기 방법) 또는 분석적 계산을 기반으로 하는 ML에 대한 기존 접근 방식은 정보 검색의 품질과 관련 문서의 순위를 지정하는 데 필요한 시간에 상당한 영향을 미치는 여러 가지 단점이 있습니다.

    연구 초기에는 기계 학습 순위에 대한 목록 접근 방식이 고려되었으며 대부분은 경사하강법을 사용합니다. 고려된 작업에서 ML은 검색 품질 메트릭(QM)의 최적화로 축소되지만 연속 함수로 표시되는 메트릭만 사용됩니다. 이러한 제한은 종종 최적화의 결과로 순위 함수가 이산 함수인 많은 중요한 허용 지표(DCG, nDCG, Graded Mean Reciprocal Rank 등)에 대해 더 낮은 점수를 갖는다는 사실로 이어집니다. 이 논문은 전문가 관련성 추정치를 참조 값으로 사용하여 후버 손실 함수를 최소화하기 위해 순위 학습에 유전 알고리즘(GA)을 사용할 것을 제안합니다. 이산 정보 검색 품질 메트릭의 최적화를 기반으로 하는 ML에 대한 접근 방식도 제안되었습니다.

    2. 머신러닝 순위 문제에 대한 설명. 대부분의 최신 정보 검색 시스템에서 순위 함수는 n개의 단순 순위 함수(PRF)를 기반으로 구축되며 다음과 같이 작성할 수 있습니다.

    여기서 SRF'는 문서 d 및 쿼리 d에 대한 '번째 단순 순위 함수'이고, WCi는 '번째 단순 순위 함수의 가중치 요소이며, n은 순위 시스템의 FRP 수입니다.

    순위를 매기기 위한 머신 러닝 과정에서 테스트 컬렉션 LBTOT에서 검색 문서 B와 쿼리 O의 집합이 사용되었습니다. 모든 deO 요청에 대해 각 deD 문서와 쌍이 형성됩니다. 이러한 각 쌍에 대해 IPS는 순위 지정에 사용되는 관련성 값을 결정합니다. 검색 결과. 순위의 품질을 평가하기 위해 시스템은 문서 요청 t, e)의 각 쌍에 대한 관련성 E의 참조 값이 필요합니다. 이러한 목적을 위해 전문가 관련성 평가가 사용됩니다.

    연구를 위해 순위가 N = 5개의 단순 순위 함수 SRFi(WC)l r = 1, N을 기반으로 하는 IPS가 사용되었으며, 이는 벡터 최적성 기준을 형성합니다.

    여기서 WCе (WC) - 가변 매개변수의 벡터; (SHS), (YaB)는 각각 매개변수 및 벡터 기준의 공간입니다.

    MO 순위 지정에 유전자 알고리즘을 사용하면 nDCG와 같은 개별 품질 메트릭을 최대화할 수 있습니다. 검색 엔진에서 문서 순위를 매기기 위한 nDCG 메트릭은 다음 식에 따라 결정됩니다.

    DCG@n=X2---

    RF(q, d)=XWC. ■ SRF., i=1 1 1

    여기서 grade(p)는 전문가가 결과 목록의 p 위치에 있는 문서에 할당한 평균 관련성 점수, gradee ; 1/log2(2 + p) - 문서 위치에 따른 계수(첫 번째 문서의 가중치가 더 큼).

    그런 다음 NDCG의 정규화된 버전은 다음 형식으로 작성됩니다.

    N000 @ n = RSD @ n / r,

    여기서 r은 0C의 가능한 최대 값과 동일한 정규화 계수입니다. [이메일 보호됨]에 대한 주어진 요청(즉, 이상적인 순위의 LLC와 동일).

    따라서 SFR의 메트릭을 최적화(최대화)하기 위해 목적 함수(JM)는 다음 형식으로 작성됩니다.

    3. 검색 결과 순위의 품질 메트릭. 검색 결과에서 문서의 순위를 지정할 때 품질 메트릭이 기준 역할을 합니다. 정보 검색 시스템의 품질을 평가하기 위해 일반적으로 허용되는 메트릭 목록에서 정보 검색의 정확성, 관련성 및 완전성을 평가하는 세 가지 주요 항목이 선택되었습니다.

    1. 정보검색의 정확성 기준

    여기서 은 발견된 관련 문서의 수이고, b는 관련성이 있는 것으로 잘못 식별된 문서의 수입니다.

    2. 정보 검색의 관련성을 평가하는 기준 Bpref는 R 관련 문서로 작업을 처리하는 데 사용되며 공식에 의해 계산됩니다.

    Bpref = - ^ (1 - Non Re ¡Before(r)/R). (4)

    여기에서 r은 알려진 관련 문서를 나타내고 NonRelBefore(r)는 r보다 높은 순위를 가진 알려진 관련 없는 문서의 수입니다(실행에서 처음 R 평가된 관련 없는 문서만 계산에 고려됨).

    3. 검색결과의 완전성 기준

    r = a / (a ​​+ c),

    여기서 는 발견된 관련 문서의 수이고, c는 발견되지 않은 관련 문서의 수입니다.

    4. 컬렉션을 테스트합니다. 기계 학습 작업에서 순위를 지정하려면 전문가가 결정한 해당 관련성 점수가 포함된 일련의 문서 및 쿼리가 필요합니다. 이 데이터는 순위 기능의 기계 학습 및 품질 평가에 사용됩니다.

    시스템에 의한 검색 결과의 순위. ML 프로세스에서 테스트 컬렉션은 훈련 세트로 사용되므로 결과에 상당한 영향을 미칩니다. LETOR 문서 및 쿼리의 테스트 모음이 연구에 사용되었습니다. 이 컬렉션은 Microsoft Research의 정보 검색 연구에 사용됩니다. 테이블에서. 1은 LETOR 테스트 컬렉션의 특성을 보여줍니다.

    5. 수정된 유전자 알고리즘. 순위 지정을 위해 기계 학습에서 유전 알고리즘을 사용하려면 각 유전자가 비트, 숫자 또는 다른 개체가 될 수 있는 벡터(유전자형)로 솔루션이 인코딩되는 방식으로 문제를 공식화해야 합니다. 이 경우, 유전자형은 각각의 순위 인자에 대한 가중치의 벡터로 표현된다. 유전자 알고리즘의 실행을 멈추기 위한 조건은 진화에 할당된 세대 수나 시간을 소모하여 최적의 솔루션을 찾는 것입니다.

    GA는 전역 극한값 영역을 찾는 데 가장 효율적이지만 이 영역에서 극소값을 찾아야 하는 경우 속도가 느릴 수 있습니다. 이러한 단점을 피하기 위해 제안된 방법은 기본 GA를 사용하여 전역 최적 영역을 찾은 후 로컬(빠른) 최적화 알고리즘으로 전환하는 수정된 유전자 알고리즘(MGA)을 만드는 것입니다. 본 논문에서 제안하는 MGA는 기존의 GA와 Nelder-Mead 방법(단순 알고리즘)을 기반으로 하는 하이브리드 방법이다. 일반적으로 사용되는 비선형 최적화 알고리즘인 Nelder-Mead 방법은 다차원 공간에서 목적 함수의 최소값을 찾는 수치적 방법입니다. 본 논문에서 제안하는 Hybrid MGA 알고리즘은 GA 정지 조건을 만족한 후 Nelder-Mead 방식으로 전환한다. MGA 알고리즘의 블록 다이어그램은 그림 1에 나와 있습니다. 하나.

    연구 수행 시 전역 극한 영역 탐색 시 목적 함수 계산 횟수(Nrf = 16,000)에 제한을 두었고, Nelder-Mead 방법(기초 유전 알고리즘 이후에 로컬 최적화 알고리즘으로 전환하는 조건) Nrf 작업의 75%를 수행함).

    6. 결과. 머신러닝 알고리즘을 활용한 연구 결과

    1 번 테이블

    테스트 컬렉션의 문서 및 쿼리 수

    테스트 컬렉션 이름 하위 시스템 이름 쿼리 수 문서 수

    LETOR 4.0 MQ2007 1692 69623

    LETOR 4.0 MQ2008 784 15211

    LETOR 3.0 오수메드 106 16140

    LETOR 3.0 Gov03td 50 49058

    LETOR 3.0 Gov03np 150 148657

    LETOR 3.0 Gov03hp 150 147606

    LETOR 3.0 Gov04td 75 74146

    LETOR 3.0 Gov04np 75 73834

    LETOR 3.0 Gov04hp 75 74409

    쌀. 1. 유전자 알고리즘과 Nelder-Mead 방법에 기반한 하이브리드 MVL 알고리즘의 블록 다이어그램

    LTR-MGA 순위는 순위 함수에 대한 가중치 계수 WC*의 벡터를 받았습니다. 또한 LETOY 테스트 컬렉션의 데이터를 기반으로 순위 품질을 평가하고 품질 메트릭을 계산했습니다. 개별 순위 품질 측정항목 [이메일 보호됨]시스템 응답의 처음 n개 문서의 품질을 평가합니다. 순위의 품질을 평가하기 위해 일반적으로 허용되는 측정항목은 다음과 같습니다. [이메일 보호됨], [이메일 보호됨]그리고 [이메일 보호됨]다만, 값에 따른 메트릭의 변화에 ​​대한 보다 자세한 고려를 위해 [이메일 보호됨] 1에서 10까지의 모든 n에 대해. 개발된 알고리즘의 효율성을 기존 솔루션과 비교하기 위해 LETOM 3.0 컬렉션에서 제공하는 순위 알고리즘을 사용하여 비교 분석을 수행했습니다. NDCG 메트릭에 대한 테스트 컬렉션 TB2003 및 TB2004에 대한 알고리즘을 실행한 결과가 그림 1에 나와 있습니다. 2. 결과는 LTR-MGA 알고리즘이 테스트 알고리즘을 능가하며 가장 높은 값은

    를 위한 [이메일 보호됨](첫 번째 문서 수준에서). LTR-MGA 알고리즘의 우수성은 실험에서 고려된 테스트 순위 함수와 대조적으로 순위 함수를 최적화하기 위해 제안된 접근 방식에서 목적 함수로 사용되는 것이 NDCG 메트릭이라는 사실에 기인합니다.

    제안된 LTR-MGA 알고리즘을 사용할 때 순위의 품질을 평가하기 위해 검색 결과에서 문서 순위를 매기기 위한 품질 메트릭 값을 계산하였다(그림 3). 기본 랭킹 기능을 사용할 때의 랭킹 결과(표 2)의 비교, 기본 알고리즘 LTR-GA 및 수정된 LTR-MGA 알고리즘은 후자의 장점을 나타냅니다.

    또한, 연구는 MO 순위에 필요한 시간의 추정을 수행했습니다. 이것은 제안된 LTR-MGA 방법이 이 지표에서 전통적인 방법을 기반으로 한 접근 방식보다 우수함을 확인하는 데 필요합니다.

    쌀. 2. 랭킹을 위한 머신러닝 알고리즘 비교

    테스트 컬렉션에 대한 NDCG 측정 기준: 왼쪽 - Gov03td 데이터 세트, 오른쪽 - Gov04td 데이터 세트

    쌀. 3. 기본 순위 공식 및 학습 알고리즘 LTR-GA 및 LTR-MGA에 대한 순위 품질 메트릭 평가

    다양한 순위 기계 학습 알고리즘에 대한 순위 지정 품질 지표

    표 2

    품질 메트릭 레인징 기본 랭킹 기능 LTR-GA LTR-MGA 메트릭 증가, %

    정확도 0.201 0.251 0.267 26.81

    [이메일 보호됨](처음 5개 문서) 0.149 0.31 0.339 90.47

    [이메일 보호됨](처음 10개 문서) 0.265 0.342 0.362 29.14

    Bpref 0.303 0.316 0.446 51.49

    완전성 0.524 0.542 0.732 39.03

    * 해당 메트릭에 대한 최상의 값은 회색으로 강조 표시됩니다.

    유전자 알고리즘(NTL-OL). LTN-OL 알고리즘과 LTN-MOL 알고리즘의 실행에 소요된 시간을 비교한 결과는 표에 나와 있다. 삼.

    7. 결론. 따라서 수행된 연구에 따르면 제안된 접근 방식을 사용할 때 IRS에서 고려되는 순위 메트릭 값이 증가합니다(LTR-OL 알고리즘에 비해 평균 19.55% 증가). 이것은 LTR-MOL이 올바르게 작동하고 순위 기능을 크게 개선한다는 것, 즉 최적화 문제를 성공적으로 해결한다는 것을 확인시켜줍니다. 수정된 알고리즘으로

    로컬 최적화 방법의 적용과 목적 함수의 계산 횟수에 대한 제한 도입으로 인해 기계 학습 시간이 감소했습니다(기존 유전자 알고리즘 LTNOL 사용에 비해 평균 17.71%).

    LTN-MOL 순위를 매기기 위해 개발된 기계 학습 알고리즘은 간단한 순위 기능의 조합을 기반으로 하는 순위 모델을 사용하여 IS에서 사용할 수 있습니다. 그러나 제안된 접근 방식에 대한 몇 가지 제한 사항을 고려해야 합니다. 기반을 둔

    훈련 샘플의 크기에 따른 머신러닝 순위 수행 시간 추정

    표 3

    문서 텍스트 컬렉션 크기

    런타임 LTR-GA

    런타임 LTR-MGA

    실행 시간 감소, %

    평균

    *회색해당 테스트 컬렉션 크기에 대한 최상의 값을 강조 표시

    얻은 결과, MO 이후 가장 큰 증가는 순위 품질 메트릭에서 나타났으며 그 값을 목적 함수로 취했습니다. 동시에 다른 메트릭은 크게 개선되지 않을 수 있으며 경우에 따라 값이 악화될 수도 있습니다. 이러한 단점을 제거하기 위한 가능한 접근 방법 중 하나로 최적화 문제를 다중 목표 문제로 해결해야 합니다. 검색 결과의 여러 주요 순위 메트릭을 최적화하는 대신 균일하게 개선하는 것입니다. 또한 추가 연구에서 정보 검색 프로세스를 개선하기 위해 주요 순위 품질 메트릭의 선형 컨볼루션을 기반으로 목적 함수를 구성하는 방법론을 개발할 계획입니다.

    서지 목록

    1. 띠옌 류. 정보 검색 순위 학습 // 정보 검색의 저널 기초 및 동향. 권. 3, 3호. 2009년 3월. P. 225-331.

    2. Christopher J. C. Burges, Tal Shaked, Erin Renshaw. 기울기 하강법을 사용한 순위 학습 // ICML "05 Proceedings of the 22nd International Conference on Machine learning. 2005. P. 89-96.

    3. Semenikhin, S. V. 문서 순위 지정을 위한 머신 러닝 접근 방식 연구 검색 엔진유전 알고리즘 기반 / S. V. Semenikhin // Young Russia: 산업을 위한 첨단 기술. - 2013. - 2번. - S. 82 - 85.

    4. 제어 시스템 합성에서 유전 알고리즘을 기반으로 하는 다중 기준 최적화: 모노그래프. / LA 데니소바 - Omsk: OmGTU 출판사, 2014. - 170 p. - ISBN 978-5-8149-1822-2.

    5. Denisova, L.A., Meshcheryakov, V.A. 유전 알고리즘을 사용하여 제어 시스템의 매개변수 합성 자동화. - 2012. - 7번. - S. 34 - 38.

    6. Huber, Peter J. 위치 매개변수의 강력한 추정 // Annals of Statistics. - 1964. - 제53호. - P. 73-101.

    7. Semenikhin, S.V. 다중 기준 최적화 및 유전 알고리즘을 기반으로 한 정보 검색 자동화 / S.V. Semenikhin, L.A. Denisova // 시스템, 메커니즘 및 기계의 역학. - 2014. - 3호. - S. 224 - 227.

    8. Tie-Yan Liu, Jun Xu, Tao Qin, Wenying Xiong 및 Hang Li. LETOR: 정보 검색 순위 지정 학습에 대한 벤치마크 데이터 세트 // 정보 검색 순위 지정 학습에 대한 SIGIR 2007 워크샵. - 2007. - S. 3-10.

    9. Ageev, M. S. 공식 메트릭 R0MIP "2004 / M. S. Ageev, I. E Kuralenok // II 정보 검색 방법 평가에 관한 러시아 세미나(ROMIP 2004), Pushchino, 2004: tr. ; ed. I S. Nekrestyanova, St Petersburg: 화학 연구소, St. Petersburg State University, pp. 142-150.

    10. J. A. Nelder, R. Mead, 함수 최소화를 위한 심플렉스 방법, The Computer Journal 7(1965). 308-313.

    SEMENIKHIN Svyatoslav Vitalievich, "정보 처리 및 제어 자동화 시스템"학과 대학원생. 서신 주소: [이메일 보호됨] DENISOVA Lyudmila Albertovna, 기술 과학 박사, 자동화 정보 처리 및 제어 시스템학과 부교수. 서신 주소: [이메일 보호됨]

    통신 사업자의 클라이언트 유출에 따르면.


    필요한 라이브러리를 다운로드하고 데이터를 봅니다.

    pd로 pandas 가져오기 matplotlib.pyplot을 matplotlib.pylab에서 plt로 가져오기 rc, sklearn에서 sns로 seaborn을 플롯합니다. ../data/telecom_churn.csv")


    df.head(5)

    데이터 전처리

    # 이진 열 매핑 # 및 상태 더미 인코딩(단순화를 위해 목조 모델에서는 이 작업을 수행하지 않는 것이 좋습니다.) d = ("예" : 1, "아니오" : 0) df["국제 계획"] = df[ " 국제 계획"].map(d) df["음성 메일 계획"] = df["음성 메일 계획"].map(d) df["이탈"] = df["이탈"].astype("int64 " ) le = LabelEncoder() df["상태"] = le.fit_transform(df["상태"]) ohe = OneHotEncoder(sparse=False)coded_state = ohe.fit_transform(df["상태"].values.reshape( - 1, 1)) tmp = pd.DataFrame(encoded_state, columns=["state " + str(i) for i in range(encoded_state.shape)]) df = pd.concat(, axis=1)

    정확도, 정밀도 및 재현율

    메트릭 자체로 이동하기 전에 분류 오류 측면에서 이러한 메트릭을 설명하기 위해 중요한 개념을 도입해야 합니다. 혼동 행렬(오차 매트릭스).
    두 개의 클래스와 각 객체가 클래스 중 하나에 속하는지 예측하는 알고리즘이 있다고 가정하면 분류 오류 행렬은 다음과 같습니다.


    트루 포지티브(TP) 가양성(FP)
    거짓 부정(FN) 트루 네거티브(TN)

    여기서 는 객체에 대한 알고리즘의 응답이고 는 이 ​​객체에 대한 클래스의 실제 레이블입니다.
    따라서 분류 오류에는 False Negative(FN)와 False Positive(FP)의 두 가지 유형이 있습니다.


    알고리즘 훈련 및 오류 행렬 구성

    X = df.drop("Churn", axis=1) y = df["Churn"] # 샘플을 기차와 테스트로 나눕니다. 모든 메트릭은 테스트 데이터 세트 X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0.33, random_state=42) # 기본 로지스틱 회귀 학습 lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # 함수를 사용하여 sklearn 문서에서 오류 행렬을 작성합니다. def plot_confusion_matrix(cm, classes , normalize=False, title="(!LANG:혼합 행렬", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="혼동 행렬") plt.savefig("conf_matrix.png") plt.show()!}


    정확성

    직관적이고 명백하며 거의 사용되지 않는 측정항목은 정확도(알고리즘의 정답 비율)입니다.



    이 메트릭은 클래스가 같지 않은 문제에서는 쓸모가 없으며 예제로 쉽게 보여줍니다.


    메일 스팸 필터의 성능을 평가하려고 한다고 가정해 보겠습니다. 100개의 스팸이 아닌 이메일이 있으며 그 중 90개는 분류자가 올바르게 결정했으며(True Negative = 90, False Positive = 10), 그 중 5개는 분류자에 의해 올바르게 결정되었습니다(True Positive = 5, False Negative). = 5).
    그런 다음 정확도:



    그러나 모든 이메일을 스팸이 아닌 것으로 예측하면 정확도가 더 높아집니다.



    동시에 처음에는 스팸 이메일을 식별하기를 원했기 때문에 우리 모델에는 예측력이 전혀 없습니다. 모든 클래스에 대한 공통 메트릭에서 클래스 품질의 개별 지표로의 전환은 이를 극복하는 데 도움이 될 것입니다.

    정밀도, 재현율 및 F-측정

    각 클래스에 대한 알고리즘의 품질을 평가하기 위해 메트릭 정밀도(정확도)와 재현율(완전성)을 별도로 도입합니다.




    정밀도는 분류기에 의해 양성이라고 불리는 객체의 비율로 해석될 수 있으며 동시에 실제로는 양수이며, 리콜은 알고리즘이 찾은 양성 클래스의 모든 객체 중 양성 클래스의 객체 비율을 보여줍니다.



    이 경우 False Positive 수준이 증가하기 때문에 모든 객체를 하나의 클래스에 쓸 수 없는 것은 정밀도의 도입입니다. 리콜은 다음을 감지하는 알고리즘의 능력을 보여줍니다. 주어진 수업일반적으로 정밀도는 이 클래스를 다른 클래스와 구별하는 능력입니다.


    앞서 언급했듯이 분류 오류에는 두 가지 유형이 있습니다. False Positive와 False Negative입니다. 통계학에서는 첫 번째 유형의 오류를 제1종 오류라고 하고 두 번째 유형을 제2종 오류라고 합니다. 가입자의 유출을 결정하는 작업에서 첫 번째 유형의 오류는 충성도가 높은 가입자를 탈퇴하는 가입자의 실수가 될 것입니다. 귀무 가설은 가입자가 하나도 떠나지 않는다는 것이고 우리는 이 가설을 기각하기 때문입니다. 따라서 두 번째 종류의 오류는 나가는 가입자의 "통과"와 귀무 가설의 잘못된 수락입니다.


    정밀도와 재현율은 정확도와 달리 클래스 비율에 의존하지 않으므로 불균형 샘플 조건에 적용할 수 있습니다.
    종종 실제 업무에서는 이 두 지표 사이에서 최적의(고객을 위한) 균형을 찾는 것이 작업입니다. 고전적인 예는 고객의 유출을 결정하는 문제입니다.
    우리가 찾을 수 없다는 것이 분명합니다 모두흔들리는 고객과 오직그들의. 그러나 고객 유지를 위한 전략과 리소스를 결정한 후에는 정확성 및 회수에 필요한 임계값을 선택할 수 있습니다. 예를 들어, 콜센터 리소스가 제한적이기 때문에 이윤이 높은 고객이나 떠날 가능성이 높은 고객만 유지하는 데 집중할 수 있습니다.


    일반적으로 알고리즘의 하이퍼파라미터를 최적화할 때(예: 그리드를 반복하는 경우 GridSearchCV)는 하나의 메트릭을 사용하며 테스트 샘플에서 개선될 것으로 기대합니다.
    여러 가지가 있습니다 다양한 방법정밀도와 재현율을 종합적인 품질 기준으로 결합합니다. F-측정(일반적으로 ) - 조화 평균 정밀도 및 재현율:



    이 경우, 그것은 메트릭의 정확도의 가중치를 결정하고 동시에 조화 평균(2의 인수를 사용하여 정밀도 = 1 및 재현율 = 1의 경우에 가 있음)
    F-측정은 1과 동일한 재현율 및 정밀도에서 최대값에 도달하고 인수 중 하나가 0에 가까우면 0에 가깝습니다.
    sklearn은 편리한 기능 _metrics.classification 보고서, 각 클래스에 대한 재현율, 정밀도 및 F-측정값과 각 클래스의 인스턴스 수를 반환합니다.


    보고서 = classification_report(y_test, lr.predict(X_test), target_names=["비 이탈", "이탈"]) print(보고서)
    등급 정도 상기하다 f1 점수 지원하다
    휘젓지 않은 0.88 0.97 0.93 941
    휘젓다 0.60 0.25 0.35 159
    평균/총계 0.84 0.87 0.84 1100

    실제로 실제로 널리 사용되는 불균형 클래스가 있는 작업의 경우 클래스 비율을 동일하게 하기 위해 데이터 세트를 인위적으로 수정하는 기술에 의존해야 하는 경우가 많습니다. 그들 중 많은 것들이 있으며 우리는 그것들을 만지지 않을 것입니다. 몇 가지 방법을보고 작업에 적합한 방법을 선택할 수 있습니다.

    AUC-ROC 및 AUC-PR

    알고리즘의 실제 응답(일반적으로 클래스에 속할 확률, SVM은 별도로 참조)을 이진 레이블로 변환할 때 0이 1이 되는 임계값을 선택해야 합니다. 임계값 0.5는 자연스럽고 가깝지만 예를 들어 앞서 언급한 계급 균형의 부족과 같이 항상 최적인 것은 아닙니다.


    특정 임계값에 얽매이지 않고 모델을 전체적으로 평가하는 한 가지 방법은 AUC-ROC(또는 ROC AUC) - 면적( 레아 urve) 오류 곡선 아래( 아르 자형받는 사람 영형조작 특성 곡선). 이 곡선은 TPR(True Positive Rate) 및 FPR(False Positive Rate) 좌표에서 (0.0)에서 (1.1)까지의 선입니다.




    우리는 이미 TPR을 알고 있습니다. 이것이 완전성이며 FPR은 알고리즘이 잘못 예측한 네거티브 클래스의 객체 비율을 보여줍니다. 이상적인 경우 분류기가 오류를 일으키지 않을 때(FPR = 0, TPR = 1), 곡선 아래 면적은 1과 같습니다. 그렇지 않으면 분류기가 클래스 확률을 무작위로 출력할 때 분류기가 동일한 양의 TP 및 FP를 출력하므로 AUC-ROC는 0.5가 되는 경향이 있습니다.
    그래프의 각 점은 선택한 임계값에 해당합니다. 이 경우 곡선 아래 영역은 알고리즘의 품질을 보여줍니다(많을수록 좋음). 또한 곡선 자체의 기울기도 중요합니다. 우리는 FPR을 최소화하면서 TPR을 최대화하기를 원합니다. 점 (0,1).


    ROC 곡선 그리기 코드

    sns.set(font_scale=1.5) sns.set_color_codes("음소거된") plt.Figure(figsize=(10, 8)) fpr, tpr, 임계값 = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="ROC 곡선 ") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("거짓 양성률 ") plt.ylabel("진정한 비율") plt.title("ROC 곡선") plt.savefig("ROC.png") plt.show()



    AUC-ROC 기준은 불균형 클래스에 저항력이 있으며(스포일러: 아아, 모든 것이 그렇게 단순하지는 않음) 무작위로 선택된 긍정적인 개체가 분류자에 의해 더 높은 순위로 매겨질 확률로 해석될 수 있습니다(긍정적일 확률이 더 높을 것입니다). ) 무작위로 선택한 부정적인 개체보다.


    다음 문제를 고려하십시오. 100만 개의 문서에서 100개의 관련 문서를 선택해야 합니다. 우리는 두 가지 알고리즘을 기계 학습했습니다.

    • 알고리즘 1 100개의 문서를 반환하며 그 중 90개는 관련이 있습니다. 이런 식으로,

    • 알고리즘 2 2000개의 문서를 반환하며 그 중 90개가 관련이 있습니다. 이런 식으로,


    아마도 우리는 경쟁자에 비해 거짓 긍정을 거의 생성하지 않는 첫 번째 알고리즘을 선택할 것입니다. 그러나 이 두 알고리즘 간의 False Positive Rate의 차이는 극도로작은 - 단 0.0019. 이것은 AUC-ROC가 True Negative에 대한 False Positive의 비율을 측정하고 두 번째(더 큰) 클래스가 우리에게 그다지 중요하지 않은 작업에서 알고리즘을 비교할 때 완전히 적절한 그림을 제공하지 못할 수 있다는 사실의 결과입니다. .


    상황을 수정하기 위해 완전성과 정확성으로 돌아가 보겠습니다.

    • 알고리즘 1

    • 알고리즘 2


    두 알고리즘 사이에는 이미 상당한 차이가 있습니다. 정확도는 0.855입니다!


    정밀도와 재현율은 곡선을 그리는 데도 사용되며 AUC-ROC와 유사하게 그 아래 영역을 찾습니다.



    여기서 작은 데이터 세트에서 PR 곡선 아래 영역은 사다리꼴 방법을 사용하여 계산되기 때문에 지나치게 낙관적일 수 있지만 일반적으로 이러한 작업에는 충분한 데이터가 있습니다. AUC-ROC와 AUC-PR의 관계에 대한 자세한 내용은 여기를 참조하십시오.

    물류 손실

    로지스틱 손실 함수는 다음과 같이 정의됩니다.



    여기서 는 i번째 객체에 대한 알고리즘 응답이고 는 i번째 객체에 대한 실제 클래스 레이블이며 는 샘플 크기입니다.


    로지스틱 손실 함수의 수학적 해석에 대한 자세한 내용은 선형 모델에 대한 게시물에서 이미 작성되었습니다.
    이 메트릭은 비즈니스 요구 사항에 자주 나타나지 않지만 종종 kaggle 작업에 나타납니다.
    직관적으로, logloss를 최소화하는 것은 잘못된 예측에 페널티를 부여하여 정확도를 최대화하는 문제로 생각할 수 있습니다. 그러나 logloss는 오답에 대한 분류자의 확신에 심각한 불이익을 준다는 점에 유의해야 합니다.


    예를 고려하십시오.


    def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("분류가 불확실한 로그 손실 %f " % logloss_crutch(1, 0.5)) >> 불확실 분류의 로그 손실 0.693147 print("자신감 분류 및 정답 %f의 로그 손실" % logloss_crutch(1, 0.9)) >> 확신 분류 및 정답의 로그 손실 0.105361 print(" 확실한 분류와 오답을 위한 Logloss %f" % logloss_crutch(1, 0.1)) >> 확실한 분류와 오답을 위한 Logloss 2.302585

    오답과 자신감 있는 분류로 logloss가 얼마나 크게 증가했는지 확인하십시오!
    따라서 한 개체의 오류는 표본의 전체 오류를 크게 악화시킬 수 있습니다. 이러한 개체는 종종 별도로 필터링하거나 고려하기 위해 기억해야 하는 이상값입니다.
    로그 손실 그래프를 그리면 모든 것이 제자리에 들어갑니다.



    ground truth = 1에 대한 알고리즘의 답이 0에 가까울수록 오류 값이 높아지고 곡선이 가파르게 성장함을 알 수 있습니다.

    요약:

    • 다중 클래스 분류의 경우 각 클래스의 메트릭을 주의 깊게 모니터링하고 솔루션의 논리를 따라야 합니다. 작업, 측정항목을 최적화하는 것보다
    • 동일하지 않은 클래스의 경우, 분류의 품질을 올바르게 반영할 메트릭과 훈련을 위한 클래스의 균형을 선택하는 것이 필요합니다.
    • 기사를 준비하는 데 도움을 준 마드로라도.

    헤이 하브르!

    머신 러닝 작업에서 메트릭은 모델의 품질을 평가하고 다양한 알고리즘을 비교하는 데 사용되며 선택 및 분석은 데이터 과학자의 작업에서 없어서는 안될 부분입니다.

    이 기사에서는 분류 문제의 몇 가지 품질 기준을 살펴보고 메트릭을 선택할 때 무엇이 ​​중요하고 무엇이 잘못될 수 있는지 논의할 것입니다.

    분류 문제의 메트릭

    데모용 유용한 기능 스켈런메트릭을 시각적으로 표현하기 위해 과정의 첫 번째 기사에서 만난 통신 사업자의 고객 이탈 데이터 세트를 사용합니다.

    필요한 라이브러리를 다운로드하고 데이터를 봅니다.

    G 팬더를 pd로 가져오기 matplotlib.pyplot을 matplotlib.pylab 가져오기 rc에서 plt로 가져오기 seaborn을 sklearn.preprocessing에서 sns로 가져오기 LabelEncoder, OneHotEncoder에서 sklearn.model_selection 가져오기 cross_val_score에서 sklearn.linear_model 가져오기 로지스틱Regression에서 RandomForest 가져오기 sklearn 가져오기 sklearn.metrics에서 가져오기 Precision_recall_curve, sklearn.model_selection에서 분류_리포트 가져오기 train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

    Df.head(5)

    데이터 전처리

    # 이진 열 매핑 # 및 상태 더미 인코딩(단순화를 위해 목조 모델에서는 이 작업을 수행하지 않는 것이 좋습니다.) d = ("예" : 1, "아니오" : 0) df["국제 계획"] = df[ " 국제 계획"].map(d) df["음성 메일 계획"] = df["음성 메일 계획"].map(d) df["이탈"] = df["이탈"].astype("int64 " ) le = LabelEncoder() df["상태"] = le.fit_transform(df["상태"]) ohe = OneHotEncoder(sparse=False)coded_state = ohe.fit_transform(df["상태"].values.reshape( - 1, 1)) tmp = pd.DataFrame(encoded_state, columns=["state " + str(i) for i in range(encoded_state.shape)]) df = pd.concat(, axis=1)

    정확도, 정밀도 및 재현율

    메트릭 자체로 이동하기 전에 분류 오류 측면에서 이러한 메트릭을 설명하기 위해 중요한 개념을 도입해야 합니다. 혼동 행렬(오차 매트릭스).
    두 개의 클래스와 각 객체가 클래스 중 하나에 속하는지 예측하는 알고리즘이 있다고 가정하면 분류 오류 행렬은 다음과 같습니다.

    트루 포지티브(TP) 가양성(FP)
    거짓 부정(FN) 트루 네거티브(TN)

    는 객체에 대한 알고리즘의 응답이며,

    이 개체의 실제 클래스 레이블입니다.
    따라서 분류 오류에는 False Negative(FN)와 False Positive(FP)의 두 가지 유형이 있습니다.

    알고리즘 훈련 및 오류 행렬 구성

    X = df.drop("Churn", axis=1) y = df["Churn"] # 샘플을 기차와 테스트로 나눕니다. 모든 메트릭은 테스트 데이터 세트 X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0.33, random_state=42) # 기본 로지스틱 회귀 훈련 lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # 함수를 사용하여 sklearn에서 오류 행렬을 작성합니다. 문서 def plot_confusion_matrix(cm, classes , normalize=False, title="(!LANG:혼합 행렬", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="혼동 행렬") plt.savefig("conf_matrix.png") plt.show()!}

    정확성

    직관적이고 명백하며 거의 사용되지 않는 측정항목은 정확도(알고리즘의 정답 비율)입니다.

    이 메트릭은 클래스가 같지 않은 문제에서는 쓸모가 없으며 예제로 쉽게 보여줍니다.

    메일 스팸 필터의 성능을 평가하려고 한다고 가정해 보겠습니다. 100개의 스팸이 아닌 이메일이 있으며, 그 중 90개는 분류자가 올바르게 결정했으며(True Negative = 90, False Positive = 10), 그 중 5개는 분류자에 의해 올바르게 결정되었습니다(True Positive = 5, False Negative = 5).
    그런 다음 정확도:

    그러나 모든 이메일을 스팸이 아닌 것으로 예측하면 정확도가 더 높아집니다.

    동시에, 처음에 스팸 이메일을 식별하기를 원했기 때문에 우리 모델은 예측력이 전혀 없습니다. 모든 클래스에 대한 공통 메트릭에서 클래스 품질의 개별 지표로의 전환은 이를 극복하는 데 도움이 될 것입니다.

    정밀도, 재현율 및 F-측정

    각 클래스에 대한 알고리즘의 품질을 개별적으로 평가하기 위해 메트릭 정밀도(정확도) 및 재현율(완전성)을 소개합니다.

    정밀도는 분류기에 의해 양성이라고 불리는 객체의 비율로 해석될 수 있으며 동시에 실제로는 양수이며, 리콜은 알고리즘이 찾은 양성 클래스의 모든 객체 중 양성 클래스의 객체 비율을 보여줍니다.

    이 경우 False Positive 수준이 증가하기 때문에 모든 객체를 하나의 클래스에 쓸 수 없는 것은 정밀도의 도입입니다. Recall은 주어진 클래스를 전혀 감지하는 알고리즘의 능력을 보여주는 반면, precision은 이 클래스를 다른 클래스와 구별하는 능력을 보여줍니다.

    앞서 언급했듯이 분류 오류에는 두 가지 유형이 있습니다. False Positive와 False Negative입니다. 통계학에서는 첫 번째 유형의 오류를 제1종 오류라고 하고 두 번째 유형을 제2종 오류라고 합니다. 가입자의 유출을 결정하는 작업에서 첫 번째 종류의 오류는 충성도가 높은 가입자가 나가는 가입자의 실수가 될 것입니다. 왜냐하면 우리의 귀무 가설은 가입자가 유출되지 않는다는 것이고 우리는 이 가설을 기각하기 때문입니다. 따라서 두 번째 종류의 오류는 나가는 가입자의 "통과"와 귀무 가설의 잘못된 수락입니다.

    정밀도와 재현율은 정확도와 달리 클래스 비율에 의존하지 않으므로 불균형 샘플 조건에 적용할 수 있습니다.
    종종 실제 업무에서는 이 두 지표 사이에서 최적의(고객을 위한) 균형을 찾는 것이 작업입니다. 고전적인 예는 고객의 유출을 결정하는 문제입니다.
    우리가 찾을 수 없다는 것이 분명합니다 모두흔들리는 고객과 오직그들의. 그러나 고객 유지를 위한 전략과 리소스를 결정한 후에는 정확성과 회수에 필요한 임계값을 선택할 수 있습니다. 예를 들어, 우리는 콜 센터 리소스에 제한이 있기 때문에 이윤이 높은 고객이나 이탈 가능성이 높은 고객만 유지하는 데 집중할 수 있습니다.

    일반적으로 알고리즘의 하이퍼파라미터를 최적화할 때(예: 그리드를 반복하는 경우 GridSearchCV)는 하나의 메트릭을 사용하며 테스트 샘플에서 개선될 것으로 기대합니다.
    정밀도와 재현율을 종합적인 품질 측정으로 결합하는 여러 가지 방법이 있습니다. F-측정(일반적으로

    ) - 평균 고조파 정밀도 및 재현율:

    이 경우 메트릭의 정확도 가중치를 결정하고

    이것은 조화 평균입니다(2의 인수를 사용하여 정밀도 = 1 및 재현율 = 1의 경우

    )
    F-측정은 1과 동일한 재현율 및 정밀도에서 최대값에 도달하고 인수 중 하나가 0에 가까우면 0에 가깝습니다.
    sklearn에는 편리한 _metrics.classification 기능이 있습니다. 보고서각 클래스에 대한 재현율, 정밀도 및 F 측정값과 각 클래스의 인스턴스 수를 반환합니다.

    보고서 = classification_report(y_test, lr.predict(X_test), target_names=["비 이탈", "이탈"]) print(보고서)

    등급 정도 상기하다 f1 점수 지원하다
    휘젓지 않은 0.88 0.97 0.93 941
    휘젓다 0.60 0.25 0.35 159
    평균/총계 0.84 0.87 0.84 1100

    실제로 실제로 널리 사용되는 불균형 클래스가 있는 작업의 경우 클래스 비율을 동일하게 하기 위해 데이터 세트를 인위적으로 수정하는 기술에 의존해야 하는 경우가 많습니다. 그들 중 많은 것들이 있으며 우리는 그것들을 만지지 않을 것입니다. 당신은 몇 가지 방법을보고 당신의 작업에 맞는 것을 선택할 수 있습니다.

    AUC-ROC 및 AUC-PR

    알고리즘의 실제 응답(일반적으로 클래스에 속할 확률, SVM은 별도로 참조)을 이진 레이블로 변환할 때 0이 1이 되는 임계값을 선택해야 합니다. 임계값 0.5는 자연스럽고 가깝지만 예를 들어 앞서 언급한 계급 균형의 부족과 같이 항상 최적인 것은 아닙니다.

    특정 임계값에 얽매이지 않고 모델을 전체적으로 평가하는 한 가지 방법은 AUC-ROC(또는 ROC AUC) - 면적( 레아 urve) 오류 곡선 아래( 아르 자형받는 사람 영형조작 특성 곡선). 이 곡선은 TPR(True Positive Rate) 및 FPR(False Positive Rate) 좌표에서 (0.0)에서 (1.1)까지의 선입니다.

    우리는 이미 TPR을 알고 있습니다. 이것이 완전성이며 FPR은 알고리즘이 잘못 예측한 네거티브 클래스의 객체 비율을 보여줍니다. 이상적인 경우 분류기가 오류를 만들지 않으면(FPR = 0, TPR = 1) 곡선 아래 면적이 1과 같게 됩니다. 그렇지 않으면 분류기가 무작위로 클래스 확률을 생성할 때 AUC-ROC는 다음과 같은 경향이 있습니다. 0.5, 분류자는 동일한 양의 TP와 FP를 발행하기 때문입니다.
    그래프의 각 점은 선택한 임계값에 해당합니다. 이 경우 곡선 아래 영역은 알고리즘의 품질을 보여줍니다(많을수록 좋음). 또한 곡선 자체의 기울기도 중요합니다. 우리는 FPR을 최소화하면서 TPR을 최대화하기를 원합니다. 점 (0,1).

    ROC 곡선 그리기 코드

    sns.set(font_scale=1.5) sns.set_color_codes("음소거된") plt.Figure(figsize=(10, 8)) fpr, tpr, 임계값 = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="ROC 곡선 ") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("거짓 양성률 ") plt.ylabel("진정한 비율") plt.title("ROC 곡선") plt.savefig("ROC.png") plt.show()

    AUC-ROC 기준은 불균형 클래스에 저항하며(스포일러: 아아, 모든 것이 그렇게 단순하지는 않음) 무작위로 선택된 긍정적 개체가 분류자에 의해 더 높은 순위가 매겨질 확률로 해석될 수 있습니다(더 높은 확률을 가질 것입니다. 양수) 무작위로 선택한 음수 개체보다.

    다음 문제를 고려하십시오. 100만 개의 문서에서 100개의 관련 문서를 선택해야 합니다. 우리는 두 가지 알고리즘을 기계 학습했습니다.

    • 알고리즘 1 100개의 문서를 반환하며 그 중 90개는 관련이 있습니다. 이런 식으로,
    • 알고리즘 2 2000개의 문서를 반환하며 그 중 90개가 관련이 있습니다. 이런 식으로,

    아마도 우리는 경쟁자에 비해 거짓 긍정을 거의 생성하지 않는 첫 번째 알고리즘을 선택할 것입니다. 그러나 이 두 알고리즘 간의 False Positive Rate의 차이는 극도로작은 - 단 0.0019. 이것은 AUC-ROC가 True Negative에 대한 False Positive의 비율을 측정하고 두 번째(더 큰) 클래스가 우리에게 그다지 중요하지 않은 작업에서 알고리즘을 비교할 때 완전히 적절한 그림을 제공하지 못할 수 있다는 사실의 결과입니다. .

    상황을 수정하기 위해 완전성과 정확성으로 돌아가 보겠습니다.

    • 알고리즘 1
    • 알고리즘 2

    두 알고리즘 사이에는 이미 상당한 차이가 있습니다. 정확도는 0.855입니다!

    정밀도와 재현율은 곡선을 그리는 데도 사용되며 AUC-ROC와 유사하게 그 아래 영역을 찾습니다.

    여기서 작은 데이터 세트에서 PR 곡선 아래 영역은 사다리꼴 방법을 사용하여 계산되기 때문에 지나치게 낙관적일 수 있지만 일반적으로 이러한 작업에는 충분한 데이터가 있습니다. AUC-ROC와 AUC-PR의 관계에 대한 자세한 내용은 여기를 참조하십시오.

    물류 손실

    로지스틱 손실 함수는 다음과 같이 정의됩니다.

    에 대한 알고리즘의 응답입니다.

    옴 개체,

    실제 클래스 레이블

    옴 개체 및

    표본의 크기.

    로지스틱 손실 함수의 수학적 해석에 대한 자세한 내용은 선형 모델에 대한 게시물에서 이미 작성되었습니다.
    이 메트릭은 비즈니스 요구 사항에 자주 나타나지 않지만 종종 kaggle 작업에 나타납니다.
    직관적으로, logloss를 최소화하는 것은 잘못된 예측에 페널티를 부여하여 정확도를 최대화하는 문제로 생각할 수 있습니다. 그러나 logloss는 오답에 대한 분류자의 확신에 심각한 불이익을 준다는 점에 유의해야 합니다.

    예를 고려하십시오.

    Def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("분류가 불확실한 로그 손실 %f " % logloss_crutch(1, 0.5)) >> 불확실한 분류가 있는 로그 손실 0.693147 print("자신감 있는 분류 및 정답이 있는 로그 손실 %f" % logloss_crutch(1, 0.9)) >> 자신 있는 분류 및 정답이 있는 로그 손실 0.105361 print(" 확실한 분류와 오답을 위한 Logloss %f" % logloss_crutch(1, 0.1)) >> 확실한 분류와 오답을 위한 Logloss 2.302585

    오답과 자신감 있는 분류로 logloss가 얼마나 크게 증가했는지 확인하십시오!
    따라서 한 개체의 오류는 표본의 전체 오류를 크게 악화시킬 수 있습니다. 이러한 개체는 종종 별도로 필터링하거나 고려하기 위해 기억해야 하는 이상값입니다.
    로그 손실 그래프를 그리면 모든 것이 제자리에 들어갑니다.

    ground truth = 1에 대한 알고리즘의 답이 0에 가까울수록 오류 값이 높아지고 곡선이 가파르게 성장함을 알 수 있습니다.

    합산:

    • 다중 클래스 분류의 경우 각 클래스의 메트릭을 주의 깊게 모니터링하고 솔루션의 논리를 따라야 합니다. 작업, 측정항목을 최적화하는 것보다
    • 동일하지 않은 클래스의 경우, 분류의 품질을 올바르게 반영할 메트릭과 훈련을 위한 클래스의 균형을 선택하는 것이 필요합니다.
    • 메트릭 선택은 주제 영역에 중점을 두고 데이터를 사전 처리하고 가능하면 세분화(풍부한 고객과 가난한 고객으로 나누는 경우와 같이)해야 합니다.

    유용한 링크

    1. Evgeny Sokolov의 과정: 모델 선택에 관한 세미나(회귀 문제의 메트릭에 대한 정보가 있음)
    2. A.G.의 AUC-ROC 문제 디아코노바
    3. kaggle에서 다른 측정항목에 대해 자세히 알아볼 수 있습니다. 각 측정항목의 설명에 사용된 대회 링크가 추가되었습니다.
    4. 불균형 샘플에 대한 학습에 대한 Bogdan Melnyk(일명 ld86)의 프레젠테이션


관련 기사: