나는 입력으로 문서 집합을 취하는 Spark의 MLLib로 NaiveBayes 분류자를 만들려고합니다.apache spark MLLib : 문자열 기능에 대해 레이블이 지정된 점을 만드는 방법은 무엇입니까?
나는 기능과 같은 몇 가지 (즉 저자, 명시 적 태그, 암시 적 키워드, 카테고리)을 넣고 싶지만 the documentation보고가하는LabeledPoint
이 두 배로 만 포함 즉 그것은
LabeledPoint[Double, List[Pair[Double,Double]]
처럼 보이는 것 같다
.
대신 나머지 코드에서 출력되는 내용은 LabeledPoint[Double, List[Pair[String,Double]]
입니다.
나는 내 자신 만의 전환을 만들 수 있지만 이상하게 보입니다. MLLib를 사용하여 어떻게 처리해야합니까?
대답은 HashingTF
클래스 (즉 해싱 기능)에 있다고 생각하지만 어떻게 작동하는지 이해할 수는 없지만 일종의 용량 값이 필요하지만 키워드 및 주제 목록은 효과적으로 무제한입니다 (또는 더 나은, 처음에 알려지지 않은).
감사합니다. 올바르게 이해한다면,'HashingTF'의'numFeatures'는 기본적으로 피쳐의 수를 주어진 최대 값에 묶는 데 사용되는'mod' 값으로 사용됩니까? 그렇다면 'Double.MAX_VALUE'가되어서는 안됩니까? 또는 다른 기능을 주어진 범위로 제한하고 교차 충돌을 제한 할 수 있도록 사용하는 것이 좋습니다. (즉, 1..N의 어떤 종류의 기능과 N..2N의 어떤 기능을 넣으면 같은 종류의 충돌은 있지만 종류는 다르다) – riffraff
예, 계산은'features [hash (feature) % numFeatures] + = 1'입니다. 생성 된 벡터는 대개 어떤 모델의 입력으로 사용되므로'Double.MAX_VALUE'를 사용하면 거대한 모델을 의미합니다. 해싱 트릭의 주된 동기 중 하나는 메모리 감소입니다. 당신은 분명히 당신이 제안하는 방식으로 기능을 만들 수는 있지만 그러한 접근 방식의 이점을 평가하는 방법을 잘 모르겠습니다. – mrmcgreg
아 물론 물론, 나는 희소 벡터를 생각하고 있었기 때문에 배열 크기를 고려하지 않았습니다. 당신의 도움을 주셔서 감사합니다! – riffraff