{"id":7312,"date":"2020-06-19T12:35:01","date_gmt":"2020-06-19T12:35:01","guid":{"rendered":"https:\/\/www.price2spy.com\/blog\/?p=7312"},"modified":"2020-07-28T11:01:02","modified_gmt":"2020-07-28T11:01:02","slug":"part-10-product-matching-via-ml-the-results","status":"publish","type":"post","link":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/","title":{"rendered":"(Part #10) Product matching via ML: The results"},"content":{"rendered":"\n<p><a rel=\"noreferrer noopener\" aria-label=\" Product matching in Price2Spy  (opens in a new tab)\" href=\"https:\/\/www.price2spy.com\/en\/pricing\/product-matching.html\" target=\"_blank\"> Product matching in Price2Spy <\/a><\/p>\n\n\n\n<p><strong>Previous topic: <\/strong> <a href=\"https:\/\/www.price2spy.com\/blog\/part-9-ml-does-work-but-its-not-magic\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"(Part #9) ML does work, but it\u2019s not magic  (opens in a new tab)\">(Part #9) ML does work, but it\u2019s not magic <\/a><\/p>\n\n\n\n<p>Overall results did vary from one industry to another, from one client to another \u2013 is also very much depended on factors N (number of matching candidates) and M (the ease of match approval vs establishing a match fully manually) \u2013 but we were very happy to see the final result:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>The amount of work saved was ranging between 50% and 80%<\/strong><\/li><li><strong>The overall project time was reduced between 45% and 75%<\/strong><\/li><li><strong>We have delivered 100% accurate matches<\/strong><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"314\" src=\"https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1.png\" alt=\"ML results\" class=\"wp-image-7313\" srcset=\"https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1.png 600w, https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1-768x401.png 768w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<p>However, the gain was not universal, there were some important conditions that must be met in order for the ML process to make economic sense:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Number of client\u2019s product (Set A) would have to be over 10K (otherwise the ML data preparation overhead will be too big)<\/li><li>The lower the expected matching rate is expected, the bigger the benefit of the ML process<\/li><li>ML matching process is yet to be confirmed for non-western scripts (for example Chinese, Arabic, Russian)<\/li><li>Products with variations (many products with different sizes, colours, or other types of variations) can be matched via ML, but they will negatively impact the ML benefit.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Lessons learned<\/h3>\n\n\n\n<p><a href=\"https:\/\/www.price2spy.com\/\">Price2spy<\/a> did not achieve the original goal we have set (full automation of the product matching process) \u2013 but we have found a viable alternative, and we have learned important lessons:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Human work in <a href=\"https:\/\/www.price2spy.com\/en\/pricing\/product-matching.html\">product matching<\/a> will be very difficult to eliminate. Instead, we should focus on decreasing it<\/li><li>If used carefully, ML matching process can save between 50% and 80% amount of work and between 45% and 75% of the time needed for the project<\/li><li>Data collected from competitors\u2019 websites can be very unreliable (it has been populated by humans, after all), and needs QA and cleansing before feeding it into ML process<\/li><li>Where applicable, Automatch is still superior to ML \u2013 simply because ML does require humans to do the final touch, while Automatch does not. The problem is \u2013 there are many cases where Automatch is not applicable<\/li><li>ML product matching is superior to Hybrid Automatch<\/li><\/ul>\n\n\n\n<p>Of course, we\u2019re not done with ML, nor with ML product matching. Right now, we\u2019re working on the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Checking ML process applicability on languages using non-Western scripts<\/li><li>Further improving ML efficiency by adding the ability to compare product images (so far, our ML process was purely about text and numbers)<\/li><li>Other lines of business where ML can be applied<\/li><\/ul>\n\n\n\n<p>We\u2019ll keep you posted \ud83d\ude42<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Special thanks<\/h3>\n\n\n\n<p>My special thanks go to:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Du\u0161an Popovi\u0107<\/strong> \u2013 External ML expert. Without Du\u0161an\u2019s expertise, we simply wouldn\u2019t know where to start. He has set up foundation of our ML workflow and taught us valuable techniques and tricks (for example blocking). Du\u0161an continued to contribute to the project even after migrating the project from Python to Java<\/li><li><strong>Andrija Kova\u010devi\u0107 <\/strong>\u2013 Price2Spy\u2019s CTO. Andrija jumped on our ML project without a day of formal training, but after 18 months on the project, I count him as a serious ML authority.<\/li><li><strong>Sandra Tasi\u0107<\/strong> \u2013 head of Price2Spy\u2019s manual product matching team. Sandra was quick to evaluate our ML experiments (even when the results were far from good), also at times when her hands were full of work to be done for clients.<\/li><li><strong>Nenad \u0110or\u0111evi\u0107<\/strong> and <strong>Jana \u0106ur\u010di\u0107 <\/strong>\u2013 taken over the operational work from Andrija.<\/li><\/ul>\n\n\n\n<p><strong>If you are interested to learn more, please visit these links:<\/strong><\/p>\n\n\n\n<p> <a rel=\"noreferrer noopener\" href=\"https:\/\/www.price2spy.com\/en\/pricing\/product-matching.html\" target=\"_blank\"> Product matching in Price2Spy <\/a> <\/p>\n\n\n\n<p> <strong>Previous topic:<\/strong>  <a rel=\"noreferrer noopener\" href=\"https:\/\/www.price2spy.com\/blog\/part-9-ml-does-work-but-its-not-magic\/\" target=\"_blank\">(Part #9) ML does work, but it\u2019s not magic <\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Product matching in Price2Spy Previous topic: (Part #9) ML does work, but it\u2019s not magic Overall results did vary from one industry to another, from one client to another \u2013 is also very much depended on factors N (number of matching candidates) and M (the&#8230;<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108,167],"tags":[190,645,646,15,81],"class_list":["post-7312","post","type-post","status-publish","format-standard","hentry","category-best-practices","category-new-price2spy-features","tag-ecommerce","tag-machine-learning","tag-ml","tag-price2spy","tag-product-matching"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>(Part #10) Product matching via ML: The results<\/title>\n<meta name=\"description\" content=\"It was a long way, but we did it! If you stayed with us until now, let us present to you the result of our Product matching via ML project!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"(Part #10) Product matching via ML: The results\" \/>\n<meta property=\"og:description\" content=\"It was a long way, but we did it! If you stayed with us until now, let us present to you the result of our Product matching via ML project!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/\" \/>\n<meta property=\"og:site_name\" content=\"Price2Spy\u00ae Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Price2Spy\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-19T12:35:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-28T11:01:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1.png\" \/>\n<meta name=\"author\" content=\"Mi\u0161a Kruni\u0107\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Price2Spy\" \/>\n<meta name=\"twitter:site\" content=\"@Price2Spy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mi\u0161a Kruni\u0107\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"(Part #10) Product matching via ML: The results","description":"It was a long way, but we did it! If you stayed with us until now, let us present to you the result of our Product matching via ML project!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/","og_locale":"en_US","og_type":"article","og_title":"(Part #10) Product matching via ML: The results","og_description":"It was a long way, but we did it! If you stayed with us until now, let us present to you the result of our Product matching via ML project!","og_url":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/","og_site_name":"Price2Spy\u00ae Blog","article_publisher":"https:\/\/www.facebook.com\/Price2Spy\/","article_published_time":"2020-06-19T12:35:01+00:00","article_modified_time":"2020-07-28T11:01:02+00:00","og_image":[{"url":"https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1.png","type":"","width":"","height":""}],"author":"Mi\u0161a Kruni\u0107","twitter_card":"summary_large_image","twitter_creator":"@Price2Spy","twitter_site":"@Price2Spy","twitter_misc":{"Written by":"Mi\u0161a Kruni\u0107","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/#article","isPartOf":{"@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/"},"author":{"name":"Mi\u0161a Kruni\u0107","@id":"https:\/\/www.price2spy.com\/blog\/#\/schema\/person\/382ac9db90cb7d6dd54b9425857fc96c"},"headline":"(Part #10) Product matching via ML: The results","datePublished":"2020-06-19T12:35:01+00:00","dateModified":"2020-07-28T11:01:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/"},"wordCount":591,"commentCount":0,"image":{"@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/#primaryimage"},"thumbnailUrl":"https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1.png","keywords":["ecommerce","machine learning","ml","price2spy","product matching"],"articleSection":["Best practices in price monitoring","New Price2Spy features"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/","url":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/","name":"(Part #10) Product matching via ML: The results","isPartOf":{"@id":"https:\/\/www.price2spy.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/#primaryimage"},"image":{"@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/#primaryimage"},"thumbnailUrl":"https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1.png","datePublished":"2020-06-19T12:35:01+00:00","dateModified":"2020-07-28T11:01:02+00:00","author":{"@id":"https:\/\/www.price2spy.com\/blog\/#\/schema\/person\/382ac9db90cb7d6dd54b9425857fc96c"},"description":"It was a long way, but we did it! If you stayed with us until now, let us present to you the result of our Product matching via ML project!","breadcrumb":{"@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/#primaryimage","url":"https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1.png","contentUrl":"https:\/\/www.price2spy.com\/blog\/wp-content\/uploads\/2020\/06\/Testing-on-various-industries-1.png","width":600,"height":314},{"@type":"BreadcrumbList","@id":"https:\/\/www.price2spy.com\/blog\/part-10-product-matching-via-ml-the-results\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.price2spy.com\/blog\/"},{"@type":"ListItem","position":2,"name":"(Part #10) Product matching via ML: The results"}]},{"@type":"WebSite","@id":"https:\/\/www.price2spy.com\/blog\/#website","url":"https:\/\/www.price2spy.com\/blog\/","name":"Price2Spy\u00ae Blog","description":"Price2Spy\u00ae","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.price2spy.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.price2spy.com\/blog\/#\/schema\/person\/382ac9db90cb7d6dd54b9425857fc96c","name":"Mi\u0161a Kruni\u0107","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31aa4afb2464eca1f1ca0c7979628c87e54e7a6b53ebcb371749e9349d27c850?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31aa4afb2464eca1f1ca0c7979628c87e54e7a6b53ebcb371749e9349d27c850?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31aa4afb2464eca1f1ca0c7979628c87e54e7a6b53ebcb371749e9349d27c850?s=96&d=mm&r=g","caption":"Mi\u0161a Kruni\u0107"},"description":"Father of 2, Husband of 1, CEO of 3 :-)","sameAs":["http:\/\/www.price2spy.com"],"url":"https:\/\/www.price2spy.com\/blog\/author\/misha\/"}]}},"_links":{"self":[{"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/posts\/7312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/comments?post=7312"}],"version-history":[{"count":2,"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/posts\/7312\/revisions"}],"predecessor-version":[{"id":7419,"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/posts\/7312\/revisions\/7419"}],"wp:attachment":[{"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/media?parent=7312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/categories?post=7312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.price2spy.com\/blog\/wp-json\/wp\/v2\/tags?post=7312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}