2016-12-14 2 views
3

DataBricks에서 표준 스파크 HashingTF 예제를 시도했습니다.Spark HashingTF 결과 설명

아래의 이해 결과에는 차이가 있습니다. Please see the image numFeatures 경우에는 [0,5,9,17]가 해시 값과
[1,1,1,2] 주파수가 20 인 경우

[0,20,[0,5,9,17],[1,1,1,2]] 
[0,20,[2,7,9,13,15],[1,1,3,1,1]] 
[0,20,[4,6,13,15,18],[1,1,1,1,1]] 

이다.
(17)는 주파수가 2

이 있어야합니다 동안 2
9 (이 둘있다)
13, 15가 1 아마 내가 뭔가를 3 잃었습니다있다에게 있습니다. 자세한 설명 문서를 찾을 수 없습니다.

+1

스파크 클래스는 ** HashingTF **는 해시 트릭을 사용합니다. 원시 기능은 해시 기능을 적용하여 인덱스 (용어)에 매핑됩니다. 그런 다음 용어 빈도가 매핑 된 색인을 기반으로 계산됩니다. 이 접근법은 대규모 용어집에 대해 비용이 많이 드는 전역 용어 - 인덱스 맵을 계산할 필요가 없지만 해시 후 서로 다른 원시 기능이 같은 용어가 될 수있는 잠재적 인 해시 충돌을 겪습니다. –

답변

1

내 추측은 정확 :

  • 20-
  • 초리스트 0 인 선도 값 목록

이다

  • 제리스트 인덱스의리스트 인 벡터 크기 내부 표현의 유물.

    더 이상 배울 점은 없습니다.

  • +0

    크리켓 여러분, 답변 해 주셔서 감사합니다. 두 번째 값 목록 (주파수라고 가정). 주파수에서 비정상적인 값을 보지 않습니까? 어떻게 17이 빈도 2를 가질 수 있습니까? – mcelikkaya

    +1

    @mcelikkaya, [Cross Validated] (https://stats.stackexchange.com/questions/311260/understanding-and-interpreting-the-output-of-sparks-tf-idf-implementation/312259)에서이 질문을했습니다. # 312259) 도움이되는 경우에 대비하여 내 결과를 게시했습니다. 감사! –

    1

    mcelikkaya가 지적한 것처럼 출력 주파수는 예상 한 것과 다릅니다. 이는 소수의 기능 (이 경우 20 개)에 대한 해시 충돌로 인한 것입니다. 나는 20,000 입력 (설명을 위해) 데이터를 올렸 기능에 일부 단어를 추가 한 다음 올바른 주파수는 생산 :

    +-----+---------------------------------------------------------+-------------------------------------------------------------------------+--------------------------------------------------------------------------------------+ 
    |label|sentence             |words                 |rawFeatures                   | 
    +-----+---------------------------------------------------------+-------------------------------------------------------------------------+--------------------------------------------------------------------------------------+ 
    |0 |Hi hi hi hi I i i i i heard heard heard about Spark Spark|[hi, hi, hi, hi, i, i, i, i, i, heard, heard, heard, about, spark, spark]|(20000,[3105,9357,11777,11960,15329],[2.0,3.0,1.0,4.0,5.0])       | 
    |0 |I i wish Java could use case classes spark    |[i, i, wish, java, could, use, case, classes, spark]      |(20000,[495,3105,3967,4489,15329,16213,16342,19809],[1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0])| 
    |1 |Logistic regression models are neat      |[logistic, regression, models, are, neat]        |(20000,[286,1193,9604,13138,18695],[1.0,1.0,1.0,1.0,1.0])        | 
    +-----+---------------------------------------------------------+-------------------------------------------------------------------------+------------------------------------------------------------