저자: Yong Haogengen, Wang Xin 외
메이투안의 매장 내 종합 사업(이하 종합 사업)은 메이투안 매장 내 사업의 중요한 부문 중 하나입니다. KTV, 뷰티 산업, 의료 뷰티, 부모-자식, 결혼, 스포츠 및 피트니스, 엔터테인먼트, 교육 및 훈련, 홈 가구, 애완동물, 바, 생활 서비스 및 기타 수십 개의 주요 하위 부문이 다양한 지역 생활 요구를 충족합니다. 수억 명의 사용자.
추천 시스템은 수요와 공급의 효율적인 매칭을 달성하는 중요한 연결고리이며, 추천 시스템의 품질이 매칭 효과의 상실을 결정합니다. 아래 그림 1과 같이 데이터는 데이터 웨어하우스와 알고리즘에 의해 처리된 후 데이터 서비스를 통해 다양한 비즈니스 시스템으로 전송되며, 마지막으로 클라이언트를 통해 다시 데이터 웨어하우스로 전송되어 '플라이휠 효과'를 형성합니다. 데이터와 품질이 바로 이것이다. 링크의 기어 맞물림의 핵심은 효율성 향상과 효과 보장을 위한 중요한 전제 조건입니다.
품질 보증은 측정이 "가시적", "명확화" 및 "수정"될 수 있도록 수행되어야 합니다. 그러나 기존의 백엔드 서비스 품질 지표는 현재 "데이터 플라이휠"의 품질을 잘 설명할 수 없습니다. 종합사업추천시스템을 위한 품질모델 구축을 통해 유사 다사업계열, 효과지향 시스템 품질측정에 대한 새로운 사고 관점과 실무적 참고자료를 제공할 수 있기를 기대한다.
그림 1 추천 시스템의 "데이터 플라이휠"
추천 시스템은 효과 기반 시스템으로 품질 특성이 기능 시스템과 다릅니다. 일반적으로 기능적 시스템은 다운그레이드된 후 사용자 경험에 큰 영향을 미치게 됩니다. 그러나 추천 결과가 A 또는 A'인 경우에는 사용자가 이를 명확하게 알아차리기 어렵습니다. 그러나 실제로 매칭 효과가 악화되면 사용자의 암묵적 경험에 직접적인 영향을 미치게 되므로 이를 식별할 필요가 있습니다. 기능적 시스템은 일반적으로 유용성을 핵심으로 하는 품질 지수 시스템을 구축합니다. 종합 비즈니스 추천 시스템의 비즈니스 관행에서 우리는 유용성 및 기타 지표에 다음과 같은 제한 사항이 있음을 발견했습니다.
과거에는 품질 구축에서 결함 수준을 목표로 사용했습니다. 검증 주기가 길고 우발성이 있었고, 목표와 행동의 논리적 도출 간의 관계가 강하지 않았습니다. 또한 결함 자체는 나중에 생각한 것이므로 이러한 문제 기반 접근 방식은 지속적인 운영에 도움이 되지 않습니다. 일반적으로 사용성을 목표로 하면 실제 구현 계산에 다양한 문제점이 있으므로 사용성을 기반으로 추천 시스템의 품질 모델을 구축한 후, 계산 방식을 조정하여 세련된 품질 운영을 안내하는 것을 고려합니다.
품질 모델을 구축하려면 먼저 품질의 본질에 대한 이해로 돌아가십시오. 국제 표준화 기구(ISO)에 따르면 품질은 명시적 또는 암시적 "요구"를 충족하는 기업의 능력을 반영하는 특성의 총합입니다. 일반적으로 사용되는 또 다른 품질 개념은 안정성입니다. 안정성의 핵심은 시스템이 오랫동안 "예상" 상태로 실행되도록 하는 것입니다. 품질이든 안정성이든 시스템이 누구의 요구와 기대를 충족해야 하는지 이해하는 것이 중요합니다. 추천 시나리오에서 이 개체는 제품 및 알고리즘입니다. 비즈니스 제품은 사용자 시나리오를 이해하고 사용자 요구 사항을 추상화하며 추천 팀에 제품 요구 사항을 제안하며 이는 외부 제품 반복에 반영됩니다. 동시에 추천 시스템 팀은 내부적으로 서로 협력하여 최상의 최적화 모델 전략을 학습합니다. 데이터 팀 내의 알고리즘 반복에 반영됩니다.
아래 그림 2와 같이 가용성 계산식에서는 오랜 시간이 강조되는 반면 "필요"와 "기대"는 외부 서비스 제공에만 반영됩니다. 여기에는 일정한 합리성이 있습니다. 첫째, 가용성은 업계의 공통 지표이며, 그 정의는 일반화되어야 합니다. 둘째, 대부분의 백엔드 시스템은 기능을 제공하는 것입니다. 외부 서비스는 대부분 "Between"과 "None"으로 제공되므로 서비스 품질이 저하될 여지도 있습니다. 그러나 효과를 핵심 목표로 하는 추천 시스템의 경우 "with" 기능과 "without" 기능 사이에 "좋은" 효과와 "나쁜" 효과의 긴 스펙트럼이 있습니다. 추천 시스템의 품질에 대한 우리의 반복적인 생각에서 핵심 변화는 외부 서비스의 "예"와 "아니오"에서 외부 서비스의 "좋음"과 "나쁨"으로 바뀌는 것입니다. 이는 또한 변화의 출발점입니다. 유용성 계산 방법.
그림 2 결함에 대한 인식이 품질 측정에 영향을 미칩니다
"필요"나 "기대"를 충족하지 못하면 결함이 생기고 결함은 품질 손실의 원인이 됩니다. ISO/IEC 25010 소프트웨어 품질 모델(2011) 소프트웨어 품질 모델은 소프트웨어 결함을 정의하며 기능적 적합성, 성능 효율성, 호환성, 가용성, 신뢰성, 보안 및 유지 관리 가능성의 8가지 기능을 포함합니다. 그리고 이식성의 31가지 하위 기능. 백엔드 서비스에서 다루지 않는 품질 기능(사용자 인터페이스 미학, 학습성 등)이 있고, 현재 인식으로는 C 측 품질을 구성하지 않는 몇 가지 뛰어난 요소(모듈화, 공존, 비- 부인, 신뢰성 등) 재사용성 등). 추천 시스템의 비즈니스 특성과 빈도가 높은 품질 문제를 결합하여 이 단계에서는 아래 그림 3과 같은 품질 특성을 결함 원인으로 고려하는 데 중점을 둡니다.
그림 3 추천 시스템의 품질 특성
전통적인 사용성 측정은 대부분 신뢰성, 기능적 완전성 및 정확성에 중점을 두지만 대부분의 기능적 정확성과 적절성 및 안전성 측정이 부족하다는 것을 발견했습니다. 이는 권장 사항의 품질 및 효과와 밀접한 관련이 있습니다. 효과에 대한 정확성과 적절성의 영향은 상대적으로 직관적인 반면, 다른 것들은 더 간접적입니다. 예를 들어, 보안 분야의 크롤러 액세스를 예로 들면, 크롤러의 액세스 동작은 실제 인간 행동 습관과 일치하지 않으므로 UVCTR과 같은 핵심 지표의 재활용에 영향을 미쳐 결과적으로 잘못된 판단을 내리게 됩니다. 동시에 크롤러 데이터를 식별하고 제거할 수 없는 경우 노이즈는 모델 교육의 정확성에 더욱 영향을 미칩니다. 데이터 품질 문제는 데이터의 "플라이휠 효과" 중 "독약"으로, 긍정적인 피드백을 생성하고 지속적으로 결함을 증폭시킵니다. 위의 결함을 정량화하고 4장 계산 규칙에서 사용 범위를 확장하겠습니다.
가용성은 측정 방법과 계산 방법으로 나눌 수 있습니다. 측정은 흔히 N nines이라고 하며 계산은 평균 실패 간 시간과 평균 복구 시간의 함수로 측정됩니다. 측정 방법 측면에서 업계에서 일반적으로 사용되는 품질 측정 방법은 아래 그림 4와 같습니다.
그림 4 측정 방법
측정 방법에 대한 몇 가지 척도의 선택은 이 단계에서 품질 점수의 초점이 아닙니다. 사용성 자체에 사용되는 N 나인은 충분히 간단하고 비교 가능하므로 계산 방법에 중점을 둡니다. 통합된 사업 라인의 수가 많고 플랫폼 상품으로서의 추천 시스템으로 인해 시스템과 사업 간의 관계가 N:N이기 때문에 현재 시스템의 산업별, 프로젝트별, 사업별 가용성을 계산하기가 어렵습니다. 트래픽 위치는 레저 및 엔터테인먼트 비즈니스, 스크립트 킬링 프로젝트, 핵심 디스플레이 기본 경로의 일부 또는 콘텐츠 추천 유형에 속할 수 있습니다. 이러한 유형의 유연한 속성은 계산 집계 요청에 사용될 수 있습니다. 가장 적합한. 아래 그림 5에 표시된 것처럼 가용성이 요청의 함수인 경우 이전 섹션에서 관심을 두었던 품질 기능뿐만 아니라 여러 차원의 비즈니스에 의미 있는 품질 통계도 포함될 수 있습니다.
그림 5 요청 관점에서 품질 측정
이전 장의 구성 아이디어에 따르면 결함에서 결함까지, "예"와 "아니오"에서 추천 결과에 대해 '좋은' 추천 효과와 '나쁜' 추천 효과에 대해 전체에서 각 사업에 이르기까지 좋은 품질 점수가 갖춰야 할 특징을 설명합니다. 이 장에서는 지표의 계산 논리에 중점을 두고 주요 결함을 선택하고 "성공적인 요청 응답"을 정의하고 품질 점수의 비즈니스 집계 차원을 추가합니다.
3.2장에서 설명한 품질 특성과 결합하여 실제 구현 계산에서는 성공한 요청 비율의 관점에서 시스템 품질을 평가하며 다음과 같은 4가지 수준의 결함으로 나눌 수 있습니다. :
요청이 수명 주기 중 어느 부분에서든 결함이 발생하면 그 결과는 결함 응답으로 정의됩니다. 구체적인 결함 링크는 분석 및 드릴다운 차원입니다. 3.2장의 품질 특성과 위 결함의 4가지 측면에서 일반적인 문제(비즈니스 문제, 고빈도 품질 문제)를 선택하여 계산합니다. 아래 그림 6을 예로 들어 보겠습니다. 그림 6 품질점수 계산 방법
4.2 사업 일반화
종합 추천 시스템의 사업 특성은 다양한 업종, 큰 업종 차이, 추천 소재의 위치가 다양하다는 점입니다. 이는 품질 측정에 대한 종합적인 분석이 필요합니다. 모든 수준에서 개선을 안내하는 작업은 아래 그림 7과 같습니다.
그림 7 각 비즈니스 수준의 집계 분석
여기에는 많은 중저주파 서비스가 있습니다. 시간에 따라 비율의 변동은 요청의 절대값에 크게 영향을 받습니다. 이러한 시나리오의 경우 일부 작은 트래픽 비트를 집계하고 산업 또는 프로젝트 수준의 분 단위로만 모니터링할 수 있습니다.
아래 그림 8과 같이 추천 시스템에서 응답한 요청을 제품 배송 동작으로 처리합니다. 이러한 요청 중 결함이 없는 비율이 추천 시스템의 품질 점수입니다. 최고 수준의 품질 출력 표시기. 요청의 라이프사이클을 기반으로 1차 입력 지표를 설정하여 리콜 불량률, 정렬 불량률 등 핵심 프로세스의 품질 상태를 측정할 수 있습니다. 1단계 지표를 더 분해하여 2단계 입력 지표를 얻을 수도 있습니다. 예를 들어, 리콜 결함률이 상대적으로 높을 경우 리콜 무효율, 리콜 시간 초과율 등을 측정할 수 있습니다. 또한 사용자 요청은 비즈니스를 기반으로 수직, 수평 및 시간 차원에서 집계되어 비즈니스 속성에 대한 품질 점수를 얻을 수 있으며 이는 보다 목표화되고 집중됩니다.
그림 8 품질 지표 시스템
요청을 기본 단위로 하는 이 향상된 품질 점수 세트는 원래 가용성 계산 방법에 비해 한계를 어느 정도 해결합니다. 결함에 민감합니다. 다양한 비즈니스 차원의 종합적인 분석을 용이하게 하기 위해 데이터 링크의 영향을 포함할 수 있습니다.
품질 통계는 요청의 세분성을 기반으로 합니다. 데이터 응용 서비스에서 요청은 외부 세계로 출력되는 데이터 형식 중 하나일 뿐입니다. 기본 품질 점수를 완료한 후 요청의 수명 주기를 전체 데이터 링크로 확장하여 품질 측정이 완료되어야 합니다. 이때 우리는 아래 그림 9와 같이 데이터 테이블 - 비즈니스 시스템 - C측 트래픽을 연결하기 위해 데이터의 혈연 관계에 의존하여 파노라마 품질 초상화를 구축합니다.
그림 9 데이터 추천제의 혈연
혈연이란 인간사회에서 결혼과 출산으로 인해 발생하는 인간관계를 말하며, 부모자식관계, 형제자매관계, 기타 친족관계 등에서 파생되는 데이터입니다. 또한 데이터의 혈연관계를 생성하기 위해 융합되고 변형될 수도 있습니다. 데이터의 혈연관계는 다양한 수준의 데이터베이스, 데이터 테이블, 필드로 구분되며 일반적으로 데이터 자산(인용 인기도 계산, 데이터 컨텍스트 이해), 데이터 개발(영향 분석, 속성 분석), 및 데이터 거버넌스(링크 4가지 측면: 상태 추적, 데이터 웨어하우스 관리) 및 데이터 보안(보안 규정 준수 검사, 라벨 전파)이 있습니다. 시스템 품질 점수를 추천한다는 현재 아이디어에서는 영향 분석을 주로 사용하여 품질 점수를 확장하고 결함이 있는 노드의 모든 요청을 표시하고 해당 점수를 차감합니다.
추천 시스템의 비즈니스 의미에 따라 스냅샷, 솔루션, 구성 요소, 인덱스, 모델 및 기능의 6가지 유형의 비즈니스 메타데이터를 정의했습니다. 메타데이터를 기반으로 작업 액세스로 나눌 수 있는 계보를 구축합니다. , 계보 분석, 데이터 출력. 작업 접근은 수집 모듈과 보관 모듈로 구분됩니다. 작업 접근이 완료되면 노드와 그 관계가 그래프 데이터베이스에 저장되고 그래프 알고리즘을 사용하여 혈연 관계가 설정됩니다. 혈연관계가 성립된 후 노드 자체의 이상 여부에 대해 시스템 검색 및 수동 마킹을 지원하며, 영향 분석을 자동으로 완료할 수 있습니다. 노드에 이상이 발생하면 메시지가 통보되고, 이상 정보는 혈통을 따라 전파되어 다운스트림 링크의 품질 점수 계산에 영향을 미칩니다.
예외가 사용자 측에 영향을 미칠 때 비즈니스 언어로 손실을 다시 설명하려고 노력합니다. 종합 수익 모델을 기반으로 각 사업 분야의 각 의도 UV 값을 계산하고(가맹점 상세 페이지 및 단체 주문 상세 페이지에 대한 사용자 방문을 의도 방문이라고 합니다), 트래픽을 활용하여 연도를 자동으로 계산할 수 있습니다. -연도별 방문현황을 도출합니다.
품질 점수의 시스템 구현 방법은 매립점과 진단에 달려 있습니다. 전체 링크에는 매개변수 입력, 전처리 호출, 후처리 호출, 대략적인 정렬, 미세 정렬, 재배열 등이 포함되는 것이 좋습니다. 각 링크가 실패할 수 있으므로 데이터 수집은 런타임 예외, 키 입력을 처리해야 합니다. 각 링크의 정보 등을 출력합니다. 아래 그림 10과 같이 Kafka를 통해 숨겨진 데이터를 비동기식으로 수집한 후 시나리오에 따라 데이터 처리를 수행합니다. 프로덕션 환경에서는 실시간에 가까운 ES가 인덱스를 구축하여 지난 4일 동안 빠른 쿼리 서비스를 제공하고, 4일 전의 로그는 Hive에 보관되며, Flink 엔진을 통해 파싱되어 실시간으로 점수가 계산되고, 테스트 환경에서는 로그가 MySQL로 푸시됩니다. 실시간으로 테스트 및 문제 해결을 용이하게 합니다. 마지막으로, 다양한 단계에서 추천 품질을 체계적으로 표시하면 결과의 가독성이 향상됩니다.
그림 10 품질 점수 시스템 구현
점수 시스템의 개선을 점진적으로 추진해야 합니다. 추천 시스템의 경우 권장 결과가 없다는 것이 가장 심각한 품질 문제입니다. 우리가 가장 먼저 수집하고 계산하는 것은 추천 무효 결과인데, 이는 1차 지표의 결과 불량률과 회상 불량률, 2차 지표의 결과 무효율과 재현 불량률에 해당합니다. 동시에, 종합 사업의 사업 특성으로 인해 산업이 많고, 공급이 시간과 공간에 따라 고르지 않게 분포되어 있으며, 교차하는 필터링 조건의 수가 많아도 빈 결과가 나타나 품질 점수 계산에 영향을 미칩니다. .
비즈니스 기대에 부응하는 빈 결과를 제거하고 품질 노이즈를 제거하는 방법 숨겨진 포인트 실현을 바탕으로 진단이 매우 중요해집니다. 빈 결과를 예로 들면, 주로 매개변수 진단, 데이터 진단, 링크 진단의 세 가지 측면에서 식별합니다. 데이터 진단은 온라인 필터링 조건에서 빈 결과가 나오는 경우 소스로 돌아가서 두 번째로 원본 데이터를 확인하고 하단 테이블의 데이터가 비어 있는지 쿼리하는 것을 말합니다. 실제로 하단 테이블에 해당 공급이 없으면 알람 없음 규칙이 적용되고 일정 기간 내에 현재 도시의 현재 산업에 관련 공급이 부족하고 알람 없음 유효 기간이 설정됩니다. 빈 결과는 품질평가점수 계산에 포함되지 않습니다.
하단 표에 공급이 있는 경우는 데이터 처리나 서비스 과정에 이상이 있어 회수가 불가능하다는 의미이며, 해당 오류 링크는 링크 진단을 통해 판단하여 해당 링크에 포함됩니다. 품질평가점수 계산. 규칙 일치 메커니즘(즉, 규칙 엔진)을 설정하는 방법이 진단 엔진의 핵심입니다. 오늘날에는 EasyRule, Drools, Zools, Aviator 등과 같은 규칙 엔진에 대한 다양한 선택 사항이 있습니다. 위의 분석에 따르면 진단 엔진은 요청 매개변수, 추천 링크 및 기본 데이터에 대한 규칙 진단을 수행할 수 있어야 합니다. 요청 매개변수와 추천 링크에 대한 진단은 메모리 매개변수를 통해 수행할 수 있지만, 데이터 진단에는 타사 스토리지의 정보가 필요하므로 일부는 맞춤화하고 개발해야 합니다. 인간 도구의 성숙도와 편의성을 고려하면 Aviator 표현 엔진이 더 적합합니다. 진단해야 할 내용에 맞추기 위해 설계된 표현 진단 프리미티브는 다음과 같습니다.
<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//参数诊断-原语表达</span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//是否符合一定参数的诊断原语</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cityId</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">include</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">string</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">split</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'1,2,3,4,5,6,7,8,9,10,16,17'</span>,<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">','</span>),<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">str</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cityId</span>))]<br><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//链路诊断-原语表达</span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//1、召回异常诊断原语</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallException</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recall</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#exception</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallException</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallException</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">''</span> ]<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//2、召回空无异常的诊断原语</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmpty</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recall</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#after</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmpty</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmpty</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">''</span> ]<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//3、召回不为空,过滤规则执行后为空的诊断原语</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmptyCode</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recall</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#after</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">predictFiltersEmptyCode</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">predict</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#after</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#filters</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">==</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">||</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">==</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">''</span>)<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">predictFiltersEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span>]<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//4、执行某一具体过滤规则后,导致无结果的匹配</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">filterEmptyCode</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">PredictStage</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#filter</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#after</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#_compSkRef</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">filterEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">filterEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">==</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'deleteItemByConditionalFilter'</span> ]<br><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//数据诊断-原语表达(判断底层是否有数据,若没有则为true,否则为false)</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">keys</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">keySpread</span>[<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">prefix</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">138_</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">ymtags_</span>][<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">crossOrder</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">city_$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cityId</span>}<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">_platform_$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">platformNo</span>}<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">_surgery_prj_$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">genericLvlIds</span>}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cnt</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cellar</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cellar</span>[<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">count</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">keys</span>}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cnt</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cnt</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">''</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">long</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cnt</span>) <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0</span> ]</span>
품질 포인트는 실시간 모니터링 및 운영 검토에 활용 가능하며, 팀원 적시에 변경 사항에 대한 후속 조치를 취해야 합니다. 일반적으로 회사의 일반적인 경보 시스템은 서비스 이름 세분성을 기반으로 경보 수신자를 구성합니다. 추천 시스템과 같은 플랫폼 서비스는 통일된 인터페이스를 통해 서비스를 제공하지만, 모델 전략은 서로 다른 학생들에 의해 유지되고, 산업 지식과 기업 간의 이해에는 일정한 한계점이 있습니다. 기본 브로드캐스트 유형의 알람은 쉽게 알람 폭풍을 일으킬 수 있으며, 모든 사람이 자신의 모듈 문제에 집중할 수 없으며 때로는 알람을 놓칠 수도 있습니다. 추적률(아래 그림 11)을 위해 기존 알람을 기반으로 추적 기능을 개발하여 특정 교통 수준의 알람을 전담 담당자에게 라우팅하고 추적 내용을 기록했습니다. 시기 적절한 통지 및 후속 검토를 용이하게 하기 위한 상태 흐름. 운영 측면에서는 데이터 리포트를 통해 품질 대시보드를 구축하고, 사업별 품질 변동을 정기적으로 검토하고 있습니다.
그림 11 알람 후속 프로세스
품질 점수 구현은 결과 null 비율에서 시작되며, 다음에 따라 재현율과 모델 예측 null 비율을 분해하여 수집합니다. 프로세스를 통해 연산자 무효율을 재배치하고 이를 비즈니스에 따라 플랫폼, 비즈니스, 형태, 프로젝트, 트래픽 위치 등 다차원으로 집계합니다. 거버넌스 조치 및 결과는 다음과 같은 측면으로 나뉩니다.
Null 결과 관리 및 식별 후 현재 코어 트래픽 null 비율은 0.01%입니다. 이는 코어 트래픽 요청의 99.99%가 결과를 얻었음을 의미하며 품질 점수를 구축하는 동안 시스템 발견률 및 경보 추적이 보장됩니다. . 진행률.
추천 시스템은 데이터의 가치를 전달합니다. 데이터가 자본화될 때만 이 가치는 지속 가능하고 가치를 더할 수 있습니다. 추천 시스템 품질 모델을 구축하는 과정도 사실 데이터 자산 축적에 관한 것입니다. 데이터가 수집되면 자산이 되며 일반적으로 흐름 가능, 측정 가능, 제어 가능, 부가가치의 네 가지 조건을 충족해야 합니다. 이 모든 내용은 4장의 계산 방법에서 다룹니다. 지표 운용 과정은 양질의 지식 자산을 축적하는 과정이기도 합니다. 소프트웨어 결함 모델이 최종 제품 납품 품질에 어떤 영향을 미칩니까? 이들 사이에 어떤 상관관계나 인과관계가 있습니까? 이 영향이 점수 계산에 명시적으로 포함됩니까, 아니면 간접적입니까? 품질 하위 작업 과정에서 우리는 마음 속에 품질 맵을 점차적으로 채워나가며 지표, 결함, 지표와 결함 간의 위상적 관계를 형성할 수 있습니다. 이는 품질을 자본화하는 프로세스입니다. 예를 들어, 추천 시스템의 비즈니스 관행을 통해 온라인 오류의 80%가 릴리스로 인해 발생하고 릴리스 오류의 80%가 데이터 릴리스로 인해 발생한다는 사실을 발견했습니다. 이는 데이터 릴리스 거버넌스를 통해 온라인 오류를 줄이는 데 도움이 될 수 있습니다.
사용성을 기반으로 계산 방식을 조정하고 다단계 추천 시스템 품질 점수를 구축했으며 다양한 추천 자료와 다양한 비즈니스 모듈로 확장한 것이 핵심입니다. 서비스 제공 외부 서비스의 "존재 여부"에서 "좋음 또는 나쁨"까지의 인지적 반복은 품질 개선 작업의 기초이기도 합니다. 후속 계획은 품질 모델의 계산 및 링크 적용 범위를 지속적으로 강화하는 것입니다. 반면에 우리는 품질 모델을 기반으로 더 많은 품질 거버넌스 작업을 수행할 것입니다. 향후 포함 사항은 다음과 같습니다.
위 내용은 Meituan 종합 비즈니스 추천 시스템의 품질 모델 및 실행의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!