Recommendation systems using collaborative filtering are generally viewed to outperform content-based systems when there is an appropriate amount of data available such as usage and rating data. However, content-based recommendation systems can bring significant improvements compared to collaborative filtering in cases where there is limited data available such as in the case with “cold” users and items, live events, news, etc. Collaborative filtering can also be less performant in cases where users are seeking recommendation diversification for items that are based, for example, on some logical relationship such as the same actor and genre for movie items. In addition, because collaborative filtering recommendations are typically based on a usage model that comprises a set of users who liked items and who are in the user's network (i.e., share similar behaviors, are friends with user, etc.), explanations are inherently limited as to the reasons a particular item is recommended to a user.
This Background is provided to introduce a brief context for the Summary and Detailed Description that follow. This Background is not intended to be an aid in determining the scope of the claimed subject matter nor be viewed as limiting the claimed subject matter to implementations that solve any or all of the disadvantages or problems presented above.
A recommendation system is implemented using modified matrix factorization on top of a content-based matrix to determine both user-to-item and item-to-item content-based recommendations while exposing the full depth of transitive relationships among recommendations. Content information such as features and characteristics may be represented in a usage matrix in which features are treated as users would be in traditional usage matrix factorization. Matrix factorization is applied to this “features-as-users” matrix to build a content-based item model in which items are embedded in a low dimension latent space. User history is factorized using the item model to generate a user model that is employed for system training. By locating user vectors within the latent space, recommendations that are near to the vector can be provided to the users along with explanations (e.g., a recommendation is given because of an item's proximity to a particular feature).
In various illustrative examples, weighting can be applied when building the features-as-users matrix to give a particular feature/characteristic more relative weight when it is more dominating. For example, with movie features, the movie's genre can be given more weight than the movie's location or setting. A usage model (e.g., one created using conventional collaborative filtering) may be combined with a content-based model to create a parallel system in which selection logic may be applied to provide recommendations from one model or the other based on context and/or other factors. Explanations from the content-based model can also be applied to recommendations from the usage-based model.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. It may be appreciated that the above-described subject matter may be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as one or more computer-readable storage media. These and various other features may be apparent from a reading of the following Detailed Description and a review of the associated drawings.
Like reference numerals indicate like elements in the drawings. Elements are not drawn to scale unless otherwise indicated.
Local content 120, including apps, games, and/or media content may also be utilized and/or consumed in order to provide a particular user experience in the environment 100. In some cases the local content 120 is obtained from removable sources such as optical discs including DVDs (Digital Versatile Discs) and CDs (Compact Discs) while in others, the local content is downloaded from a remote source and saved locally. Games, content, apps, and other user experiences may execute locally on the multimedia console 114, be hosted remotely by the entertainment service 102, or use a combination of local and remote execution in some cases using local or networked content/apps/games as appropriate. User experiences can be shared in some cases. For example, a game 106 may be one in which multiple other players 124 with other computing devices can participate. In some implementations, a user experience can also be shared on a social network 126.
The user 112 can typically interact with the multimedia console 114 using a variety of different interface devices including a camera system 128 that can be used to sense visual commands, motions, and gestures, and a headset 130 or other type of microphone or audio capture device/system. In some cases a microphone and camera can be combined into a single device. The user 112 may also utilize a controller 132 to interact with the multimedia console 114. The controller 132 may include a variety of physical controls including joysticks, a directional pad (D-pad), and buttons. One or more triggers and/or bumpers (not shown) may also be incorporated into the controller 132. The user 112 will typically interact with a user interface (UI) 134 that is shown on a display device 136 such as a television or monitor. It is emphasized that the number of controls utilized and the features and functionalities supported by the user controls implemented in the camera system 128, audio capture system, and controller 132 can vary from what is shown in
As shown in
The recommendations 210 can vary by context and implementation but generally will relate to various apps, games, media content, and other content/experiences that the user 112 may wish to consider for present or future consumption. The recommendations can be surfaced in response to user queries seeking recommended content in some cases, or be surfaced opportunistically when the system determines from the attendant circumstances that the user could benefit from receiving recommendations. In some implementations, the various controls can be implemented to enable the user to control how and when recommendations are provided (e.g., user preferences, etc.) as well as provide feedback as to the appropriateness of recommendations that can be utilized for system and/or dataset tuning and improvements.
The telemetry data 220 may be populated into a dataset 300 that may be utilized by the recommendation system 205 as represented in
A recommendation 210 may be further associated with a corresponding explanation 405 as shown in
In step 505, the telemetry data 220 (
The FaU may be represented mathematically as
such that the value of cell Cij is determined as:
Returning to the flowchart in
F*V
T
=FaU
Matrix F is composed of K rows which are vectors in a d-dimensional latent space. The vector in row i is marked by fiεRd, and holds the low dimensional latent representation of the feature i. The dimensionality (d) is usually low (e.g., d=50). Matrix V is composed of N rows which are vectors in a d-dimensional latent space. The vector in row j is marked by vjεRd, and holds the low dimensional latent representation of the an item j. The dimensionality (d) is usually low (e.g., d=50).
Given a dataset of binary item-feature relations
the probability of cij=1 is modeled by
Pr(cij=1|fi,vj)=(σ(fi′vj;w))r(1−σ(fi′vj;w))1-r
where σ(x; s) is a logistic function with a weight or strength s as follows:
The overall likelihood of the model is simply
Πc
Adding Gaussian priors on all the parameters, the posterior may be written down and any feasible inference methods may be used to learn the parameters. In this particular illustrative example, variational Bayes inference is utilized to approximate the posterior on the parameters.
It may be appreciated that the processes used to build the content-based item model have some similarities to conventional collaborative filtering matrix factorization. In terms of the modeling, however, there are two main differences between this factorization and a typical usage based system: First, with the content-based item model, the entire FaU matrix is factorized, while in a usage-based system, the negative examples (zeros cells) may typically be sampled. Second, with the content-based item model, different weights may be given to positive and negative examples compared to a usage-based system where all examples are typically given an identical weight value of ‘1’. The positive examples in the present model may receive the standard weight value of ‘1’, but for the negative values, a different weight may be utilized which is typically lower and selected using cross validation.
The learned matrix V is the content-based item model. It can be used to train users or to compute item-to-item relations.
In step 525 in
U*V
T
=R.
In step 530, user-to-item recommendations may be generated using the user model U, and item-to-item recommendations may be generated using the content-based item model V in step 535. The recommendation generation in steps 530 and 535 can be implemented in a similar manner as with conventional matrix factorization-based recommendation systems.
In step 540, different recommendations using the different models can be combined and/or interleaved in some manner. For example, usage-based recommendations may vary from content-based recommendations. With the former, recommendations may lean towards traditional collaborative results, while with the latter, recommendations may lean more towards features. The combining and interleaving may be performed in some implementations using the recommendation system as configured as shown in
Returning again to
A number of program modules may be stored on the hard disk, magnetic disk 933, optical disk 943, ROM 917, or RAM 921, including an operating system 955, one or more application programs 957, other program modules 960, and program data 963. A user may enter commands and information into the computer system 900 through input devices such as a keyboard 966 and pointing device 968 such as a mouse. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, trackball, touchpad, touch screen, touch-sensitive device, voice-command module or device, user motion or user gesture capture device, or the like. These and other input devices are often connected to the processor 905 through a serial port interface 971 that is coupled to the system bus 914, but may be connected by other interfaces, such as a parallel port, game port, or universal serial bus (USB). A monitor 973 or other type of display device is also connected to the system bus 914 via an interface, such as a video adapter 975. In addition to the monitor 973, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. The illustrative example shown in
The computer system 900 is operable in a networked environment using logical connections to one or more remote computers, such as a remote computer 988. The remote computer 988 may be selected as another personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computer system 900, although only a single representative remote memory/storage device 990 is shown in
When used in a LAN networking environment, the computer system 900 is connected to the local area network 993 through a network interface or adapter 996. When used in a WAN networking environment, the computer system 900 typically includes a broadband modem 998, network gateway, or other means for establishing communications over the wide area network 995, such as the Internet. The broadband modem 998, which may be internal or external, is connected to the system bus 914 via a serial port interface 971. In a networked environment, program modules related to the computer system 900, or portions thereof, may be stored in the remote memory storage device 990. It is noted that the network connections shown in
The architecture 1000 illustrated in
The mass storage device 1012 is connected to the CPU 1002 through a mass storage controller (not shown) connected to the bus 1010. The mass storage device 1012 and its associated computer-readable storage media provide non-volatile storage for the architecture 1000.
Although the description of computer-readable storage media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it may be appreciated by those skilled in the art that computer-readable storage media can be any available storage media that can be accessed by the architecture 1000.
By way of example, and not limitation, computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM (erasable programmable read only memory), EEPROM (electrically erasable programmable read only memory), Flash memory or other solid state memory technology, CD-ROM, DVDs, HD-DVD (High Definition DVD), Blu-ray, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the architecture 1000.
According to various embodiments, the architecture 1000 may operate in a networked environment using logical connections to remote computers through a network. The architecture 1000 may connect to the network through a network interface unit 1016 connected to the bus 1010. It may be appreciated that the network interface unit 1016 also may be utilized to connect to other types of networks and remote computer systems. The architecture 1000 also may include an input/output controller 1018 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in
It may be appreciated that the software components described herein may, when loaded into the CPU 1002 and executed, transform the CPU 1002 and the overall architecture 1000 from a general-purpose computing system into a special-purpose computing system customized to facilitate the functionality presented herein. The CPU 1002 may be constructed from any number of transistors or other discrete circuit elements, which may individually or collectively assume any number of states. More specifically, the CPU 1002 may operate as a finite-state machine, in response to executable instructions contained within the software modules disclosed herein. These computer-executable instructions may transform the CPU 1002 by specifying how the CPU 1002 transitions between states, thereby transforming the transistors or other discrete hardware elements constituting the CPU 1002.
Encoding the software modules presented herein also may transform the physical structure of the computer-readable storage media presented herein. The specific transformation of physical structure may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the computer-readable storage media, whether the computer-readable storage media is characterized as primary or secondary storage, and the like. For example, if the computer-readable storage media is implemented as semiconductor-based memory, the software disclosed herein may be encoded on the computer-readable storage media by transforming the physical state of the semiconductor memory. For example, the software may transform the state of transistors, capacitors, or other discrete circuit elements constituting the semiconductor memory. The software also may transform the physical state of such components in order to store data thereupon.
As another example, the computer-readable storage media disclosed herein may be implemented using magnetic or optical technology. In such implementations, the software presented herein may transform the physical state of magnetic or optical media, when the software is encoded therein. These transformations may include altering the magnetic characteristics of particular locations within given magnetic media. These transformations also may include altering the physical features or characteristics of particular locations within given optical media to change the optical characteristics of those locations. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this discussion.
In light of the above, it may be appreciated that many types of physical transformations take place in the architecture 1000 in order to store and execute the software components presented herein. It may also be appreciated that the architecture 1000 may include other types of computing devices, including handheld computers, embedded computer systems, smartphones, PDAs, and other types of computing devices known to those skilled in the art. It is also contemplated that the architecture 1000 may not include all of the components shown in
A graphics processing unit (GPU) 1108 and a video encoder/video codec (coder/decoder) 1114 form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the GPU 1108 to the video encoder/video codec 1114 via a bus. The video processing pipeline outputs data to an A/V (audio/video) port 1140 for transmission to a television or other display. A memory controller 1110 is connected to the GPU 1108 to facilitate processor access to various types of memory 1112, such as, but not limited to, a RAM.
The multimedia console 114 includes an I/O controller 1120, a system management controller 1122, an audio processing unit 1123, a network interface controller 1124, a first USB (Universal Serial Bus) host controller 1126, a second USB controller 1128, and a front panel I/O subassembly 1130 that are preferably implemented on a module 1118. The USB controllers 1126 and 1128 serve as hosts for peripheral controllers 1142(1) and 1142(2), a wireless adapter 1148, and an external memory device 1146 (e.g., Flash memory, external CD/DVD ROM drive, removable media, etc.). The network interface controller 1124 and/or wireless adapter 1148 provide access to a network (e.g., the Internet, home network, etc.) and may be any of a wide variety of various wired or wireless adapter components including an Ethernet card, a modem, a Bluetooth module, a cable modem, or the like.
System memory 1143 is provided to store application data that is loaded during the boot process. A media drive 1144 is provided and may comprise a DVD/CD drive, hard drive, or other removable media drive, etc. The media drive 1144 may be internal or external to the multimedia console 114. Application data may be accessed via the media drive 1144 for execution, playback, etc. by the multimedia console 114. The media drive 1144 is connected to the I/O controller 1120 via a bus, such as a Serial ATA bus or other high speed connection (e.g., IEEE 1394).
The system management controller 1122 provides a variety of service functions related to assuring availability of the multimedia console 114. The audio processing unit 1123 and an audio codec 1132 form a corresponding audio processing pipeline with high fidelity and stereo processing. Audio data is carried between the audio processing unit 1123 and the audio codec 1132 via a communication link. The audio processing pipeline outputs data to the A/V port 1140 for reproduction by an external audio player or device having audio capabilities.
The front panel I/O subassembly 1130 supports the functionality of the power button 1150 and the eject button 1152, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the multimedia console 114. A system power supply module 1136 provides power to the components of the multimedia console 114. A fan 1138 cools the circuitry within the multimedia console 114.
The CPU 1101, GPU 1108, memory controller 1110, and various other components within the multimedia console 114 are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can include a Peripheral Component Interconnects (PCI) bus, PCI-Express bus, etc.
When the multimedia console 114 is powered ON, application data may be loaded from the system memory 1143 into memory 1112 and/or caches 1102 and 1104 and executed on the CPU 1101. The application may present a graphical user interface that provides a consistent user experience when navigating to different media types available on the multimedia console 114. In operation, applications and/or other media contained within the media drive 1144 may be launched or played from the media drive 1144 to provide additional functionalities to the multimedia console 114.
The multimedia console 114 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, the multimedia console 114 allows one or more users to interact with the system, watch movies, or listen to music. However, with the integration of broadband connectivity made available through the network interface controller 1124 or the wireless adapter 1148, the multimedia console 114 may further be operated as a participant in a larger network community.
When the multimedia console 114 is powered ON, a set amount of hardware resources are reserved for system use by the multimedia console operating system. These resources may include a reservation of memory (e.g., 16 MB), CPU and GPU cycles (e.g., 5%), networking bandwidth (e.g., 8 kbps), etc. Because these resources are reserved at system boot time, the reserved resources do not exist from the application's view.
In particular, the memory reservation preferably is large enough to contain the launch kernel, concurrent system applications, and drivers. The CPU reservation is preferably constant such that if the reserved CPU usage is not used by the system applications, an idle thread will consume any unused cycles.
With regard to the GPU reservation, lightweight messages generated by the system applications (e.g., pop-ups) are displayed by using a GPU interrupt to schedule code to render pop-ups into an overlay. The amount of memory needed for an overlay depends on the overlay area size and the overlay preferably scales with screen resolution. Where a full user interface is used by the concurrent system application, it is preferable to use a resolution independent of application resolution. A scaler may be used to set this resolution such that the need to change frequency and cause a TV re-sync is eliminated.
After the multimedia console 114 boots and system resources are reserved, concurrent system applications execute to provide system functionalities. The system functionalities are encapsulated in a set of system applications that execute within the reserved system resources described above. The operating system kernel identifies threads that are system application threads versus gaming application threads. The system applications are preferably scheduled to run on the CPU 1101 at predetermined times and intervals in order to provide a consistent system resource view to the application. The scheduling arranged is to minimize cache disruption for the gaming application running on the console.
When a concurrent system application requires audio, audio processing is scheduled asynchronously to the gaming application due to time sensitivity. A multimedia console application manager (described below) controls the gaming application audio level (e.g., mute, attenuate) when system applications are active.
Input devices (e.g., controllers 1142(1) and 1142(2)) are shared by gaming applications and system applications. The input devices are not reserved resources, but are to be switched between system applications and the gaming application such that each will have a focus of the device. The application manager preferably controls the switching of input stream, without knowledge of the gaming application's knowledge and a driver maintains state information regarding focus switches.
Based on the foregoing, it may be appreciated that technologies for modified matrix factorization of a content-based model have been disclosed herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological and transformative acts, specific computing machinery, and computer-readable storage media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts, and mediums are disclosed as example forms of implementing the claims.
The subject matter described above is provided by way of illustration only and may not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present modified matrix factorization of a content-based model, which is set forth in the following claims.