da-analysis / asac_4_dataanalysis

ASAC 4기 Data Analysis Project
0 stars 1 forks source link

brand2vec, category2vec 만들기 #15

Open syleeie2310 opened 3 months ago

syleeie2310 commented 3 months ago

brand2vec, category2vec

mllib word2vec 알고리즘으로 계산하기

리뷰어의 시퀀스를 계산해서 학습 데이터에 넣으면 결과가 뿅 나옵니다.

syleeie2310 commented 2 months ago

@JIYUN0710 - brand2vec

https://tacademykr-daanalysis.cloud.databricks.com/?o=647747681770278#notebook/4338674024914098/command/4237968628707888

amazon_data = spark.sql(""" select * from asac.cellphone where 1=1 and date_column < 날짜 """)

grouped_df = ( amazon_data .groupby("reviewerID") .agg( F.sort_array(F.collect_list(F.struct("date_column", "brand"))) .alias("collected_list") ) .withColumn("sorted_list", F.col("collected_list.asin")) .drop("collected_list") )

word2Vec = Word2Vec(vectorSize=30, seed=2310, inputCol="sorted_list", outputCol="model", minCount=5, maxIter = 30, numPartitions = 16, windowSize = 5) ### 파라미터 (코어 X Executor) model = word2Vec.fit(grouped_df) model.write().overwrite().save('')

brand_vec = model.getVectors() brand_vec.createOrReplaceTempView("brand_vec") brand_vec & brand_vec = 유사도 (brand_vec 갯수 보고 너무 많으면 조절해서 브랜드가 5천개 = 5000 X 5000 = 25,000,000) 브랜드 명 입력하면 유사한 브랜드 나올 수 있도록 결과 만들기

-> 삼성 > 애플,...

syleeie2310 commented 2 months ago

만약 결과를 잘 보여주고 싶으면 tSNE 라이브러리로 결과 시각화 하면 끝

syleeie2310 commented 2 months ago

from pyspark.sql.functions import format_number as fmt model.findSynonyms("a", 2).select("word", fmt("similarity", 5).alias("similarity")).show()

JIYUN0710 commented 2 months ago

image image

위의 그림이 5개 이상 데이터만 활용한 것이고, 아래 그림은 전체다 활용했을 때, 카테고리별 t-sne 그래프입니다!

image -> 5개 이상 image -> 전체 애초에 카테고리별 개수 차이가 있어서 확실하게 나타나지 않습니다!

image 코사인 유사도 상위 10개, 하위 10개 했을때는, 결과는 잘 보입니다!

워드 투 벡을 더 학습해볼까요, 아니면 여기서 5개이상으로 픽스할까요?!

syleeie2310 commented 2 months ago

@JIYUN0710 님이 보고 좀더 좋은 방향으로 본인이 결정해보실래요? 둘다 머 비슷한거 같으니!! ㅎㅎ

syleeie2310 commented 2 months ago

이정도로 마무리해서 최종 발표자료에 잘 보여주기만 하심 될듯 해요!

JIYUN0710 commented 2 months ago

넵 알겠습니다 ㅎㅎ! 감사합니다!