Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

COMPSCI 753: Algorithms for Massive Data

Assignment 1: Locality-sensitive Hashing

2022

Learning Objectives: The goal of this assignment is to investigate Locality-sensitive      Hashing (LSH) framework for near neighbor search on real-world datasets. We have learned how to construct hash tables using multiple hash functions in LSH family for near neighbor    retrieval in sublinear time during weeks 2-3. By accomplishing this assignment, you will be    familiar with the following concepts:

    Hash Table Construction

    Hash Table Lookup

    Search Quality Evaluation

General Instruction:

This core component in this assignment is to construct a document retrieval system upon the LSH framework. This assignment consists of three parts. Please write a python program to complete the following components:

    Part I: Construct LSH Hash Tables for All News Articles

    Part II: Perform Nearest Neighbor Search for Query Dataset

    Part III: Investigate the Impact of the hash size (k). Plots the Search Quality in F1-score.

Datasets:

Let’s  consider  two  classes  of  BBC  news  articles:  tech  news  and  entertainment  news.  In bitvector_all .csv and bitvector_query .csv, each  news article  is a tab-separated line with three columns: <news_id\tword_features\tnews class>, where news_id is a unique string ID, word_features is a sequence of tab-separated binary values. Each entry in the word_features refers to the occurrence of a token. You can find their original new articles in text_all .csv and text_query .csv, accordingly in bbc .zip on Canvas.

Submission:

Please submit a single report ( .pdf) and the source code with detailed comments.( .py or .ipynb or .html) on Canvas by 23:59, Sunday 14 August 2022. The answer file must       contain your studentID, UPI and name.

Penalty Dates:

The assignment will not be accepted after the last penalty date unless there are special               circumstances (e.g., sickness with medical certificate, family/personal emergencies). Penalties will be calculated as follows as a percentage of the mark for the assignment.

●    By 23:59, Sunday 14 August 2022 (No penalty)

    By 23:59, Monday 15 August 2022 (25% penalty)

●    By 23:59, Tuesday 16 August 2022 (50% penalty)

Part I: Construct LSH Hash Tables for All News Articles [40 pts]

(a)  Load bitvector_all .csv and bitvector_query .csv . Construct a feature vector for each news article in the dataset. Please report the number of articles, and the number of features (n) for these two sets of data. [5 pts]

(b) Construct a family of MinHash functions in the LSH family by taking a prime p  n and for 0  <  a  < p, 0  ≤  b  < p with the number of tables (l=1o) and a tunable choice of hash size (k). Please report the family of MinHash functions you have generated with l=1o and k=2. [15 pts]

(c) Construct LSH hash tables using your hash functions with the number of tables (l=1o) and bucket size of your choice (m). Please report the collision distribution of the l hash tables with all documents hashed into m buckets using heatmap plot, where x-axis is m, y-axis is l=10, and the values at (m,l) refers to the number of colliding articles). [20 pts]

Part II: Nearest Neighbor Search [35 pts]

(a) Query the LSH tables and return the top- 10 articles that have the highest Jaccard similarities as the answer.  For each query document q  in our queries dataset  Q, firstly, find the set of articles Dq  that collide with q in at least one hash table. Compute Jaccard similarity between q and each article in Dq   . Please report the list of top- 10 articles with highest Jaccard similarity in descending order for each query q (i.e., four lists in total). The article with the highest Jaccard similarity  is  ranked at  1.  Each  row of the  list  is of the form <news_id> <Jaccard_sim> <class_label> for one query q. [20 pts]

(b) Compute Jaccard similarity for query q and all articles in the dataset. Please report the list of top-10 articles with highest Jaccard similarity in descending order for each query q (i.e., four lists in total).  [10 pts]

(c) Compare the query time in Part II(a) and Part II(b) per query in milliseconds and comment on their differences if any. [5 pts]

Part III: Search Quality Evaluation [25 pts]

(a)  Investigate  the  impact  of  the  hash  size  (k).  Given l=1o, for each value of hash size k compute the F1-score for each query q (F1q ) using the reported result from query q in Part II(a) as search results and Part II(b) as ground-truth. Take the average of F1-score across all queries at k. Please report:

1.   the     F1-score     plot     with     a     varying          k=[2,4,8] .     (Note:     F1  =  ∑  F1q ,

qQ

F1    =                   TP                   , where TP  (FP/FN) refers to the number of true positives (false

positives / false negatives) of the top-K similar articles in the ground-truth for the query q (K is capped at 10)

2.  the average query time in milliseconds with a varying  k=[2,4,8]. [20 pts]

(b)  Explain what  you  have  observed from  Part  III(a) and suggest how you would tune the number of hash size (k) in terms of higher F1-score and lesser query time, respectively?  [5 pts]