Abstract:
In one embodiment, the present invention is directed to a method implemented on a computer system of database retrieval including organizing and suggesting search results by style, not just product category. In one embodiment, a computer implemented smoothing algorithm is used to adjust the ranking feature calculations from insufficient data. The use of smoothing improves the statistical confidence of the ranking features, creating a product ranking that is robust to small sample bias.

Description:
CROSS-REFERENCES TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit priority of U.S. Provisional Patent Application No. 62/104,642, filed Jan. 16, 2015, which is herein incorporated by reference in its entirety. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    The present invention relates to computer database access systems that improve search relevance and ranking for product searches, in particular to ranking of search results in response to a user product query on a website. 
         [0003]    A variety of algorithms exist for ranking search results on the Internet. Search engines typically use past history of the user, along with history of other users who typed in the same terms. User profiles can be created, and a variety of factors (features) can be included in the algorithm. When there is insufficient data for a particular feature, the resulting ranking may reflect the small sample bias. 
         [0004]    Searching for products on a website brings into play different concerns than a general web search for information. Current search algorithms search based on near exact match of query terms and product categories, which often give only a coarse correlation to what a user is searching for. It is also desirable to have a method for appropriately ranking product searches. 
       BRIEF SUMMARY OF THE INVENTION 
       [0005]    In one embodiment, the present invention is directed to a method implemented on a computer system of database retrieval including organizing and suggesting search results by style, not just product category. Style is often thought of as an ephemeral concept, and often the user herself may not know how to describe the style. Style is not only difficult to discern from product categories, it is also not obvious from similar user profiles. Both old and young women, for example, may like a particular designer of handbags. Embodiments of the present invention use the search terms to determine a style by mapping to appropriate database categories, and thus the selection of products to display in the results. The invention provides more relevant data more rapidly than prior methods. “Fetch” is sometimes used herein to refer to an instance of including an item or product in search results for display to a user. For example, an item or product is said to be “fetched” when it is included in search results that are outputted for display to a user. “User-selection” is sometimes used herein to refer to an instance of a user selecting (clicking on) an item or product that is included in search results. 
         [0006]    In one embodiment, the present invention provides a method for ranking product search results based on style. In particular, the style can be a non-demographic factor, such as a particular designer, an era (1920s), an occasion (cocktail or wedding dress), etc. Similar designers can be correlated based on shared popularity within user profiles. Other factors can contribute to style, such as country of manufacture (e.g., Italian v. Chinese handbags), and particular features. For example, handbags that have double stitching, palladium hardware and soft leather can be indicative of a particular style. Other features may be associated with a particular designer, such as bamboo-handled bags for Gucci®. 
         [0007]    In one embodiment, a computer implemented smoothing algorithm is used where there is insufficient data in the database. In the smoothing algorithm, instead of only using data for the product of interest, the data of its parent and ancestral category in the database is also used. For example, for calculating a feature for a Gucci® bag, we not only use data from the database for the particular product, but also data from the database from its parent category (handbags) and ancestral category (women&#39;s accessories) for the product ranking. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]      FIG. 1  is a diagram of a computer generated search results page as displayed on a computer monitor or other device display according to an embodiment of the present invention. 
           [0009]      FIG. 2  is a diagram of a computer implemented database access search ranking software process according to an embodiment of the present invention. 
           [0010]      FIG. 3  is a diagram of a style table stored in a database and used in  FIG. 2  by the computer system according to an embodiment of the present invention. 
           [0011]      FIG. 4  is a diagram illustrating a database category hierarchy used for smoothing according to an embodiment of the present invention. 
           [0012]      FIG. 5  is a diagram of a computer network system for accessing a database product search according to an embodiment of the present invention. 
           [0013]      FIG. 6  is a diagram of a computer system for implementing a search according to an embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Style Ranking 
       [0014]      FIG. 1  is a diagram of a computer generated search results page as displayed on a computer monitor or other device display according to an embodiment of the computer database access system of present invention. The graphical user interface includes a search box  102  which shows an example search string from a user, “modern Gucci® bag with bamboo handle.” Product results from a search based on this search string are shown as results  104 ,  106 ,  108 , etc. These search results are in ranked order based on a method using style inference and smoothing according to embodiments of the invention, as described below. 
         [0015]    In the search string example of  FIG. 1 , the search terms can be classified as category and/or style terms. A category term indicates a class of products, such as shoes, dresses, watches, etc. In the example search string “modern Gucci® bag with bamboo handle,” the term “bag” is a category. Certain terms which are features can also be categories or subcategories. For example, “handle” and “bamboo” can be subcategories. However, the term “modern” may not be a category, and may instead be a style. The term “Gucci®” is both a category and a style. Examples of a pure style term would be “flashy,” “sporty,” and “trendy.” 
         [0016]    In general, for category terms, the user wants to see items in that category. For this search, the user wants to see bags, not shoes. For style terms, the user may want to see alternatives. For example, “modern” may suggest an interest in other brands with modern bags other than Gucci®. 
         [0017]      FIG. 2  is a diagram of a computer implemented database access search ranking software process according to an embodiment of the present invention. One or more search terms  202  are entered by a user on a computer, tablet, mobile device or other computing device. The search terms are digitized, encrypted and packetized, then are transmitted over the Internet or other network to a remote server or computer system. A processor at the remote server or computer system performs analytics on the search terms. A determination is made if each term is a category, style, or both (step  204 ). If a term is a category, it is passed (step  206 ) to a product database search (step  208 ). If a term is a style, it is applied to a style table  210 , with the resulting style terms being weighted (step  212 ). These are used as additional search terms (step  214 ) for the product database search  208 . 
         [0018]    Search results from the product database search are processed using a weighting and smoothing algorithm  216 . The weighting uses the assigned style weights, as well as weights from the user&#39;s own profile (step  218 ), the profiles of similar users (step  220 ) and the most popular searches, most fetches, most purchases, etc. (step  222 ). In addition to the weighting, a smoothing process is used for items with limited history data, as described in more detail below. Based on the weighting and smoothing, a ranked list is generated (step  224 ) and displayed to the user. 
         [0019]      FIG. 3  is a diagram of a style table stored in a database and used in  FIG. 2  by the computer system according to an embodiment of the present invention. Search terms that are determined to be style terms are matched by a processor to an index column  302 . The style table includes features and/or categories that correspond to each style term. In one example, a user may search for a “modern bamboo handle bag.” In this example, “modern” is a style term and is deemed to include jaguar print, flora, crocodile, straw and ostrich. Thus, bags of various designers with these features will be displayed to the user. In this example, “bamboo handle,” while a feature, can also be considered a style because of its association with the Gucci® brand. Thus, Gucci® bags may be shown more prominently in the search results. 
       Smoothing 
       [0020]      FIG. 4  is a diagram illustrating a database category hierarchy used for smoothing according to an embodiment of the present invention. The database category of “Accessories” is shown, with a couple database subcategories illustrated: “bags” and “dresses.” Each database subcategory has a series of products. For “bags,” example products are Gucci® bags and Michael Kors® bags. There can be many more database categories and subcategories as well. In addition, products can be characterized by features, such as black bags, leather bags, etc. 
         [0021]    In some cases, there may be insufficient fetches of a bag to give a true indication of popularity. For example, if there have only been 5 fetches, but 4 purchases of a brown leather Michael Kors® bag, it would seem very popular (80% conversion rate), but there is not as much confidence as if there had been thousands of fetches with the same 80% conversion (purchase) rate. Original definitions of the features do not reflect the lack of confidence due to the low amount of data from the database. The present invention strives to provide a more appropriate adjustment to account for small sample bias. This is done by “smoothing,” as detailed below. The feature of a product is iteratively smoothed, or adjusted, by the same feature calculated from a more general database category similar to this product. In one example, the feature of the next category up in the hierarchy (Michael Kors® bags) is incorporated into the calculation of brown leather Michael Kors® bags. Thus, if there are thousands of fetches of Michael Kors® bags, that is used in addition to the 5 fetches of the particular brown leather bag to improve the statistical significance of the feature calculation. This smoothing procedure is applied iteratively until the information from the root category is also incorporated. A desirable property of this algorithm is that, if the data for the specific product is abundant, the effect of the parent category is minimal or negligible. On the other hand, if the data for the specific product is lacking, the information from the parent category will prevail and the final smoothed feature will be mostly reflect the baseline value, rather than the possibly unreliable sample of the specific product. Note that this is done entirely by the recursive algorithm, with no heuristics necessary to reflect this logic. A weight for substantiating the prior information (data from the parent category) needs to be selected when combining the information from the product itself, versus information from the parent category. This weight can be determined empirically by carrying out experiments to determine the optimal balance. 
         [0022]    In alternate embodiments, the data from the database for a parallel product groups at the same level in the hierarchy can be used, based on their similarity to the product group of interest. The hierarchy can be constructed based on product categorization, brand categorization, retailer categorization, style categorization, or combinations of any logical, hierarchical organization of products. In addition, the smoothing operation can be applied to any features used in ranking, such as time of day/week, seasonality, newness, brand uniqueness, popularity, product user-selection-rate, etc. 
       Smoothing algorithm: 
       [0023]    In one embodiment, the following smoothing algorithm is used. Suppose we have a feature, originally defined to be (feature m)/(feature n), that is part of the set of features used for product ranking. An example of such feature would be user-selection-rate, defined to be (user-selections)/(fetches) (e.g., the number of times users have selected a product, divided by the number of times that product has been included in search results). The following smoothing algorithm provides an adjustment to the original value, such that when insufficient data is present (i.e. when the denominator feature is too few) for calculating the user-selection-rate for Node(i), baseline user-selection-rate from the parent node will be added to “smooth” over the original value. 
         [0000]    Smoothed Node(i)=[Node(i).n+C×Smoothed (parent of Node(i))]/[Node(i).m +C] 
         [0024]    Node(i).m is the counts of the denominator feature m for Node(i). 
         [0025]    Node(i).n is the counts of the numerator feature n for Node(i). 
         [0026]    C is a tunable parameter that represents how much of the prior (parent category) information we take into account. The larger the value it is, the more of the effects of parent category. 
         [0027]    Here&#39;s an example: 
         [0028]    Suppose that we want to use the user-selection-rate (user-selections divided by fetches) of a product as an indicator of how attractive the product is to a user. Suppose that we will rank the products shown to the users using this metric alone. 
         [0029]    For product Gucci® Bag A (i =Gucci® Bag A), Node(i).m would be the total number of fetches Gucci® Bag A had over the last two weeks window of time. 
         [0030]    For product Gucci® Bag A (i =Gucci® Bag A), Node(i).n would be the total number of user-selections Gucci® Bag A received over the last two weeks window of time. 
         [0031]    If we set C to 0 (which is one possibility), then effectively we are just calculating the original user-selection-rate (user-selections divided by fetches) of Gucci® Bag A. What this says is that we only care about the information we receive about this specific product, and we don&#39;t want to take into consideration the baseline user-selection-rate of Category Bags to which it belongs. 
         [0032]    If, let&#39;s say, we decided that we don&#39;t trust the information coming from the product alone, then we can set C to a very large value. If we have a lot of data about this product, the influence coming from the parent category would be minimal. However, if we have very little data about this product, our estimation of its user-selection-rate would be dominated by the user-selection-rate of its parent category. 
         [0033]    Let me use a concrete example to illustrate this. 
         [0034]    Suppose we have two products A and B, both with user-selection-rate of 0.5 and belong to category Bags. 
         [0035]    Product A received 1M fetches and half a million of them resulted in user-selections: 
         [0036]    Non-Smoothed-User-selection-rate(A)=500,000/1,000,000=0.5 
         [0037]    On the other hand, product B received only 4 fetches and 2 of which resulted in user-selections. 
         [0038]    Non-Smoothed-User-selection-rate(B)=2/4=0.5. 
         [0039]    Let&#39;s say the bags category has a user-selection-rate of 0.9. 
         [0040]    If we set C to 10, then the Smoothed user-selection-rate of A and B are: 
         [0041]    Smoothed User-Selection-Rate(A)=(500,000+1*0.9)/(1,000,000+1) =0.5000009, which is very, very close to 0.5—its product specific, non-smoothed user-selection-rate. 
         [0042]    Smoothed-User-selection-rate(B)=(2+10*0.9)/(4+10) =0.78, this is definitely a number closer to its parent user-selection-rate of 0.9. 
         [0043]    If we set C to 0.001, then the Smoothed user-selection-rate of A and B are: 
         [0044]    Smoothed User-Selectin-Rate(A)=(500,000+1*0.001)/(1,000,000+0.001)=0.5000000005, still effectively the same as 0.5 
         [0045]    Smoothed User-Selectin-Rate(B)=(2+10*0.001)/(4+0.001)=0.502, a lot closer to 0.5 than when C was 10. 
       System Diagram 
       [0046]      FIG. 5  is a diagram of computer network system  500  for accessing a database product search according to an embodiment of the present invention. A number of user computing devices  502  and  504  access a server  506  through the Internet  508 . Server  506  accesses database  510 , which contains the product data and style tables. 
         [0047]      FIG. 6  is a high level block diagram of a computer system that may be used to implement any of the entities or components described above, such as server  506  or computing device  502 . The subsystems shown in  FIG. 6  are interconnected via a system bus  602 . Additional subsystems include a printer  604 , keyboard  606 , fixed disk  608 , and monitor  610 , which is coupled to display adapter  612 . Peripherals and input/output (I/O) devices, which couple to I/O controller  614 , can be connected to the computer system by any number of means known in the art, such as a serial port. For example, serial port  616  or external interface  618  can be used to connect the computer apparatus to a wide area network such as the Internet, a mouse input device, or a scanner. The interconnection via system bus  602  allows the central processor  620  to communicate with each subsystem and to control the execution of instructions from system memory  621  or the fixed disk  608 , as well as the exchange of information between subsystems. The system memory  621  and/or the fixed disk may embody a non-transitory computer-readable medium for program instructions.