내가 설계하고있는 알고리즘에서 다음 단계가 무엇인지에 대한 도움이 필요합니다.
NDA로 인해 많은 것을 공개 할 수는 없지만 일반적이고 이해할 수 있도록 노력할 것입니다.
기본적으로 알고리즘의 여러 단계 후에 다음과 같은 결과가 있습니다.
내가 보유한 각 고객과 한 달 동안 수행하는 이벤트에 대해 첫 번째 단계에서 이벤트를 여러 범주로 클러스터링했습니다 (각 고객은 이벤트를 1에서 x, x는 1에서 25 사이의 범주로 구분하고, 일반적으로 첫 번째 범주는 다른 범주보다 이벤트 밀도가 더 높습니다).
각 범주와 고객에 대해 시간당 월의 이벤트를 집계하는 시계열을 만들었습니다 (이 이벤트가 수행되는시기의 패턴 가져 오기). 또한 남자가 적어도 하나의 이벤트를 수행하는 한 달 동안의 일 수 (30 일)와 하나 이상의 이벤트가있는 총 일수에 대해 하나 이상의 이벤트가있는 일 수를 기반으로 두 개의 정규화 변수를 사용하고 있습니다. 이벤트 (모든 클러스터 집계) 첫 번째는 고객이 한 달 동안 얼마나 활동적인지에 대한 비율을 제공하고 두 번째는 다른 고객과 카테고리를 비교합니다.
마지막 테이블은 다음과 같습니다
|*Identifier*| *firstCat* | *feature1* | *feature2* | { *(TIME SERIES)* }
CustomerID | ClusterID | DaysOver30 | DaysOverTotal | Events9AM Events10AM ...
xx | 1 | 0,69 | 0,72 | 0,2 0,13 ...
xx | 2 | 0,11 | 0,28 | 0,1 0,45 ...
xy | 1 | 0,23 | 0,88 | 0,00 0,60 ...
xy | 2 | 0,11 | 0,08 | 1,00 0,00 ...
xy | 3 | 0,10 | 0,04 | 0,40 0,60 ...
시계열 변수는 각 특정 범주의 일일 총 이벤트에 대한 백분율입니다 (이는 모든 변수를 더하는 각 행당 1이어야 함을 의미합니다). 예를 들어 시간 이벤트와 직렬 때문에 그런 식으로 그것을하는 이유는 0 0 0 1 0
과는 1 1 1 2 1
완전히 다른, 그리고 정상으로 표준화하여 유사한 결과를 줄 것이다. 그리고 서로 다른 범주 사이의 차이가 높기 때문에 시계열의 값을 다른 범주와 독립적으로 확인합니다.
내가 지금해야 할 일은 이러한 카테고리를 식별하는 것입니다 (1에서 x까지의 숫자는 1에서 25까지의 숫자 일 수 있음)는 태그 A, 태그 B 및 없음을 3 개의 태그로 식별합니다. 이러한 변수를 살펴보면 태그가 속한 태그를 수동으로 식별 할 수 있으며 아이디어는 가능한 한 수동으로 식별하고 분류 알고리즘을 사용하여 그로부터 배우고 모든 것을 식별하는 것입니다.
내 생각은 테이블에 여러 로지스틱 회귀를 사용하는 것이었지만 시계열의 모든 변수는 서로 연관되어 있으므로 서로 선형 관계이기 때문에 유클리드를 사용하는 시계열에서만 클러스터링 알고리즘을 사용하는 것이 좋습니다. 로지스틱 회귀 분석에서 서로 다른 패턴을 분류하고 결과와 다른 두 정규화 변수를 사용하는 거리입니다.
내가 가지고있는 다른 관심사는이 접근법이 다른 행과 독립적으로 각 행을 취한다는 것입니다. 이론적으로 각 고객에 대해 0 또는 1 태그 A, 0 또는 1 태그 B 만 있어야하며 나머지는 없음이어야합니다 (다른 팁은 정규화 기능에 크게 의존하기 때문에 일반적으로 태그 A와 B가 첫 번째 범주 사이에 있다는 것입니다 (총 일수가 높을 경우 시계열 패턴에 따라 행이 A 또는 B 일 가능성이 높음). .
편집 : 이것은 더 이상 문제가되지 않습니다. 태그 A 또는 기타와 태그 B 또는 다른 하나에 대해 두 가지 다른 로지스틱 회귀를 수행 할 것입니다. 결과 확률과 함께 각각 가장 좋은 것을 선택할 수 있습니다.
데이터 세트는 엄청 나며 최종 알고리즘은 SQL (Teradata)을 사용하여 적용해야하지만 로지스틱 회귀 계수 또는 클러스터링 중심을 얻으려면 샘플을 얻고 R을 사용하십시오.