├── template.json ├── project ├── assembly.sbt └── pio-build.sbt ├── .gitignore ├── data ├── send_query.py ├── sample_producers.txt ├── sample_directors.txt ├── import_eventserver.py └── sample_actors.txt ├── src └── main │ └── scala │ ├── Serving.scala │ ├── Preparator.scala │ ├── Engine.scala │ ├── DataSource.scala │ └── Algorithm.scala ├── engine.json └── README.md /template.json: -------------------------------------------------------------------------------- 1 | {"pio": {"version": { "min": "0.9.2" }}} 2 | -------------------------------------------------------------------------------- /project/assembly.sbt: -------------------------------------------------------------------------------- 1 | addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2") 2 | -------------------------------------------------------------------------------- /project/pio-build.sbt: -------------------------------------------------------------------------------- 1 | addSbtPlugin("io.prediction" % "pio-build" % "0.9.0") 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | manifest.json 2 | target/ 3 | pio.log 4 | /pio.sbt 5 | .DS_Store 6 | .idea 7 | -------------------------------------------------------------------------------- /data/send_query.py: -------------------------------------------------------------------------------- 1 | """ 2 | Send sample query to prediction engine 3 | """ 4 | 5 | import predictionio 6 | engine_client = predictionio.EngineClient(url="http://localhost:8000") 7 | print engine_client.send_query({"items": [1, 10], "num": 5}) -------------------------------------------------------------------------------- /src/main/scala/Serving.scala: -------------------------------------------------------------------------------- 1 | package org.template 2 | 3 | import org.apache.predictionio.controller.LServing 4 | 5 | class Serving 6 | extends LServing[Query, PredictedResult] { 7 | 8 | override 9 | def serve(query: Query, 10 | predictedResults: Seq[PredictedResult]): PredictedResult = { 11 | predictedResults.head 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /engine.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "default", 3 | "description": "Default settings", 4 | "engineFactory": "org.template.SVDItemSimilarityEngine", 5 | "datasource": { 6 | "params" : { 7 | "appName": "SVDApp1" 8 | } 9 | }, 10 | "algorithms": [ 11 | { 12 | "name": "algo", 13 | "params": { 14 | "dimensions": 50, 15 | "yearWeight": 2.0, 16 | "durationWeight": 1.0, 17 | "normalizeProjection": true 18 | } 19 | } 20 | ] 21 | } -------------------------------------------------------------------------------- /src/main/scala/Preparator.scala: -------------------------------------------------------------------------------- 1 | package org.template 2 | 3 | import org.apache.predictionio.controller.PPreparator 4 | import org.apache.predictionio.data.storage.Event 5 | 6 | import org.apache.spark.SparkContext 7 | import org.apache.spark.SparkContext._ 8 | import org.apache.spark.rdd.RDD 9 | 10 | 11 | class Preparator extends PPreparator[TrainingData, PreparedData] { 12 | 13 | def prepare(sc: SparkContext, trainingData: TrainingData): PreparedData = { 14 | // new PreparedData(items = trainingData.items.sample(true, 0.06)) 15 | new PreparedData(items = trainingData.items) 16 | } 17 | } 18 | 19 | class PreparedData(val items: RDD[(String, Item)]) extends Serializable 20 | -------------------------------------------------------------------------------- /src/main/scala/Engine.scala: -------------------------------------------------------------------------------- 1 | package org.template 2 | 3 | import org.apache.predictionio.controller.EngineFactory 4 | import org.apache.predictionio.controller.Engine 5 | 6 | // Query most similar (top num) items to the given 7 | case class Query(items: Array[String], num: Int) extends Serializable 8 | 9 | case class PredictedResult(itemScores: Array[ItemScore]) extends Serializable 10 | 11 | case class ItemScore(item: String, score: Double) extends Serializable with 12 | Ordered[ItemScore] { 13 | def compare(that: ItemScore) = this.score.compare(that.score) 14 | } 15 | 16 | object SVDItemSimilarityEngine extends EngineFactory { 17 | def apply() = { 18 | new Engine( 19 | classOf[DataSource], 20 | classOf[Preparator], 21 | Map("algo" -> classOf[Algorithm]), 22 | classOf[Serving]) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /data/sample_producers.txt: -------------------------------------------------------------------------------- 1 | Abdisalam Aato 2 | J. J. Abrams 3 | Moustapha Akkad 4 | Judd Apatow 5 | Avi Arad 6 | Drew Barrymore 7 | Lawrence Bender 8 | Armyan Bernstein 9 | Albert R. Broccoli 10 | Mel Brooks 11 | Jerry Bruckheimer 12 | Sandra Bullock 13 | Tim Burton 14 | Mark Burnett 15 | Jim Carrey 16 | Yash Chopra 17 | Raymond Chow 18 | Ethan Coen 19 | Tom Cruise 20 | Dean Devlin 21 | Lorenzo di Bonaventura 22 | Leonardo DiCaprio 23 | Michael Douglas 24 | Eric Eisner 25 | Nora Ephron 26 | Robert Evans 27 | Chantal Feghali 28 | Buzz Feitshans 29 | Ted Field 30 | Peter Fonda 31 | Mel Gibson 32 | Richard N. Gladstein 33 | Charles Gordon 34 | Brian Grazer 35 | Matt Groening 36 | Paul Haggis 37 | Tom Hanks 38 | Katherine Heigl 39 | Nancy Heigl 40 | David Heyman 41 | Peter Jackson 42 | Shintaro Katsu 43 | Howard Kazanjian 44 | Kathleen Kennedy 45 | Alexander Korda 46 | Stanley Kubrick 47 | Gary Kurtz 48 | J. F. Lawton 49 | Spike Lee 50 | George Lucas 51 | Branko Lustig 52 | Charlie Lyons 53 | Eric Manes 54 | Frank Marshall 55 | W. David McBrayer 56 | Rick McCallum 57 | Aaron Meyerson 58 | Arnon Milchan 59 | Walter Mirisch 60 | Hayao Miyazaki 61 | Scott Mosier -------------------------------------------------------------------------------- /data/sample_directors.txt: -------------------------------------------------------------------------------- 1 | Steven Spielberg 2 | Martin Scorsese 3 | Ridley Scott 4 | John Woo 5 | Christopher Nolan 6 | Tim Burton 7 | Hayao Miyazaki 8 | Peter Jackson 9 | Quentin Tarantino 10 | James Cameron 11 | Clint Eastwood 12 | David Fincher 13 | Francis Ford 14 | Brian De 15 | Robert Zemeckis 16 | Andy Wachowski 17 | Lana Wachowski 18 | Guillermo del 19 | Guy Ritchie 20 | Oliver Stone 21 | Robert Rodriguez 22 | Stanley Kubrick 23 | Yimou Zhang 24 | Lee Unkrich 25 | Akira Kurosawa 26 | Gore Verbinski 27 | Matthew Vaughn 28 | Alfred Hitchcock 29 | John Lasseter 30 | Martin Campbell 31 | George Lucas 32 | Michael Mann 33 | Kevin Smith 34 | Richard Donner 35 | Paul Greengrass 36 | Luc Besson 37 | Tony Scott 38 | Sam Mendes 39 | Paul Thomas 40 | David Lean 41 | Xiaogang Feng 42 | Prachya Pinkaew 43 | Joel Coen 44 | Edgar Wright 45 | Frank Darabont 46 | Mel Gibson 47 | Mamoru Oshii 48 | Steven Soderbergh 49 | Wai-Keung 50 | J.J 51 | Brad Bird 52 | Henry Selick 53 | Satoshi Kon 54 | Michael Bay 55 | Louis Leterrier 56 | Alan Mak 57 | Jon Favreau 58 | Bryan Singer 59 | Joss Whedon 60 | Gary Trousdale 61 | Kirk Wise 62 | Marc Forster 63 | Edward Zwick 64 | Andrew Adamson 65 | Terence Young 66 | Sam Raimi 67 | Zack Snyder 68 | James Mangold 69 | Milos Forman 70 | Paul Verhoeven 71 | Baz Luhrmann 72 | Je-kyu 73 | Nicholas Meyer 74 | Ethan Coen 75 | David Cronenberg 76 | Barry Levinson 77 | Danny Boyle 78 | Andrew Stanton 79 | Marc Webb 80 | Doug Liman 81 | Tomas Alfredson 82 | Ron Howard 83 | Takashi Miike 84 | Stephen Frears 85 | Sylvester Stallone 86 | Roger Spottiswoode 87 | Tom Shadyac 88 | John G 89 | George Miller 90 | Chan-wook 91 | Pete Docter 92 | John Sturges 93 | Roland Emmerich 94 | Shekhar Kapur 95 | Alex Proyas 96 | Ben Affleck 97 | Ang Lee 98 | Bernardo Bertolucci 99 | Tom Tykwer 100 | Shane Meadows -------------------------------------------------------------------------------- /src/main/scala/DataSource.scala: -------------------------------------------------------------------------------- 1 | package org.template 2 | 3 | import org.apache.predictionio.controller.PDataSource 4 | import org.apache.predictionio.controller.EmptyEvaluationInfo 5 | import org.apache.predictionio.controller.EmptyActualResult 6 | import org.apache.predictionio.controller.Params 7 | import org.apache.predictionio.data.store.PEventStore 8 | 9 | import org.apache.spark.SparkContext 10 | import org.apache.spark.SparkContext._ 11 | import org.apache.spark.rdd.RDD 12 | 13 | import grizzled.slf4j.Logger 14 | 15 | case class DataSourceParams(appName: String) extends Params 16 | 17 | class DataSource(val dsp: DataSourceParams) 18 | extends PDataSource[TrainingData, 19 | EmptyEvaluationInfo, Query, EmptyActualResult] { 20 | 21 | @transient lazy val logger = Logger[this.type] 22 | 23 | override 24 | def readTraining(sc: SparkContext): TrainingData = { 25 | 26 | // create a RDD of (entityID, Item) 27 | val itemsRDD: RDD[(String, Item)] = PEventStore.aggregateProperties( 28 | appName = dsp.appName, 29 | entityType = "item" 30 | )(sc).map { case (entityId, properties) => 31 | val item = try { 32 | val title: String = properties.get[String]("title") 33 | val producer: String = properties.get[String]("producer") 34 | val director: String = properties.get[String]("director") 35 | val genres: Array[String] = properties.get[Array[String]]("genres") 36 | val actors: Array[String] = properties.get[Array[String]]("actors") 37 | val year: Int = properties.get[Int]("year") 38 | val duration: Int = properties.get[Int]("duration") 39 | 40 | Item(entityId, title, year, duration, genres, producer, director, 41 | actors) 42 | } catch { 43 | case e: Exception => { 44 | logger.error(s"Failed to get properties ${properties} of" + 45 | s" item ${entityId}. Exception: ${e}.") 46 | throw e 47 | } 48 | } 49 | (entityId, item) 50 | }.cache() 51 | 52 | new TrainingData(items = itemsRDD) 53 | } 54 | } 55 | 56 | case class Item(item: String, title: String, year: Int, duration: Int, 57 | genres: Array[String], producer: String, director: 58 | String, actors: Array[String]) 59 | 60 | class TrainingData(val items: RDD[(String, Item)]) extends Serializable { 61 | override def toString = { 62 | s"items: [${items.count()}] (${items.take(2).toList}...)" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /data/import_eventserver.py: -------------------------------------------------------------------------------- 1 | """ 2 | Import sample data for complementary purchase engine 3 | """ 4 | 5 | import predictionio 6 | import argparse 7 | import random 8 | import csv 9 | import re 10 | 11 | SEED = 12 12 | NUMSAMPLES = 1000 13 | 14 | def prepare_data(): 15 | random.seed(SEED) 16 | res = [] 17 | with open("sample_actors.txt") as f: 18 | actors = [actor for actor in f.read().split("\n") if actor != ""] 19 | f.close() 20 | 21 | with open("sample_producers.txt") as f: 22 | producers = [producer for producer in f.read().split("\n") 23 | if producer != ""] 24 | f.close() 25 | 26 | with open("sample_directors.txt") as f: 27 | directors = [director for director in f.read().split("\n") 28 | if director != ""] 29 | f.close() 30 | 31 | with open("sample_movies.csv", "rb") as csvfile: 32 | reader = csv.reader(csvfile, delimiter=',') 33 | for row in reader: 34 | data = {} 35 | title = row[1] 36 | genres = row[2].split("|") 37 | data["genres"] = genres 38 | data["title"] = title 39 | data["id"] = row[0] 40 | 41 | match_year = re.search(".+(\d\d\d\d)", title) 42 | if match_year: 43 | year = match_year.group(1) 44 | data["year"] = int(year) 45 | # Now magic starts 46 | data["producer"] = random.sample(producers, 1).pop() 47 | data["director"] = random.sample(directors, 1).pop() 48 | data["duration"] = random.randrange(72, 180, 1) 49 | num_actors = random.randrange(7, 25, 1) 50 | data["actors"] = random.sample(actors, num_actors) 51 | res.append(data) 52 | f.close() 53 | return res 54 | 55 | 56 | def import_events(client, data): 57 | count = 0 58 | 59 | for el in data[0:NUMSAMPLES]: 60 | count += 1 61 | print("%d / %d" % (count, NUMSAMPLES)) 62 | client.create_event( 63 | event="$set", 64 | entity_type="item", 65 | entity_id=el["id"], 66 | properties=el) 67 | 68 | print("%s events are imported." % count) 69 | 70 | 71 | def main(): 72 | parser = argparse.ArgumentParser( 73 | description="Import sample data for similar items by attributes engine") 74 | parser.add_argument('--access_key', default='invald_access_key') 75 | parser.add_argument('--url', default="http://localhost:7070") 76 | 77 | args = parser.parse_args() 78 | print(args) 79 | 80 | client = predictionio.EventClient(access_key=args.access_key, url=args.url, 81 | threads=4, qsize=100) 82 | 83 | data = prepare_data() 84 | import_events(client, data) 85 | 86 | 87 | if __name__ == '__main__': 88 | main() -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SVD Item Similarity Engine Template 2 | 3 | Template to calculate similarity between items based on their attributes. 4 | Attributes can be either numeric or categorical in the last case it will be 5 | encoded using one-hot encoder. Algorithm uses SVD in order to reduce data 6 | dimensionality. Cosine similarity is now implemented but can be easily 7 | extended to other similarity measures. 8 | 9 | ## Overview 10 | 11 | This template is a simple example of unsupervised learning algorithm 12 | implementation. Given items with their attributes of numeric and string types 13 | (like movie release year, duration, director, actors, etc.) we can measure 14 | similarity between items based on some metric (cosine similarity in this 15 | example). 16 | 17 | Every item is represented as a set of attributes. Attributes can be of type 18 | String, Array of Strings and Int. Items are transformed into vectors with 19 | categorical variables encoded using one-hot encoder 20 | (http://en.wikipedia.org/wiki/One-hot) i.e. every String and Array of Strings 21 | attribute is transformed to number of binary attributes (facts about item) 22 | like "Is John Carpenter the director of the movie?". 23 | So item vector length is equal to number of possible values of all categorical 24 | variables plus the number of numeric variables. 25 | 26 | Given such encoding of data numeric and categorical variables are not 27 | equivalently contribute into resulting vector (the problem is that there is 28 | no unified method to merge categorical and numeric attributes.). To fix this 29 | issue in some extent weights of numeric variables are used in this example. 30 | 31 | Then vectors are normalized. So that their dot product produces cosine of the 32 | angle between vectors or in other words item-attribute matrix multiplied to 33 | itself transposed produces cosine similarity matrix (item to item). If we 34 | take into consideration that the number of attributes and items can be very 35 | big, then such matrix can be very big as well and it can be computationally 36 | difficult to calculate it, so dimensionality reduction should be used. In 37 | this example Singular value decomposition 38 | (https://spark.apache.org/docs/latest/mllib-dimensionality-reduction.html#singular-value-decomposition-svd) is used. So we need to save one 39 | matrix of size M x K, M is the number of items and K is the number of 40 | dimensions we're going to use. 41 | 42 | Data is generated from Movielens database. Genre and year is real, actor 43 | list, director, producer and film duration in minutes are randomly generated 44 | for demo purposes. 45 | 46 | ## Engine parameters 47 | 48 | This example has four parameters to tune. The main is __dimensions__, this 49 | parameter should be less or equal to min(number of items, item vector 50 | dimension) and represents dimensionality of the space we are projecting our 51 | vectorized items. This parameter should be chosen so that our model could 52 | grasp the data (similarity between items) from one side and were not very 53 | excessive from the other side. After training algorithm outputs top singular 54 | values and the worst case estimation of captured variability of data. Worst 55 | case estimation is obtained with supposition that all the left singular 56 | values (which are not calculated) are equal to the smallest one, the closer 57 | to 100% this value is the better. 58 | 59 | The two other parameters are __yearWeight__ and __durationWeight__. They 60 | represent weight of numeric attributes year and duration respectively. These 61 | parameters should be selected experimentally so that model would represent 62 | better similarity between items. No unified recipe can be offered for 63 | selecting them, but some intuition can be used. As both year and duration are 64 | scaled to zero mean and unit standard deviation their weights represent their 65 | relative importance to any other attribute. 66 | 67 | The last parameter is __normalizeProjection__ (true / false). SVD with 68 | __dimensions__ < rank of item-attribute matrix is the approximation of 69 | the original matrix, so all vectors will be projections of original vectors 70 | into space with reduced dimensionality (__dimensions__). 71 | In this case dot product of vectors will be less then the cosine of the angle 72 | between them. To fix this it is good to normalize vectors after projection is 73 | done. It is not very necessary if singular values decay rate is high, in such 74 | case not much of information is lost due to projection. 75 | 76 | ## Output during train 77 | SVD is a technique to reduce data dimensionality, the idea is to describe in the 78 | first place the most considerable peculiarities and then gradually less and 79 | less considerable. The importance of every dimension (__dimensions__ 80 | parameter) is given by correspondent singular value, SVD algorithm works so 81 | that highest value is found first, then next highest and so on. The sum of 82 | squares of all singular values is equal to data variance, so the more 83 | __dimensions__ you use and the higher their correspondent singular values the 84 | more info about data the model preserves. 85 | 86 | After training is done algorithm outputs singular values and worst case 87 | estimation of grasped variability, the higher last tally is the better. It's 88 | calculated in very simple manner -- in worst case all singular values left 89 | are considered equal to smallest of calculated by algorithm (actually they 90 | should be a little bit smaller even for completely random data, but this is 91 | the best estimation we can have without additional assumptions), having this 92 | we can calculate how much of variability in such worst case has our model 93 | "described". 94 | 95 | If worst case estimation of grasped variability is low, then it's wise to 96 | increase the number of __dimensions__. But from the other side the more 97 | __dimensions__ you use the longer train and prediction will work. 98 | 99 | It's good to consider last singular values in output too. If their decay rate 100 | is slow i.e. every next value is very close to previous meanwhile worst case 101 | estimation of grasped variability is low, then the algorithm 102 | can not find system in data and it can mean that attributes do not describe 103 | similarity of items (you'll give such situation with random data, so this 104 | hallmark is a sign of that algorithm can not distinguish your data from random). 105 | 106 | 107 | ## Versions 108 | 109 | ### v0.0.5 110 | 111 | ## Usage 112 | 113 | ### Event Data Requirements 114 | 115 | By default, the template requires the following events to be collected: 116 | 117 | - item $set event, which sets the attributes of the item 118 | 119 | ### Input Query 120 | 121 | - array of items 122 | - number of results 123 | 124 | ### Output PredictedResult 125 | 126 | - List of items with similarity score 127 | 128 | 129 | ## Import sample data 130 | 131 | ``` 132 | $ cd data 133 | $ python import_eventserver.py --access_key 134 | ``` 135 | 136 | The sample data for training is generated from four files: 137 | 138 | - sample_actors.txt 139 | - sample_directors.txt 140 | - sample_producers.txt 141 | - sample_movies.txt 142 | 143 | ## Build, train, deploy 144 | 145 | As for most prediction.io templates the workflow is standard: 146 | 147 | ``` 148 | $ pio build && pio train && pio deploy 149 | ``` 150 | 151 | ## Query 152 | 153 | ``` 154 | $ cd data 155 | $ python send_query.py 156 | ``` 157 | -------------------------------------------------------------------------------- /src/main/scala/Algorithm.scala: -------------------------------------------------------------------------------- 1 | package org.template 2 | 3 | import org.apache.predictionio.controller.{P2LAlgorithm, Params} 4 | import org.apache.predictionio.data.storage.BiMap 5 | 6 | import org.apache.spark.SparkContext 7 | import org.apache.spark.SparkContext._ 8 | import org.apache.spark.mllib.feature.{Normalizer, StandardScaler} 9 | import org.apache.spark.mllib.linalg.distributed.RowMatrix 10 | import org.apache.spark.mllib.linalg._ 11 | import org.apache.spark.rdd.RDD 12 | 13 | import grizzled.slf4j.Logger 14 | 15 | import scala.reflect.ClassTag 16 | 17 | class Model(val itemIds: BiMap[String, Int], val projection: DenseMatrix) 18 | extends Serializable { 19 | override def toString = s"Items: ${itemIds.size}" 20 | } 21 | 22 | case class AlgorithmParams(dimensions: Int, yearWeight: Double, 23 | durationWeight: Double, normalizeProjection: 24 | Boolean) extends Params 25 | 26 | 27 | class Algorithm(val ap: AlgorithmParams) 28 | // extends PAlgorithm if Model contains RDD[] 29 | extends P2LAlgorithm[PreparedData, Model, Query, PredictedResult] { 30 | 31 | @transient lazy val logger = Logger[this.type] 32 | 33 | private def encode(data: RDD[Array[String]]): RDD[Vector] = { 34 | val dict = BiMap.stringLong(data.flatMap(x => x)) 35 | val len = dict.size 36 | 37 | data.map { sample => 38 | val indexes = sample.map(dict(_).toInt).sorted 39 | Vectors.sparse(len, indexes, Array.fill[Double](indexes.length)(1.0)) 40 | } 41 | } 42 | 43 | // [X: ClassTag] - trick to have multiple definitions of encode, they both 44 | // for RDD[_] 45 | private def encode[X: ClassTag](data: RDD[String]): RDD[Vector] = { 46 | val dict = BiMap.stringLong(data) 47 | val len = dict.size 48 | 49 | data.map { sample => 50 | val index = dict(sample).toInt 51 | Vectors.sparse(len, Array(index), Array(1.0)) 52 | } 53 | } 54 | 55 | private def merge(v1: RDD[Vector], v2: RDD[Vector]): RDD[Vector] = { 56 | v1.zip(v2) map { 57 | case (SparseVector(leftSz, leftInd, leftVals), SparseVector(rightSz, 58 | rightInd, rightVals)) => 59 | Vectors.sparse(leftSz + rightSz, leftInd ++ rightInd.map(_ + leftSz), 60 | leftVals ++ rightVals) 61 | case (SparseVector(leftSz, leftInd, leftVals), DenseVector(rightVals)) => 62 | Vectors.sparse(leftSz + rightVals.length, leftInd ++ (0 until rightVals 63 | .length).map(_ + leftSz), leftVals ++ rightVals) 64 | } 65 | } 66 | 67 | 68 | private def transposeRDD(data: RDD[Vector]) = { 69 | val len = data.count().toInt 70 | 71 | val byColumnAndRow = data.zipWithIndex().flatMap { 72 | case (rowVector, rowIndex) => { rowVector match { 73 | case SparseVector(_, columnIndices, values) => 74 | values.zip(columnIndices) 75 | case DenseVector(values) => 76 | values.zipWithIndex 77 | }} map { 78 | case(v, columnIndex) => columnIndex -> (rowIndex, v) 79 | } 80 | } 81 | 82 | val byColumn = byColumnAndRow.groupByKey().sortByKey().values 83 | 84 | val transposed = byColumn.map { 85 | indexedRow => 86 | val all = indexedRow.toArray.sortBy(_._1) 87 | val significant = all.filter(_._2 != 0) 88 | Vectors.sparse(len, significant.map(_._1.toInt), significant.map(_._2)) 89 | } 90 | 91 | transposed 92 | } 93 | 94 | def train(sc: SparkContext, data: PreparedData): Model = { 95 | val itemIds = BiMap.stringInt(data.items.map(_._1)) 96 | 97 | /** 98 | * Encode categorical vars 99 | * We use here one-hot encoding 100 | */ 101 | 102 | val categorical = Seq(encode(data.items.map(_._2.director)), 103 | encode(data.items.map(_._2.producer)), 104 | encode(data.items.map(_._2.genres)), 105 | encode(data.items.map(_._2.actors))) 106 | 107 | /** 108 | * Transform numeric vars. 109 | * In our case categorical attributes are binary encoded. Numeric vars are 110 | * scaled and additional weights are given to them. These weights should be 111 | * selected from some a-priory information, i.e. one should check how 112 | * important year or duration for model quality and then assign weights 113 | * accordingly 114 | */ 115 | 116 | val numericRow = data.items.map(x => Vectors.dense(x._2.year, x._2 117 | .duration)) 118 | val weights = Array(ap.yearWeight, ap.durationWeight) 119 | val scaler = new StandardScaler(withMean = true, 120 | withStd = true).fit(numericRow) 121 | val numeric = numericRow.map(x => Vectors.dense(scaler.transform(x). 122 | toArray.zip(weights).map { case (x, w) => x * w })) 123 | 124 | /** 125 | * Now we merge all data and normalize vectors so that they have unit norm 126 | * and their dot product would yield cosine between vectors 127 | */ 128 | 129 | val normalizer = new Normalizer(p = 2.0) 130 | val allData = normalizer.transform((categorical ++ Seq(numeric)).reduce(merge)) 131 | 132 | /** 133 | * Now we need to transpose RDD because SVD better works with ncol << nrow 134 | * and it's often the case when number of binary attributes is much greater 135 | * then the number of items. But in the case when the number of items is 136 | * more than number of attributes it is better not to transpose. In such 137 | * case U matrix should be used 138 | */ 139 | 140 | 141 | val transposed = transposeRDD(allData) 142 | 143 | val mat: RowMatrix = new RowMatrix(transposed) 144 | 145 | // Make SVD to reduce data dimensionality 146 | val svd: SingularValueDecomposition[RowMatrix, Matrix] = mat.computeSVD( 147 | ap.dimensions, computeU = false) 148 | 149 | val V: DenseMatrix = new DenseMatrix(svd.V.numRows, svd.V.numCols, 150 | svd.V.toArray) 151 | 152 | val projection = Matrices.diag(svd.s).multiply(V.transpose) 153 | 154 | /* 155 | // This is an alternative code for the case when data matrix is not 156 | // transposed (when the number of items is much bigger then the number 157 | // of binary attributes 158 | 159 | val mat: RowMatrix = new RowMatrix(allData) 160 | 161 | val svd: SingularValueDecomposition[RowMatrix, Matrix] = mat.computeSVD( 162 | ap.dimensions, computeU = true) 163 | 164 | val U: DenseMatrix = new DenseMatrix(svd.U.numRows.toInt, svd.U.numCols 165 | .toInt, svd.U.rows.flatMap(_.toArray).collect(), isTransposed = true) 166 | 167 | val projection = Matrices.diag(svd.s).multiply(U.transpose) 168 | */ 169 | 170 | svd.s.toArray.zipWithIndex.foreach { case (x, y) => 171 | logger.info(s"Singular value #$y = $x") } 172 | 173 | val maxRank = Seq(mat.numCols(), mat.numRows()).min 174 | val total = svd.s.toArray.map(x => x * x).reduce(_ + _) 175 | val worstLeft = svd.s.toArray.last * svd.s.toArray.last * (maxRank - svd.s.size) 176 | val variabilityGrasped = 100 * total / (total + worstLeft) 177 | 178 | logger.info(s"Worst case variability grasped: $variabilityGrasped%") 179 | 180 | val res = if(ap.normalizeProjection) { 181 | val sequentionalizedProjection = for (j <- 0 until projection.numCols) 182 | yield Vectors.dense((for (i <- 0 until projection.numRows) yield 183 | projection(i, j)).toArray) 184 | 185 | val normalizedProjectionSeq = sequentionalizedProjection.map(x => 186 | normalizer.transform(x)) 187 | 188 | val normalizedProjection = new DenseMatrix(projection.numRows, projection 189 | .numCols, normalizedProjectionSeq.flatMap(x => x.toArray).toArray) 190 | 191 | new Model(itemIds, normalizedProjection) 192 | } else { 193 | 194 | new Model(itemIds, projection) 195 | } 196 | 197 | res 198 | } 199 | 200 | def predict(model: Model, query: Query): PredictedResult = { 201 | /** 202 | * Here we compute similarity to group of items in very simple manner 203 | * We just take top scored items for all query items 204 | 205 | * It is possible to use other grouping functions instead of max 206 | */ 207 | 208 | val result = query.items.flatMap { itemId => 209 | model.itemIds.get(itemId).map { j => 210 | val d = for(i <- 0 until model.projection.numRows) yield model.projection(i, j) 211 | val col = model.projection.transpose.multiply(new DenseVector(d.toArray)) 212 | for(k <- 0 until col.size) yield new ItemScore(model.itemIds.inverse 213 | .getOrElse(k, default="NA"), col(k)) 214 | }.getOrElse(Seq()) 215 | }.groupBy { 216 | case(ItemScore(itemId, _)) => itemId 217 | }.map(_._2.max).filter { 218 | case(ItemScore(itemId, _)) => !query.items.contains(itemId) 219 | }.toArray.sorted.reverse.take(query.num) 220 | 221 | if(result.isEmpty) logger.info(s"No prediction for items ${query.items}.") 222 | PredictedResult(result) 223 | } 224 | } 225 | -------------------------------------------------------------------------------- /data/sample_actors.txt: -------------------------------------------------------------------------------- 1 | Bud Abbott 2 | Paula Abdul 3 | Harry Ackerman 4 | Art Acord 5 | Roy Acuff 6 | Bryan Adams 7 | Lou Adler 8 | Stella Adler 9 | Renee Adoree 10 | Antonio Aguilar 11 | Pepe Aguilar 12 | Christina Aguilera 13 | Brian Aherne 14 | Philip Ahn 15 | Licia Albanese 16 | Eddie Albert 17 | Frank Albertson 18 | Jack Albertson 19 | Ben Alexander 20 | Muhammad Ali 21 | Debbie Allen 22 | Fred Allen 23 | Gracie Allen 24 | Rex Allen 25 | Steve Allen 26 | Tim Allen 27 | Kirstie Alley 28 | Fran Allison 29 | June Allyson 30 | Herb Alpert 31 | Don Alvarado 32 | Don Ameche 33 | Adrienne Ames 34 | Morey Amsterdam 35 | Broncho Billy Anderson 36 | Eddie Anderson 37 | Leroy Anderson 38 | Marian Anderson 39 | Mary Anderson 40 | Julie Andrews 41 | Heather Angel 42 | Jennifer Aniston 43 | Paul Anka 44 | Michael Ansara 45 | Ray Anthony 46 | Roscoe "Fatty" Arbuckle 47 | Armand "Army" Archerd 48 | Eve Arden 49 | Samuel Z. Arkoff 50 | Richard Arlen 51 | George Arliss 52 | Louis Armstrong 53 | Desi Arnaz 54 | James Arness 55 | Eddy Arnold 56 | Edward Arnold 57 | Cliff Arquette 58 | Jean Arthur 59 | Dorothy Arzner 60 | Edward Asner 61 | Fred Astaire 62 | Nils Asther 63 | Mary Astor 64 | Gene Austin 65 | Gene Autry 66 | Dan Avey 67 | Agnes Ayres 68 | Lew Ayres 69 | Lauren Bacall 70 | Jim Backus 71 | James Bacon 72 | Kevin Bacon 73 | Lloyd Bacon 74 | King Baggot 75 | Jack Bailey 76 | Pearl Bailey 77 | Fay Bainter 78 | Anita Baker 79 | Art Baker 80 | Carroll Baker 81 | Kenny Baker 82 | Phil Baker 83 | Rick Baker 84 | Simon Baker 85 | Alec Baldwin 86 | Lucille "Lucy" Ball 87 | Anne Bancroft 88 | Antonio Banderas 89 | Tallulah Brockman Bankhead 90 | Vilma Banky 91 | Theda Bara 92 | Javier Bardem 93 | Lynn Bari 94 | Bob Barker 95 | Binnie Barnes 96 | Roseanne Barr 97 | Pepe Barreto 98 | Mona Barrie 99 | Wendy Barrie 100 | Bessie Barriscale 101 | Blue Barron 102 | Gene Barry 103 | Drew Barrymore 104 | Ethel Barrymore 105 | John Barrymore 106 | John D. Barrymore 107 | Lionel Barrymore 108 | Richard Barthelmess 109 | Freddie Bartholomew 110 | Billy Barty 111 | Richard Basehart 112 | Count Basie 113 | Kim Basinger 114 | Lina Basquette 115 | Angela Bassett 116 | Anne Baxter 117 | Dr. Frank C. Baxter 118 | Les Baxter 119 | Warner Baxter 120 | Beverly Bayne 121 | The Beatles 122 | William Beaudine 123 | Noah Jr. Beery 124 | Wallace Beery 125 | Brian Beirne 126 | Harry Belafonte 127 | Madge Bellamy 128 | Ralph Bellamy 129 | Donald P. Bellisario 130 | John Belushi 131 | Bea Benaderet 132 | Robert Benchley 133 | William Bendix 134 | Tex Beneke 135 | Annette Bening 136 | Belle Bennett 137 | Constance Bennett 138 | Joan Bennett 139 | Tony Bennett 140 | Jack Benny 141 | George Benson 142 | John Beradino 143 | Edgar Bergen 144 | Ingrid Bergman 145 | Milton Berle 146 | Irving Berlin 147 | Chris Berman 148 | Ernani Bernardi 149 | Sarah Bernhardt 150 | Ben "The Old Maestro" Bernie 151 | Elmer Bernstein 152 | Leonard "Lenny" Bernstein 153 | Chuck Berry 154 | Halle Berry 155 | Valerie Bertinelli 156 | Bernardo Bertolucci 157 | Edna Best 158 | Charles Bickford 159 | E. Power Biggs 160 | Theodore Bikel 161 | Rodney Bingenheimer 162 | Constance Binney 163 | Clint Black 164 | Sidney Blackmer 165 | Carlyle Blackwell 166 | Mel Blanc 167 | Cate Blanchett 168 | Joan Blondell 169 | Orlando Bloom 170 | Monte Blue 171 | Ann Blyth 172 | Betty Blythe 173 | Eleanor Boardman 174 | Andrea Bocelli 175 | Humphrey "Bogey" Bogart 176 | Mary Boland 177 | John Boles 178 | Richard Boleslawski 179 | Ray Bolger 180 | Michael Bolton 181 | Ford Bond 182 | Ward Bond 183 | Beulah Bondi 184 | Pat Boone 185 | Shirley Booth 186 | Olive Borden 187 | Ernest Borgnine 188 | Frank Borzage 189 | Hobart Bosworth 190 | Clara Bow 191 | John Bowers 192 | Major Bowes 193 | David Bowie 194 | Bill Boyd 195 | Jimmy Boyd 196 | William Boyd 197 | Charles Boyer 198 | Eddie Bracken 199 | Ray Bradbury 200 | Terry Bradshaw 201 | Alice Brady 202 | Eric Braeden 203 | Marlon Brando 204 | Tom Breneman 205 | Walter Brennan 206 | Evelyn Brent 207 | George Brent 208 | Teresa Brewer 209 | David Brian 210 | Mary Brian 211 | Fanny "Baby Snooks" Brice 212 | Beau Bridges 213 | Jeff Bridges 214 | Lloyd Bridges 215 | Ray Briem 216 | Bernie Brillstein 217 | Elton Britt 218 | Barbara Britton 219 | Albert "Cubby" Broccoli 220 | Matthew Broderick 221 | James Brolin 222 | Charles Bronson 223 | Hillary Brooke 224 | Garth Brooks 225 | Mel Brooks 226 | Richard Brooks 227 | Pierce Brosnan 228 | Cecil Brown 229 | Clarence Brown 230 | Harry Joe Brown 231 | James Brown 232 | Joe E. Brown 233 | Johnny Mack Brown 234 | Les Brown 235 | Tom Brown 236 | Vanessa Brown 237 | Tod Browning 238 | Dave Brubeck 239 | Jerry Bruckheimer 240 | Yul Brynner 241 | Sandra Bullock 242 | John Bunny 243 | Billie Burke 244 | Sonny Burke 245 | Carol Burnett 246 | Mark Burnett 247 | Smiley Burnette 248 | Bob "Bazooka" Burns 249 | George Burns 250 | Raymond Burr 251 | Bill Burrud 252 | Levar Burton 253 | Richard Burton 254 | Mae Busch 255 | Francis Xavier Bushman 256 | Jerry Buss 257 | David Butler 258 | Charles Butterworth 259 | Red Buttons 260 | Pat Buttram 261 | Spring Byington 262 | James Caan 263 | Sid Caesar 264 | Nicolas Cage 265 | James Cagney 266 | Sammy Cahn 267 | Alice Calhoun 268 | Rory Calhoun 269 | Maria Callas 270 | James Cameron 271 | Rod Cameron 272 | Glen Campbell 273 | Stephen J. Cannell 274 | Dyan Cannon 275 | Judy Canova 276 | Eddie Cantor 277 | Yakima Canutt 278 | Frank Capra 279 | Drew Carey 280 | Harry Carey 281 | Harry Jr. Carey 282 | Macdonald Carey 283 | Frankie Carle 284 | George Carlin 285 | Kitty Carlisle 286 | Mary Carlisle 287 | Richard Carlson 288 | Hoagy Carmichael 289 | Art Carney 290 | Leslie Caron 291 | Ken Carpenter 292 | The Carpenters 293 | Vikki Carr 294 | David Carradine 295 | John Carradine 296 | Keith Carradine 297 | Leo Carrillo 298 | Diahann Carroll 299 | Madeleine Carroll 300 | Nancy Carroll 301 | Jack Carson 302 | Jeannie Carson 303 | Johnny Carson 304 | Benny Carter 305 | Enrico Caruso 306 | Robert Casadesus 307 | Johnny Cash 308 | Syd Cassyd 309 | Peggie Castle 310 | Gil Cates 311 | Walter Catlett 312 | Joan Caulfield 313 | Carmen Cavallaro 314 | Bennett Cerf 315 | Feodor Chaliapin 316 | Richard Chamberlain 317 | John Chambers 318 | Stan Chambers 319 | Gower Champion 320 | Marge Champion 321 | Charles Champlin 322 | Jackie Chan 323 | Jeff Chandler 324 | Lon Chaney 325 | Carol Channing 326 | Charles "The Little Tramp" Chaplin 327 | Marguerite Chapman 328 | Cyd Charisse 329 | Ray Charles 330 | Charley Chase 331 | Chevy Chase 332 | Ilka Chase 333 | Ruth Chatterton 334 | Virginia Cherrill 335 | Maurice Chevalier 336 | Al Christie 337 | Charles Christie 338 | Ina Claire 339 | Buddy Clark 340 | Dane Clark 341 | Dick Clark 342 | Fred Clark 343 | Marguerite Clark 344 | Roy Clark 345 | Ethel Clayton 346 | Jan Clayton 347 | Rev. James Cleveland 348 | Montgomery Clift 349 | Patsy Cline 350 | Rosemary Clooney 351 | Glenn Close 352 | Andy Clyde 353 | Charles Coburn 354 | James Coburn 355 | Imogene Coca 356 | Steve Cochran 357 | Iron Eyes Cody 358 | Renan Almendarez Coello 359 | George M. Cohan 360 | Arthur Cohn 361 | Claudette Colbert 362 | Nat King Cole 363 | Natalie Cole 364 | Dabney Coleman 365 | Constance Collier 366 | William Collier 367 | Gary Collins 368 | Joan Collins 369 | Phil Collins 370 | Bud Collyer 371 | Ronald Colman 372 | Jerry Colonna 373 | Sean Combs 374 | Perry Como 375 | Betty Compson 376 | Joyce Compton 377 | Chester Conklin 378 | Heinie Conklin 379 | Chuck Connors 380 | Hans Conried 381 | John Conte 382 | Bill Conti 383 | Jack Conway 384 | Tim Conway 385 | Tom Conway 386 | Jackie Coogan 387 | Clyde "The Kangaroo Boy" Cook 388 | Donald Cook 389 | Alistair Cooke 390 | Sam Cooke 391 | Spade Cooley 392 | Alice Cooper 393 | Gary Cooper 394 | Jackie Cooper 395 | Jeanne Cooper 396 | Merian C. Cooper 397 | David Copperfield 398 | Wendell Corey 399 | Roger Corman 400 | Don Cornelius 401 | Don Cornell 402 | Charles James Correll 403 | Ricardo Cortez 404 | Bill Cosby 405 | Pierre Cossette 406 | Dolores Costello 407 | Helene Costello 408 | Lou Costello 409 | Maurice Costello 410 | Kevin Costner 411 | Joseph Cotten 412 | Jerome Cowan 413 | Wally Cox 414 | Buster Crabbe 415 | Bryan Cranston 416 | Broderick Crawford 417 | Joan Crawford 418 | Laird Cregar 419 | Richard Crenna 420 | Laura Hope Crews 421 | Donald Crisp 422 | John Cromwell 423 | Richard Cromwell 424 | Richard Crooks 425 | Bing Crosby 426 | Bob Crosby 427 | Norm Crosby 428 | Milton Cross 429 | Scatman Crothers 430 | Andrae Crouch 431 | Russell Crowe 432 | Tom Cruise 433 | Frank Crumit 434 | Celia Cruz 435 | Penelope Cruz 436 | James Cruze 437 | Jon Cryer 438 | Billy Crystal 439 | Xavier Cugat 440 | George Cukor 441 | Constance Cummings 442 | Irving Cummings 443 | Robert Cummings 444 | Bill Cunningham 445 | Kaley Cuoco 446 | Mike Curb 447 | Alan Curtis 448 | Jamie Lee Curtis 449 | Tony Curtis 450 | Michael Curtiz 451 | John Cusack 452 | Arlene Dahl 453 | Cass Daley 454 | Dorothy Dalton 455 | John Daly 456 | Tyne Daly 457 | Matt Damon 458 | Vic Damone 459 | Viola Dana 460 | Dorothy Dandridge 461 | Karl Dane 462 | Rodney Dangerfield 463 | Bebe Daniels 464 | Billy Boone Daniels 465 | Ted Danson 466 | Tony Danza 467 | Bobby Darin 468 | Linda Darnell 469 | Jane Darwell 470 | Delmer L. Daves 471 | Hal David 472 | Marion Davies 473 | Ann B. Davis 474 | Bette Davis 475 | Clive Davis 476 | Gail Davis 477 | Jim Davis 478 | Joan Davis 479 | Mac Davis 480 | Miles Davis 481 | Sammy Jr. Davis 482 | Dennis Day 483 | Doris Day 484 | Laraine Day 485 | Rosemary De Camp 486 | Yvonne De Carlo 487 | Lee De Forest 488 | Olivia de Havilland 489 | Marguerite De La Motte 490 | Vaughn "First Lady of Radio" De Leath 491 | William de Mille 492 | Buddy De Sylva 493 | The Dead End Kids 494 | James Dean 495 | Frances Dee 496 | Rick Dees 497 | Don DeFore 498 | Ellen DeGeneres 499 | Carter DeHaven 500 | Gloria DeHaven 501 | Albert Dekker 502 | Dolores Del Rio 503 | Roy Del Ruth 504 | Dom DeLuise 505 | William Demarest 506 | Cecil B. DeMille 507 | Richard Denning 508 | Reginald Denny 509 | John Denver 510 | Johnny Depp 511 | John Derek 512 | Bruce Dern 513 | Laura Dern 514 | Andy Devine 515 | Danny DeVito 516 | Elliott Dexter 517 | Vin Di Bona 518 | Neil Diamond 519 | Cameron Diaz 520 | Angie Dickinson 521 | Vin Diesel 522 | William Dieterle 523 | Marlene Dietrich 524 | Phyllis Diller 525 | Celine Dion 526 | Roy O. Disney 527 | Walt Disney 528 | Richard Dix 529 | Edward Dmytryk 530 | Jimmie Dodd 531 | Ray Dolby 532 | Placido Domingo 533 | Fats Domino 534 | Peter Donald 535 | Robert Donat 536 | Brian Donlevy 537 | Lauren Shuler Donner 538 | Richard Donner 539 | James Doohan 540 | The Doors 541 | Marie Doro 542 | Jimmy Dorsey 543 | Tommy Dorsey 544 | Jack Douglas 545 | Kirk Douglas 546 | Melvyn Douglas 547 | Mike Douglas 548 | Paul Douglas 549 | Billie Dove 550 | Morton Downey 551 | Cathy Downs 552 | Carmen Dragon 553 | Jessica Dragonette 554 | Frances Drake 555 | Louise Dresser 556 | Marie Dressler 557 | Ellen Drew 558 | Mr. and Mrs. Sidney Drew 559 | Richard Dreyfuss 560 | Bobby Driscoll 561 | Joanne Dru 562 | Donald Fauntleroy Duck 563 | Howard Duff 564 | Olympia Dukakis 565 | Patty Duke 566 | Faye Dunaway 567 | James Dunn 568 | Irene Dunne 569 | Philip Dunne 570 | Mildred Dunnock 571 | Jerry Dunphy 572 | Jimmy Durante 573 | Deanna Durbin 574 | Charles Durning 575 | Dan Duryea 576 | Robert Duvall 577 | Ann Dvorak 578 | Allan Dwan 579 | Wind & Fire Earth 580 | George Eastman 581 | Roger Ebert 582 | Buddy Ebsen 583 | Billy Eckstine 584 | Nelson Eddy 585 | Barbara Eden 586 | Robert Edeson 587 | Thomas Alva Edison 588 | Kenny Edmonds 589 | Blake Edwards 590 | Ralph Livingston Edwards 591 | Steve Edwards 592 | Ken Ehrlich 593 | Michael D. Eisner 594 | Larry Elder 595 | Duke Ellington 596 | Mischa Elman 597 | Faye Emerson 598 | Dick Enberg 599 | John Ericson 600 | Leon Errol 601 | Stu Erwin 602 | Giancarlo Espositio 603 | Emilio Estefan 604 | Gloria Estefan 605 | Erik Estrada 606 | Melissa Etheridge 607 | Ruth Etting 608 | Bob Eubanks 609 | Dale Evans 610 | Linda Evans 611 | Madge Evans 612 | Robert Evans 613 | Chad Everett 614 | The Everly Brothers 615 | Nanette Fabray 616 | Max Factor 617 | Clifton Fadiman 618 | Douglas Fairbanks 619 | Douglas Jr. Fairbanks 620 | Jerry Bertram Fairbanks 621 | Percy Faith 622 | Peter Falk 623 | Jinx Falkenburg 624 | Chris Farley 625 | Richard Farnsworth 626 | Dustin Farnum 627 | William Farnum 628 | Jamie Farr 629 | Geraldine Farrar 630 | Charles Farrell 631 | Glenda Farrell 632 | John Farrow 633 | William Faversham 634 | Farrah Fawcett 635 | Frank Fay 636 | Alice Faye 637 | Julia Faye 638 | Frank Faylen 639 | Louise Fazenda 640 | Don Fedderson 641 | Jose Feliciano 642 | Verna Felton 643 | Freddy Fender 644 | George Fenneman 645 | Helen Ferguson 646 | Alejandro Fernandez 647 | Vicente Fernandez 648 | Will Ferrell 649 | Jose Ferrer 650 | Mel Ferrer 651 | Stepin Fetchit 652 | Jimmie Fidler 653 | Arthur Fiedler 654 | Sally Field 655 | Virginia Field 656 | Gracie Fields 657 | W.C. Fields 658 | Flora Finch 659 | Colin Firth 660 | Eddie Fisher 661 | George Fisher 662 | Hal Fishman 663 | Barry Fitzgerald 664 | Ella Fitzgerald 665 | Geraldine Fitzgerald 666 | George Fitzmaurice 667 | James A. FitzPatrick 668 | Kirsten Flagstad 669 | Rhonda Fleming 670 | Victor Fleming 671 | Errol Flynn 672 | Nina Foch 673 | John Fogerty 674 | Red Foley 675 | Henry Fonda 676 | Peter Fonda 677 | Joan Fontaine 678 | Dick Foran 679 | June Foray 680 | Scott Forbes 681 | Glenn Ford 682 | Harrison Ford 683 | Harrison (silent) Ford 684 | John Ford 685 | Tennessee Ernie Ford 686 | John Forsythe 687 | David Foster 688 | Preston Foster 689 | The Four Step Brothers 690 | The Four Tops 691 | Michael J. Fox 692 | William Fox 693 | Jamie Foxx 694 | Eddie Foy 695 | Peter Frampton 696 | Zino Francescatti 697 | Anne Francis 698 | Arlene Francis 699 | Kay Francis 700 | Don Francisco 701 | James Franco 702 | Aretha Franklin 703 | Sidney Franklin 704 | Dennis Franz 705 | William Frawley 706 | Stan Freberg 707 | Pauline Frederick 708 | Alan Freed 709 | Morgan Freeman 710 | Y. Frank Freeman 711 | Friz Freleng 712 | William Friedkin 713 | Charles Fries 714 | Lefty Frizzell 715 | Jane Froman 716 | Robert Fuller 717 | Simon Fuller 718 | Annette Funicello 719 | Betty Furness 720 | Kenny G 721 | Clark Gable 722 | Eva Gabor 723 | Zsa Zsa Gabor 724 | Juan Gabriel 725 | Helen Gahagan 726 | Amelita Galli-Curci 727 | Greta Garbo 728 | Andy Garcia 729 | Ava Gardner 730 | Ed Gardner 731 | John Garfield 732 | Beverly Garland 733 | Judy Garland 734 | Erroll Garner 735 | James Garner 736 | Peggy Ann Garner 737 | Tay Garnett 738 | Betty Garrett 739 | Dave Garroway 740 | Greer Garson 741 | Lucho Gatica 742 | Marvin Gaye 743 | Crystal Gayle 744 | Janet Gaynor 745 | Mitzi Gaynor 746 | Theodor "Ted" Seuss Geisel 747 | Bill Geist 748 | David Gerber 749 | George & Ira Gershwin 750 | Floyd Gibbons 751 | Leeza Gibbons 752 | Georgia Gibbs 753 | Hoot Gibson 754 | Beniamino Gigli 755 | Billy Gilbert 756 | John Gilbert 757 | Melissa Gilbert 758 | Paul Gilbert 759 | Vince Gill 760 | Dizzy Gillespie 761 | Mickey Gilley 762 | Dorothy Gish 763 | Lillian Gish 764 | Louise Glaum 765 | Jackie Gleason 766 | James Gleason 767 | Sharon Gless 768 | The Go-Go's 769 | George Gobel 770 | Paulette Goddard 771 | Arthur Godfrey 772 | Earl Godwin 773 | Ernest Gold 774 | Leonard Goldberg 775 | Whoopi Goldberg 776 | Leonard H. Goldenson 777 | Edwin Franko Goldman 778 | Samuel Goldwyn 779 | Pedro Gonzalez Gonzalez 780 | Cuba Jr. Gooding 781 | Al Goodman 782 | Benny Goodman 783 | Mark Goodson 784 | Bill Goodwin 785 | Gale Gordon 786 | Berry Gordy 787 | Mike Gore 788 | Freeman Gosden 789 | Louis Jr. Gossett 790 | Jetta Goudal 791 | Morton Gould 792 | Robert Goulet 793 | Betty Grable 794 | Billy Graham 795 | Gloria Grahame 796 | Kelsey Grammer 797 | Farley Granger 798 | Amy Grant 799 | Cary Grant 800 | Johnny Grant 801 | Bonita Granville 802 | Sid Grauman 803 | Peter Graves 804 | Gilda Gray 805 | Glen Gray 806 | Jim Gray 807 | Kathryn Grayson 808 | Brian Grazer 809 | Alfred Green 810 | John Green 811 | Mitzi Green 812 | Harold Greene 813 | Lorne Greene 814 | Charlotte Greenwood 815 | Jane Greer 816 | Dick Gregory 817 | Joel Grey 818 | Merv Griffin 819 | Andy Griffith 820 | Corinne Griffith 821 | David W. Griffith 822 | Raymond Griffith 823 | Matt Groening 824 | Robert Guillaume 825 | Texas Guinan 826 | Alec Guinness 827 | Steve Guttenberg 828 | Edmund Gwenn 829 | Buddy Hackett 830 | Reed Hadley 831 | Jean Hagen 832 | Dan Haggerty 833 | Don Haggerty 834 | Larry Hagman 835 | William Haines 836 | Jester Hairston 837 | Alan Hale 838 | Alan Jr. Hale 839 | Barbara Hale 840 | Creighton Hale 841 | Monte Hale 842 | Bill Haley 843 | Jack Haley 844 | Arsenio Hall 845 | Conrad Hall 846 | Jon Hall 847 | Monty Hall 848 | Stuart Hamblen 849 | Rusty Hamer 850 | George Hamilton 851 | Lloyd Hamilton 852 | Neil Hamilton 853 | Lionel Hampton 854 | Herbie Hancock 855 | Bill Handel 856 | Tom Hanks 857 | Ann Harding 858 | Sir Cedric Hardwicke 859 | Oliver Hardy 860 | Mariska Hargitay 861 | The Harlem Globetrotters 862 | Jean Harlow 863 | Mark Harmon 864 | Arlene Harris 865 | Ed Harris 866 | Jack H. Harris 867 | Mildred Harris 868 | Neil Patrick Harris 869 | Phil Harris 870 | George Harrison 871 | Rex Harrison 872 | Ray Harryhausen 873 | John Hart 874 | Mary Hart 875 | William S. Hart 876 | Mariette Hartley 877 | Phil Hartman 878 | Steve Harvey 879 | David Hasselhoff 880 | Signe Hasso 881 | Henry Hathaway 882 | Raymond William Hatton 883 | June Haver 884 | June Havoc 885 | Bob Hawk 886 | Howard Hawks 887 | Bill Hay 888 | Sessue Hayakawa 889 | George "Gabby" Hayes 890 | Helen Hayes 891 | Johnny Hayes 892 | Richard Hayman 893 | Dick Haymes 894 | Dick Haynes 895 | Will H. Hays 896 | Louis Hayward 897 | Susan Hayward 898 | Rita Hayworth 899 | Edith Head 900 | Jim Healy 901 | Chick Hearn 902 | Patricia Heaton 903 | Eileen Heckart 904 | Tippi Hedren 905 | Van Heflin 906 | Hugh "Hef" M. Hefner 907 | Horace Heidt 908 | Jascha Heifetz 909 | Marg Helgenberger 910 | Florence Henderson 911 | Jimi Hendrix 912 | Sonja Henie 913 | Paul Henreid 914 | Jim Henson 915 | Audrey Hepburn 916 | Katharine Hepburn 917 | Hugh Herbert 918 | Jerry Herman 919 | Pee-Wee Herman 920 | Woody Herman 921 | Jean Hersholt 922 | Irene Hervey 923 | Charlton Heston 924 | Eddie Heywood 925 | Al Hibbler 926 | George Hicks 927 | Jim Hill 928 | Cheryl Hines 929 | Alfred Hitchcock 930 | John Hodiak 931 | Portland Hoffa 932 | William Holden 933 | Billie "Lady Day" Holiday 934 | Judy Holliday 935 | Earl Holliman 936 | Gordon Hollingshead 937 | Buddy Holly 938 | The Hollywood Reporter 939 | Celeste Holm 940 | Burton Holmes 941 | Phillips Holmes 942 | Taylor Holmes 943 | Jack Holt 944 | John Lee Hooker 945 | Bob Hope 946 | Dolores Hope 947 | Anthony Hopkins 948 | Linda Hopkins 949 | Miriam Hopkins 950 | Dennis Hopper 951 | Hedda Hopper 952 | Lena Horne 953 | Vladimir Horowitz 954 | Edward Everett Horton 955 | Harry Houdini 956 | Eddy Howard 957 | John Howard 958 | Leslie Howard 959 | Ron Howard 960 | William K. Howard 961 | Jennifer Hudson 962 | Rochelle Hudson 963 | Rock Hudson 964 | Felicity Huffman 965 | Josephine Hull 966 | Warren Hull 967 | H. "Lucky" Bruce Humberstone 968 | Engelbert Humperdinck 969 | Frazier Hunt 970 | Marsha Hunt 971 | Pee Wee Hunt 972 | Holly Hunter 973 | Jeffrey Hunter 974 | Kim Hunter 975 | Tab Hunter 976 | Gale Anne Hurd 977 | Marlin Hurt 978 | Ted Husing 979 | Ferlin Husky 980 | Ruth Hussey 981 | Anjelica Huston 982 | John Huston 983 | Walter Huston 984 | Betty Hutton 985 | Julio Iglesias 986 | Thomas Ince 987 | Pedro Infante 988 | Rex Ingram 989 | Jill Ireland 990 | John Ireland 991 | Jose Iturbi 992 | Hugh Jackman 993 | Alan Jackson 994 | Janet Jackson 995 | Mahalia Jackson 996 | Michael Jackson 997 | Michael (radio) Jackson 998 | Peter Jackson 999 | Samuel L. Jackson 1000 | Sherry Jackson 1001 | The Jacksons 1002 | Dean Jagger 1003 | Dennis James 1004 | Etta James 1005 | Harry James 1006 | Joni James 1007 | Sonny James 1008 | Elsie Janis 1009 | Emil Jannings 1010 | David Janssen 1011 | Maurice Jarre 1012 | Al Jarreau 1013 | Jaime Jarrin 1014 | Anne Jeffreys 1015 | Herb Jeffries 1016 | Gordon Jenkins 1017 | Adele Jergens 1018 | George Jessel 1019 | Isabel Jewell 1020 | Norman Jewison 1021 | Billy Joel 1022 | Scarlett Johansson 1023 | Elton John 1024 | Ben "Son" Johnson 1025 | Don Johnson 1026 | Earvin "Magic" Johnson 1027 | Nunnally Johnson 1028 | Van Johnson 1029 | Al Jolson 1030 | Allan Jones 1031 | Buck Jones 1032 | Chuck Jones 1033 | Dick Jones 1034 | Gordon Jones 1035 | Jack Jones 1036 | Jennifer Jones 1037 | Quincy Jones 1038 | Shirley Jones 1039 | Spike Jones 1040 | Tom Jones 1041 | Tommy Lee Jones 1042 | Janis Joplin 1043 | Victor Jory 1044 | Jose Jose 1045 | Louis Jourdan 1046 | Leatrice Joy 1047 | Katy Jurado 1048 | Kitty Kallen 1049 | Herbert Kalmus 1050 | Boris Karloff 1051 | Casey Kasem 1052 | Tichi Wilkerson Kassel 1053 | Danny Kaye 1054 | Sammy Kaye 1055 | Elia Kazan 1056 | Buster Keaton 1057 | Howard Keel 1058 | Ruby Keeler 1059 | Bill Keene 1060 | Bob Keeshan 1061 | Brian Keith 1062 | Annette Kellerman 1063 | DeForest Kelley 1064 | "Shotgun" Tom Kelly 1065 | Gene Kelly 1066 | Grace Kelly 1067 | Nancy Kelly 1068 | Patsy Kelly 1069 | Arthur Kennedy 1070 | Edgar "Slow Burn" Kennedy 1071 | George Kennedy 1072 | John B. Kennedy 1073 | Madge Kennedy 1074 | Stan Kenton 1075 | Deborah Kerr 1076 | J.M. Kerrigan 1077 | Norman Kerry 1078 | Chaka Khan 1079 | Nicole Kidman 1080 | Dorothy Kilgallen 1081 | Jimmy Kimmel 1082 | Andrea King 1083 | B.B. King 1084 | Carole King 1085 | Henry King 1086 | John Reed King 1087 | Larry King 1088 | Pee Wee King 1089 | Peggy King 1090 | Wayne King 1091 | Ben Kingsley 1092 | Joe Jr. Kirkwood 1093 | Dorothy Kirsten 1094 | Eartha Kitt 1095 | Kevin Kline 1096 | Jack Klugman 1097 | Evelyn Knight 1098 | Gladys Knight 1099 | June Knight 1100 | Raymond Knight 1101 | Ted Knight 1102 | Don Knotts 1103 | Patric Knowles 1104 | Peggy Knudsen 1105 | Walter Koenig 1106 | Theodore Kosloff 1107 | Andre Kostelanetz 1108 | Henry Koster 1109 | Ernie Kovacs 1110 | Dave Koz 1111 | Stanley Kramer 1112 | Fritz Kreisler 1113 | Kurt Kreuger 1114 | Otto Kruger 1115 | Kay Kyser 1116 | Gregory La Cava 1117 | Barbara La Marr 1118 | Laura La Plante 1119 | Rod La Rocque 1120 | Julius La Rosa 1121 | Patti LaBelle 1122 | Art Laboe 1123 | Alan Ladd 1124 | Alan Jr. Ladd 1125 | Diane Ladd 1126 | Jim Ladd 1127 | Sue Carol Ladd 1128 | Carl "Uncle Carl" Sr. Laemmle 1129 | Frankie Laine 1130 | Alice Lake 1131 | Arthur Lake 1132 | Veronica Lake 1133 | Jack LaLanne 1134 | Guy Laliberte 1135 | Hedy Lamarr 1136 | Dorothy Lamour 1137 | Burt Lancaster 1138 | Martin Landau 1139 | Elissa Landi 1140 | Carole Landis 1141 | Michael Landon 1142 | Klaus Landsberg 1143 | Abbe Lane 1144 | Dick Lane 1145 | Nathan Lane 1146 | Sidney Lanfield 1147 | Fritz Lang 1148 | Walter Lang 1149 | Harry Langdon 1150 | Frances Langford 1151 | John Langley 1152 | Angela Lansbury 1153 | Joi Lansing 1154 | Sherry Lansing 1155 | Walter Lantz 1156 | Mario Lanza 1157 | Glen A. Larson 1158 | Jesse Lasky 1159 | John Lasseter 1160 | Charles Laughton 1161 | Stan Laurel 1162 | Peter Lawford 1163 | Barbara Lawrence 1164 | Carol Lawrence 1165 | Cloris Leachman 1166 | Norman Lear 1167 | Francis Lederer 1168 | Anna Lee 1169 | Bruce Lee 1170 | Gypsy Rose Lee 1171 | Lila Lee 1172 | Michele Lee 1173 | Peggy Lee 1174 | Pinky Lee 1175 | Rowland Lee 1176 | Ruta Lee 1177 | Stan Lee 1178 | Lotte Lehmann 1179 | Janet Leigh 1180 | Vivien Leigh 1181 | Mitchell Leisen 1182 | Jack Lemmon 1183 | The Lennon Sisters 1184 | John Lennon 1185 | Jay Leno 1186 | Robert Z. Leonard 1187 | Mervyn LeRoy 1188 | Jack Lescoulie 1189 | Joan Leslie 1190 | Sol Lesser 1191 | Earl Lestz 1192 | Oscar Levant 1193 | Fulton Lewis 1194 | Jerry Lewis 1195 | Jerry Lee Lewis 1196 | Robert Q. Lewis 1197 | Shari Lewis 1198 | Bill Leyden 1199 | Al Lichtman 1200 | Beatrice Lillie 1201 | Elmo Lincoln 1202 | Eric Linden 1203 | Kate Linder 1204 | Margaret Lindsay 1205 | Art Linkletter 1206 | John Lithgow 1207 | Cleavon Little 1208 | Rich Little 1209 | Anatole Litvak 1210 | Mary Livingstone 1211 | Frank Lloyd 1212 | Harold Lloyd 1213 | Gene Lockhart 1214 | June Lockhart 1215 | Kathleen Lockhart 1216 | Marcus Loew 1217 | Joshua Logan 1218 | Kenny Loggins 1219 | Carole Lombard 1220 | Guy Lombardo 1221 | Julie London 1222 | George Lopez 1223 | Israel "Cachao" Lopez 1224 | Jennifer Lopez 1225 | Vincent Lopez 1226 | Marjorie Lord 1227 | Phillips Haynes Lord 1228 | Sophia Loren 1229 | Chuck Lorre 1230 | Peter Lorre 1231 | Julia Louis-Dreyfus 1232 | Anita Louise 1233 | Bessie Love 1234 | Frank Lovejoy 1235 | Edmund Lowe 1236 | Jim Lowe 1237 | Myrna Loy 1238 | Sigmund Lubin 1239 | Ernst Lubitsch 1240 | Norman Luboff 1241 | Susan Lucci 1242 | Allen Ludden 1243 | Bela Lugosi 1244 | Paul Lukas 1245 | Keye Luke 1246 | Auguste Lumiere 1247 | Louis Lumiere 1248 | Humberto Luna 1249 | Art Lund 1250 | William Lundigan 1251 | Ida Lupino 1252 | John Lupton 1253 | Frank Luther 1254 | A.C. Lyles 1255 | Frankie "The Golden Throat" Lymon 1256 | Jane Lynch 1257 | Diana Lynn 1258 | Loretta Lynn 1259 | Jeff Lynne 1260 | Ben Lyon 1261 | Bert Lytell 1262 | Jeanette MacDonald 1263 | Katherine MacDonald 1264 | Helen Mack 1265 | Ted Mack 1266 | Gisele MacKenzie 1267 | Shirley MacLaine 1268 | Barton MacLane 1269 | Fred MacMurray 1270 | Jeanie MacPherson 1271 | Gordon MacRae 1272 | William H. Macy 1273 | Johnny Maddox 1274 | Guy Madison 1275 | Anna Magnani 1276 | Bill Maher 1277 | Lee Majors 1278 | Karl Malden 1279 | Dorothy Malone 1280 | Ted Malone 1281 | Rouben Mamoulian 1282 | Henry Mancini 1283 | Howie Mandel 1284 | Barry Manilow 1285 | Joseph L. Mankiewicz 1286 | Anthony Mann 1287 | Delbert Mann 1288 | Hank Mann 1289 | Jayne Mansfield 1290 | Joe Mantegna 1291 | Fredric March 1292 | Hal March 1293 | Rose Marie 1294 | Bob Marley 1295 | J. Peverell Marley 1296 | Jess Marlow 1297 | Mae Marsh 1298 | Garry Marshall 1299 | George Marshall 1300 | Herbert Marshall 1301 | Penny Marshall 1302 | Dean "Dino" Martin 1303 | Freddy Martin 1304 | Marion Martin 1305 | Mary Martin 1306 | Quinn Martin 1307 | Ricky Martin 1308 | Tony Martin 1309 | Wink Martindale 1310 | Groucho Marx 1311 | James Mason 1312 | Ilona Massey 1313 | Raymond Massey 1314 | Johnny Mathis 1315 | Marlee Matlin 1316 | Walter Matthau 1317 | Victor Mature 1318 | Louis B. Mayer 1319 | Ken Maynard 1320 | Archie Mayo 1321 | Virginia Mayo 1322 | Paul Mazursky 1323 | May McAvoy 1324 | Mary Margaret McBride 1325 | Irish McCalla 1326 | Mercedes McCambridge 1327 | Leo McCarey 1328 | Clem McCarthy 1329 | Paul McCartney 1330 | Doug McClure 1331 | Matthew McConaughey 1332 | Smilin' Ed McConnell 1333 | Patty McCormack 1334 | Larry McCormick 1335 | Clyde McCoy 1336 | Tim McCoy 1337 | Tex McCrary 1338 | Joel McCrea 1339 | Hattie McDaniel 1340 | Roddy McDowall 1341 | Malcolm McDowell 1342 | Reba McEntire 1343 | Spanky McFarland 1344 | Charles McGraw 1345 | Tim McGraw 1346 | Dorothy McGuire 1347 | Rod McKuen 1348 | Victor McLaglen 1349 | Norman Z. McLeod 1350 | Ed McMahon 1351 | Vince K. McMahon 1352 | Graham McNamee 1353 | Don McNeill 1354 | Steve McQueen 1355 | Audrey Meadows 1356 | Mike Medavoy 1357 | Donald Meek 1358 | George Meeker 1359 | Zubin Mehta 1360 | Thomas Meighan 1361 | William Meiklejohn 1362 | George Melachrino 1363 | Lauritz Melchior 1364 | James Melton 1365 | Rafael Mendez 1366 | Adolphe Menjou 1367 | Alan Menken 1368 | Yehudi Menuhin 1369 | Johnny Mercer 1370 | Burgess Meredith 1371 | Una Merkel 1372 | Ethel Merman 1373 | Robert Merrill 1374 | Al Michaels 1375 | Lorne Michaels 1376 | Oscar Micheaux 1377 | Bette Midler 1378 | Luis Miguel 1379 | David Milch 1380 | Vera Miles 1381 | Lewis "Milly" Milestone 1382 | Ray Milland 1383 | Ann Miller 1384 | Bob Miller 1385 | Glenn Miller 1386 | Marilyn Miller 1387 | Marvin Miller 1388 | Mitch Miller 1389 | The Mills Brothers 1390 | Nathan Milstein 1391 | Liza Minnelli 1392 | Vincente Minnelli 1393 | Mary Miles Minter 1394 | The Miracles 1395 | Carmen Miranda 1396 | Helen Mirren 1397 | Don Mischer 1398 | Everett Mitchell 1399 | Guy Mitchell 1400 | Thomas Mitchell 1401 | Robert Mitchum 1402 | Tom Mix 1403 | Hal Mohr 1404 | Thelonious Monk 1405 | The Monkees 1406 | Marilyn Monroe 1407 | Vaughn Monroe 1408 | Ricardo Montalban 1409 | Pierre Monteux 1410 | Elizabeth Montgomery 1411 | George Montgomery 1412 | Robert Montgomery 1413 | Art Mooney 1414 | Clayton "The Lone Ranger" Moore 1415 | Colleen Moore 1416 | Constance Moore 1417 | Del Moore 1418 | Dudley Moore 1419 | Garry Moore 1420 | Grace "The Tennessee Nightingale " Moore 1421 | Julianne Moore 1422 | Mary Tyler Moore 1423 | Matt Moore 1424 | Owen Moore 1425 | Roger Moore 1426 | Terry Moore 1427 | Tom Moore 1428 | Victor Moore 1429 | Agnes Moorehead 1430 | Polly Moran 1431 | Antonio Moreno 1432 | Rita Moreno 1433 | Frank Morgan 1434 | Henry Morgan 1435 | Jane Morgan 1436 | Michele Morgan 1437 | Ralph Morgan 1438 | Robert W. Morgan 1439 | Russ Morgan 1440 | Pat Morita 1441 | Doug Morris 1442 | Carlton E. Morse 1443 | Ella Mae Morse 1444 | Jerry Moss 1445 | Jean Muir 1446 | Jack Mulhall 1447 | Richard Mulligan 1448 | The Munchkins 1449 | Paul Muni 1450 | Ona Munson 1451 | The Muppets 1452 | Dennis Muren 1453 | Audie Murphy 1454 | Eddie Murphy 1455 | George Murphy 1456 | Anne Murray 1457 | Charlie Murray 1458 | Don Murray 1459 | Jan Murray 1460 | Ken Murray 1461 | Mae Murray 1462 | Edward R. Murrow 1463 | Carmel Myers 1464 | Mike Myers 1465 | Jim Nabors 1466 | Conrad Nagel 1467 | Stu Nahan 1468 | J. Carroll Naish 1469 | Nita "Donna Dooley" Naldi 1470 | Ogden Nash 1471 | Alla Nazimova 1472 | Patricia Neal 1473 | James Morton Nederlander 1474 | Pola Negri 1475 | Jean Negulesco 1476 | Marshall Neilan 1477 | Barry Nelson 1478 | David Nelson 1479 | Gene Nelson 1480 | Harriet Nelson 1481 | Ozzie Nelson 1482 | Rick "Ricky" Nelson 1483 | John Nesbitt 1484 | Mace Neufeld 1485 | Bob Newhart 1486 | Alfred Newman 1487 | Paul Newman 1488 | Randy Newman 1489 | Wayne Newton 1490 | Olivia Newton-John 1491 | Fred Niblo 1492 | Nichelle Nichols 1493 | Jack Nicholson 1494 | Leslie Nielsen 1495 | Chuck Niles 1496 | Ken Niles 1497 | Wendell Niles 1498 | Anna Q. Nilsson 1499 | Leonard Nimoy 1500 | David Niven 1501 | Marian Nixon 1502 | Lloyd Nolan 1503 | Mabel Normand 1504 | Chuck Norris 1505 | Kim Novak 1506 | Ramon Novarro 1507 | Hugh O'Brian 1508 | Dave O'Brien 1509 | Edmond O'Brien 1510 | Eugene O'Brien 1511 | George O'Brien 1512 | Margaret O'Brien 1513 | Pat O'Brien 1514 | Carroll O'Connor 1515 | Donald O'Connor 1516 | Molly O'Day 1517 | Chris O'Donnell 1518 | George O'Hanlon 1519 | Maureen O'Hara 1520 | Walter O'Keefe 1521 | Ed O'Neill 1522 | Henry O'Neill 1523 | Michael O'Shea 1524 | Maureen O'Sullivan 1525 | Jack Oakie 1526 | Merle Oberon 1527 | Edna May Oliver 1528 | Laurence Olivier 1529 | Edward James Olmos 1530 | Roy Orbison 1531 | The Original Fifth Dimension 1532 | Tony Orlando 1533 | Eugene Ormandy 1534 | Robert Osborne 1535 | Ozzy Osbourne 1536 | The Osmond Family 1537 | Buck Owens 1538 | Gary Owens 1539 | Jack Paar 1540 | Ignacy Paderewski 1541 | Anita Page 1542 | Patti Page 1543 | Janis Paige 1544 | George Pal 1545 | Jack Palance 1546 | Eugene Pallette 1547 | Lilli Palmer 1548 | Gwyneth Paltrow 1549 | Franklin Pangborn 1550 | Eleanor Parker 1551 | Frank Parker 1552 | Jean Parker 1553 | Ray Jr. Parker 1554 | Helen Parrish 1555 | Jim Parsons 1556 | Louella O. Parsons 1557 | Dolly Parton 1558 | Joe Pasternak 1559 | Katina Paxinou 1560 | John Payne 1561 | Al Pearce 1562 | Jack Pearl 1563 | Drew Pearson 1564 | Harold Peary 1565 | Gregory Peck 1566 | Jan Peerce 1567 | Joe Penner 1568 | George Peppard 1569 | Anthony Perkins 1570 | Gigi Perreau 1571 | Jack Perrin 1572 | Bernadette Peters 1573 | Brock Peters 1574 | House Peters 1575 | Jon Peters 1576 | Susan Peters 1577 | William Petersen 1578 | Olga Petrova 1579 | Michelle Pfeiffer 1580 | Regis Philbin 1581 | Dorothy Phillips 1582 | Pauline Phillips 1583 | Jack Pickford 1584 | Mary Pickford 1585 | Walter Pidgeon 1586 | Webb Pierce 1587 | Ezio Pinza 1588 | Zasu Pitts 1589 | Suzanne Pleshette 1590 | The Pointer Sisters 1591 | Sidney Poitier 1592 | Snub Pollard 1593 | Lily Pons 1594 | Cole Porter 1595 | H.C. Potter 1596 | David Powell 1597 | Dick Powell 1598 | Eleanor Powell 1599 | Jane Powell 1600 | William Powell 1601 | Tyrone Power 1602 | Mala Powers 1603 | Stefanie Powers 1604 | Perez Prado 1605 | Otto Preminger 1606 | Elvis Presley 1607 | Marie Prevost 1608 | Vincent Price 1609 | Charley Pride 1610 | Louis Prima 1611 | William Primrose 1612 | Aileen Pringle 1613 | Freddie Prinze 1614 | Jon Provost 1615 | Richard Pryor 1616 | Tito "El Rey" Puente 1617 | George Putnam 1618 | Denver Pyle 1619 | Dennis Quaid 1620 | Randy Quaid 1621 | Anthony Quinn 1622 | Gilda Radner 1623 | George Raft 1624 | Luise Rainer 1625 | Ella Raines 1626 | Claude Rains 1627 | Bonnie Raitt 1628 | John Raitt 1629 | Esther Ralston 1630 | Vera Ralston 1631 | Marjorie Rambeau 1632 | Basil Rathbone 1633 | Gregory Ratoff 1634 | Herbert Rawlinson 1635 | Lou Rawls 1636 | Charles Edgar Ray 1637 | Johnnie "The Prince of Wails" Ray 1638 | Martha Raye 1639 | Gene Raymond 1640 | Ronald Reagan 1641 | The Recording Academy 1642 | Helen Reddy 1643 | Sumner Redstone 1644 | Donna Reed 1645 | Della Reese 1646 | Christopher Reeve 1647 | George Reeves 1648 | Keanu Reeves 1649 | Wallace Reid 1650 | Carl Reiner 1651 | Rob Reiner 1652 | Irving Reis 1653 | Ivan Reitman 1654 | Lee Remick 1655 | Duncan Renaldo 1656 | Henri Rene 1657 | Ray Rennahan 1658 | Jean Renoir 1659 | Burt Reynolds 1660 | Debbie Reynolds 1661 | Marjorie Reynolds 1662 | Quentin Reynolds 1663 | Grantland Rice 1664 | Sir Tim Rice 1665 | Irene Rich 1666 | Lionel Richie 1667 | Don Rickles 1668 | Nelson Riddle 1669 | Tommy Riggs 1670 | Robert Ripley 1671 | John Ritter 1672 | Tex Ritter 1673 | The Ritz Brothers 1674 | Joan Rivers 1675 | Hal Roach 1676 | Gale Robbins 1677 | Harold Robbins 1678 | Marty Robbins 1679 | Tim Robbins 1680 | Doris Roberts 1681 | Theodore Roberts 1682 | Cliff Robertson 1683 | Dale Robertson 1684 | Paul Robeson 1685 | Edward G. Robinson 1686 | Smokey Robinson 1687 | Mark Robson 1688 | Chris Rock 1689 | Gene Roddenberry 1690 | Buddy Rogers 1691 | Fred Rogers 1692 | Ginger Rogers 1693 | Kenny Rogers 1694 | Roy Rogers 1695 | Wayne Rogers 1696 | Will Rogers 1697 | Gilbert Roland 1698 | Ruth "Queen of the Thriller Series" Roland 1699 | Ruth Roman 1700 | Cesar Romero 1701 | Mickey Rooney 1702 | David Rose 1703 | Diana Ross 1704 | Lanny Ross 1705 | Marion Ross 1706 | Robert Rossen 1707 | Lillian Roth 1708 | Henry Rowland 1709 | Richard Rowland 1710 | Alma Rubens 1711 | Artur Rubinstein 1712 | Evelyn Rudie 1713 | Charles Ruggles 1714 | Wesley Ruggles 1715 | Gail Russell 1716 | Harold Russell 1717 | Jane Russell 1718 | Rosalind Russell 1719 | Ann Rutherford 1720 | Winona Ryder 1721 | Katey Sagal 1722 | Carole Bayer Sager 1723 | Susan Saint James 1724 | Eva Marie Saint 1725 | Pat Sajak 1726 | Soupy Sales 1727 | George Sanders 1728 | Julia Sanderson 1729 | Adam Sandler 1730 | Mark Sandrich 1731 | Tommy Sands 1732 | Isabel Sanford 1733 | Carlos Santana 1734 | Cristina Saralegui 1735 | Susan Sarandon 1736 | Telly Savalas 1737 | Joseph Schenck 1738 | Victor Schertzinger 1739 | Lalo Schifrin 1740 | Joseph Schildkraut 1741 | George Schlatter 1742 | Ernest Schoedsack 1743 | B.P. Schulberg 1744 | Charles Schulz 1745 | Ernestine Schumann-Heink 1746 | Sherwood Schwartz 1747 | Stephen Schwartz 1748 | Arnold Schwarzenegger 1749 | Martin Scorsese 1750 | Lizabeth Scott 1751 | Martha Scott 1752 | Randolph Scott 1753 | Zachary Scott 1754 | Earl Scruggs 1755 | Vin Scully 1756 | Ryan Seacrest 1757 | George Seaton 1758 | Dorothy Sebastian 1759 | Neil Sedaka 1760 | Edward Sedgwick 1761 | Kyra Sedgwick 1762 | William Seiter 1763 | William Selig 1764 | Tom Selleck 1765 | David O. Selznick 1766 | Lewis J. Selznick 1767 | Larry Semon 1768 | Mack Sennett 1769 | Rudolf Serkin 1770 | Rod Serling 1771 | Mark Serrurier 1772 | Jane Seymour 1773 | Leon Shamroy 1774 | William Shatner 1775 | Artie Shaw 1776 | Robert Shaw 1777 | Norma Shearer 1778 | George Shearing 1779 | Charlie Sheen 1780 | Martin Sheen 1781 | Sidney Sheldon 1782 | Cybill Shepherd 1783 | Ann Sheridan 1784 | Bobby Sherwood 1785 | Anne Shirley 1786 | Dinah Shore 1787 | George Sidney 1788 | Sylvia Sidney 1789 | Beverly Sills 1790 | Milton Sills 1791 | Joel Silver 1792 | Jay Silverheels 1793 | Phil Silvers 1794 | Ginny Simms 1795 | The Simpsons 1796 | Frank Sinatra 1797 | Nancy Sinatra 1798 | John Singleton 1799 | Penny Singleton 1800 | Red Skelton 1801 | Everett Sloane 1802 | Edward Small 1803 | Tavis Smiley 1804 | Carl Smith 1805 | Jack Smith 1806 | Jaclyn Smith 1807 | Kate Smith 1808 | Keely Smith 1809 | Pete Smith 1810 | Sir Charles Aubrey Smith 1811 | The Smothers Brothers 1812 | Wesley Snipes 1813 | Marco Antonio Solis 1814 | Suzanne Somers 1815 | Ann Sothern 1816 | John "The March King" Philip Sousa 1817 | Sissy Spacek 1818 | Kevin Spacey 1819 | David Spade 1820 | Britney Spears 1821 | Aaron Spelling 1822 | Arthur H. Spiegel 1823 | Steven Spielberg 1824 | The Spinners 1825 | Phil Spitalny 1826 | Rick Springfield 1827 | Al St. John 1828 | Adela Rogers St. Johns 1829 | Robert Stack 1830 | Hanley Stafford 1831 | Jo Stafford 1832 | John Stahl 1833 | Sylvester Stallone 1834 | John Stamos 1835 | Barbara Stanwyck 1836 | Pauline Starke 1837 | Kay Starr 1838 | Ringo Starr 1839 | Ralph Staub 1840 | Eleanor Steber 1841 | Don Steele 1842 | Mary Steenburgen 1843 | Rod Steiger 1844 | Jules C. Stein 1845 | William Steinberg 1846 | Max Steiner 1847 | Ford Sterling 1848 | Jan Sterling 1849 | Robert Sterling 1850 | Bill Stern 1851 | Isaac Stern 1852 | The Steve Miller Band 1853 | Connie Stevens 1854 | George Stevens 1855 | Mark Stevens 1856 | Onslow Stevens 1857 | Anita Stewart 1858 | James "Jimmy" Stewart 1859 | Patrick Stewart 1860 | Rod Stewart 1861 | Mauritz Stiller 1862 | Frederick Stock 1863 | Dean Stockwell 1864 | Leopold Stokowski 1865 | Morris Stoloff 1866 | Andrew L. Stone 1867 | Cliffie Stone 1868 | Ezra Stone 1869 | Fred Andrew Stone 1870 | George E. Stone 1871 | Lewis Stone 1872 | Milburn Stone 1873 | Oliver Stone 1874 | Sharon Stone 1875 | Edith Storey 1876 | Gale Storm 1877 | Bill Stout 1878 | Lee Strasberg 1879 | Igor Stravinsky 1880 | Meryl Streep 1881 | Barbra Streisand 1882 | Gloria Stuart 1883 | John Sturges 1884 | Preston Sturges 1885 | Margaret Sullavan 1886 | Barry Sullivan 1887 | Ed Sullivan 1888 | Yma Sumac 1889 | Donna Summer 1890 | Slim Summerville 1891 | The Supremes 1892 | Donald Sutherland 1893 | Kiefer Sutherland 1894 | Mack Swain 1895 | Hilary Swank 1896 | Gloria Swanson 1897 | Gladys Swarthout 1898 | Patrick Swayze 1899 | Blanche Sweet 1900 | Loretta Swit 1901 | Joseph Szigeti 1902 | George Takei 1903 | Mabel Taliaferro 1904 | Constance Talmadge 1905 | Norma Talmadge 1906 | Akim Tamiroff 1907 | Jessica Tandy 1908 | Norman Taurog 1909 | Elizabeth Taylor 1910 | Estelle Taylor 1911 | Kent Taylor 1912 | Rip Taylor 1913 | Robert Taylor 1914 | Ruth Ashton Taylor 1915 | Renata Tebaldi 1916 | Shirley Temple 1917 | Alec Templeton 1918 | The Temptations 1919 | Alice Terry 1920 | John Tesh 1921 | Irving Thalberg 1922 | Phyllis Thaxter 1923 | Blanche Thebom 1924 | Charlize Theron 1925 | Bob Thomas 1926 | Danny Thomas 1927 | Jay Thomas 1928 | John Charles Thomas 1929 | Lowell Thomas 1930 | Marlo Thomas 1931 | Bill Thompson 1932 | Emma Thompson 1933 | Fred Thomson 1934 | Billy Bob Thornton 1935 | Richard Thorpe 1936 | The Three Stooges 1937 | Lawrence Tibbett 1938 | Gene Tierney 1939 | Steve Tisch 1940 | Genevieve Tobin 1941 | Thelma Todd 1942 | Franchot Tone 1943 | Regis Toomey 1944 | Mel Torme 1945 | David Torrence 1946 | Ernest Torrence 1947 | Arturo Toscanini 1948 | Maurice Tourneur 1949 | Lee Tracy 1950 | Spencer Tracy 1951 | Helen Traubel 1952 | Fred Travalena 1953 | Randy Travis 1954 | John Travolta 1955 | Arthur Treacher 1956 | Alex Trebek 1957 | Claire Trevor 1958 | Laurence Trimble 1959 | Ernest Truex 1960 | Donald Trump 1961 | Ernest Tubb 1962 | Forrest Tucker 1963 | Sophie Tucker 1964 | Tom Tully 1965 | Charlie Tuna 1966 | Tommy Tune 1967 | Lana Turner 1968 | Ted Turner 1969 | Tina Turner 1970 | Ben Turpin 1971 | Lurene Tuttle 1972 | Shania Twain 1973 | Helen Twelvetrees 1974 | Cicely Tyson 1975 | Robert Urich 1976 | Vera Vague 1977 | Ritchie Valens 1978 | Jack Valenti 1979 | Rudolph Valentino 1980 | Rudy Vallee 1981 | Virginia Valli 1982 | Mamie Van Doren 1983 | Dick Van Dyke 1984 | W.S. "Woody" Van Dyke 1985 | Jo Van Fleet 1986 | Dick Van Patten 1987 | Vivian Vance 1988 | Luther Vandross 1989 | Sarah "Sassy" Vaughan 1990 | Robert Vaughn 1991 | Lupe Velez 1992 | Evelyn Venable 1993 | Billy Vera 1994 | Elena Verdugo 1995 | Bobby Vernon 1996 | Charles Vidor 1997 | King Vidor 1998 | Gene Vincent 1999 | Helen Vinson 2000 | Bobby Vinton 2001 | Josef von Sternberg 2002 | Erich Von Stroheim 2003 | Harry von Zell 2004 | Lindsay Wagner 2005 | Robert Wagner 2006 | Roger Wagner 2007 | Mark Wahlberg 2008 | Jimmy Wakely 2009 | Clint Walker 2010 | Robert Walker 2011 | Mike Wallace 2012 | Richard Wallace 2013 | James "Jimmy" Wallington 2014 | Raoul Walsh 2015 | Ray Walston 2016 | Bruno Walter 2017 | Barbara Walters 2018 | Charles Walters 2019 | Henry "Little Colonel" B. Walthall 2020 | Christoph Waltz 2021 | Judge Joseph Wapner 2022 | Jay Ward 2023 | Fred Waring 2024 | H.B. Warner 2025 | Harry Warner 2026 | Jack Warner 2027 | Sam Warner 2028 | Diane Warren 2029 | Ruth Warrick 2030 | Dionne Warwick 2031 | Lew Wasserman 2032 | Willard Waterman 2033 | Sam Waterston 2034 | The Watson Family 2035 | John Wayne 2036 | Dennis Weaver 2037 | Sigourney Weaver 2038 | Clifton Webb 2039 | Jack Webb 2040 | Richard Webb 2041 | Sir Andrew Lloyd Webber 2042 | Lois Weber 2043 | Ted Weems 2044 | Jerry Weintraub 2045 | Johnny Weissmuller 2046 | Raquel Welch 2047 | Lawrence Welk 2048 | Orson Welles 2049 | William Wellman 2050 | John Wells 2051 | Bill Welsh 2052 | Adam West 2053 | Mae West 2054 | The Westmores 2055 | Paul Weston 2056 | Haskell Wexler 2057 | Forest Whitaker 2058 | Alice White 2059 | Barry White 2060 | Betty White 2061 | Jack White 2062 | Jules White 2063 | Pearl White 2064 | Vanna White 2065 | Paul Whiteman 2066 | Barbara Whiting 2067 | Margaret Whiting 2068 | Slim Whitman 2069 | Stuart Whitman 2070 | James Whitmore 2071 | Dick Whittinghill 2072 | Richard Widmark 2073 | Henry Frederick Wilcoxon 2074 | Cornel Wilde 2075 | Billy Wilder 2076 | Warren William 2077 | Andy Williams 2078 | Bill Williams 2079 | Billy Dee Williams 2080 | Cindy Williams 2081 | Earle Raphael Williams 2082 | Esther Williams 2083 | Guy Williams 2084 | Hank Williams 2085 | Joe Williams 2086 | Kathlyn Williams 2087 | Paul Williams 2088 | Pharrell Williams 2089 | Robin Williams 2090 | Roger Williams 2091 | Tex Williams 2092 | Vanessa Williams 2093 | Bruce Willis 2094 | Dave Willock 2095 | Chill Wills 2096 | Meredith Willson 2097 | Carey Wilson 2098 | Don Wilson 2099 | Lois Wilson 2100 | Marie Wilson 2101 | Nancy Wilson 2102 | Paul Winchell 2103 | Walter Winchell 2104 | Claire Windsor 2105 | Marie Windsor 2106 | Toby Wing 2107 | Henry Winkler 2108 | Irwin Winkler 2109 | Charles Winninger 2110 | Kate Winslet 2111 | Stan Winston 2112 | Hugo Winterhalter 2113 | Jonathan Winters 2114 | Shelley Winters 2115 | Robert Wise 2116 | Jane Withers 2117 | Reese Witherspoon 2118 | Dick Wolf 2119 | David L. Wolper 2120 | Stevie Wonder 2121 | Anna May Wong 2122 | Natalie Wood 2123 | Sam Wood 2124 | Donald Woods 2125 | James Woods 2126 | Joanne Woodward 2127 | Monty Woolley 2128 | Fay Wray 2129 | Teresa Wright 2130 | Jane Wyatt 2131 | William Wyler 2132 | Jane Wyman 2133 | Ed Wynn 2134 | Keenan Wynn 2135 | Dwight Yoakam 2136 | Michael York 2137 | Alan Young 2138 | Carleton Young 2139 | Clara Kimball Young 2140 | Gig Young 2141 | Loretta Young 2142 | Robert Young 2143 | Roland Young 2144 | Victor Young 2145 | Florian ZaBach 2146 | Darryl Zanuck 2147 | Richard D. Zanuck 2148 | Carmen Zapata 2149 | Renee Zellweger 2150 | Robert Zemeckis 2151 | Efrem Jr. Zimbalist 2152 | Hans Zimmer 2153 | Fred Zinnemann 2154 | Adolph Zukor 2155 | --------------------------------------------------------------------------------