\chapter{ทฤษฎีที่เกี่ยวข้อง}
ในบทนี้จะกล่าวถึงรายละเอียดเกี่ยวกับทฤษฎีและงานวิจัยที่เกี่ยวของกับการพัฒนาระบบ แนะนำการแต่งกายสุภาพบุรุษและสุภาพสตรี โดยแบ่งเนื้อหาออกเป็น 2 ส่วน ได้แก่ ส่วนที่หนึ่ง เป็นเนื้อหาพื้นฐานเกี่ยวกับทฤษฎีการเขียนโปรแกรมและเทคโนโลยีที่นำมาใช้ในการพัฒนาในหัวข้อที่ 2.1-2.6 ได้แก่ ความรู้พื้นฐานเกี่ยวกับ Visual studio code, PythonAnywhere, Django, SQLite, Collaborative Filtering และภาษา Python  และในส่วนที่สองเป็นเนื้อหาเกี่ยวกับเว็บที่เกี่ยวของกับโครงงานนี้ในหัวข้อที่ 2.7

\section{ความรู้เกี่ยวกับ Visual Studio Code}
	วิชวล สตูดิโอโค้ด (Visual Studio Code) \cite{VisualStudioCode} เป็นโปรแกรม Code Editor ที่ใช้ในการแก้ไขและปรับแต่งโค้ด จากค่ายไมโครซอฟท์ (Microsoft) มีการพัฒนาออกมาในรูปแบบของ OpenSource จึงสามารถนำมาใช้งานได้แบบฟรีที่ต้องการความเป็นมืออาชีพ ซึ่ง Visual Studio Code นั้น เหมาะสำหรับนักพัฒนาโปรแกรมที่ต้องการใช้งานข้ามแพลตฟอร์ม (platform) รองรับการใช้งานทั้งบน Windows, macOS และ Linux สนับสนุนทั้งภาษา JavaScript, TypeScript และ Node.js สามารถเชื่อมต่อกับ Git ได้ นำมาใช้งานได้ง่ายไม่ซับซ้อนมีเครื่องมือส่วนขยายต่าง ๆ ให้เลือกใช้อย่างมาก การเปิดใช้งานภาษาอื่น ๆ ทั้ง ภาษา C++, C#, Java, Python, PHP หรือ Go
	
\section{ความรู้พื้นฐาน Java}
PythonAnywhere \cite{PythonAnywhere} เป็นเว็บไซต์ที่ให้บริการ Online IDE และ Web Hosting Service โดยใช้ภาษา Python เป็นหลัก มี Python Web Framework ต่างๆ เช่น Django, Flask, Bottle สามารถสมัครสมาชิกได้ฟรี หรือสามารถจ่ายเงินเป็นรายเดือนเพื่อเพิ่มความสามารถต่างๆ ได้ โดยสมาชิกแบบฟรีสามารถ Deploy Web App ได้ 1 Web App (ไม่สามารถตั้งชื่อโดเมน Web App เองได้ โดยทางเว็ปไซต์จะให้ใช้ ID เป็นชื่อโดเมนของ Web App)


	\section{ความรู้เกี่ยวกับ Django}
	แจงโก้ (Django) \cite{DjangoFramework} เป็น framework ที่ใช้ในการสร้าง Web Application ในฝั่งของ Back End ที่พัฒนาด้วยภาษา Python โดยในตัว Framework จะมีส่วนประกอบทุกอย่างที่จำเป็นตั้งแต่การเชื่อมต่อฐานข้อมูล ไปจนถึงการ Render ข้อมูลออกมาให้ฝั่ง Front End แสดงผลข้อมูลเหล่านั้นได้ ซึ่ง Framework ในรูปแบบนี้ในภาษาอื่นๆ เช่น Ruby on rails สำหรับภาษา Ruby, Play Framework สำหรับภาษา Java หรือ Scala, Groovy on Grails สำหรับภาษา Groovy, Laravel สำหรับภาษา PHP หรือ Express สำหรับภาษา Javascript ของ Node.js เป็นต้น
	 
	 \subsection{คุณสมบัติของ Django Framework \cite{Python&Django}}
	 \begin{enumerate}
	 	\item Object-Relational Mapper คือ การกำหนด Data Model ในภาษา Python เพื่อการทำงานด้านข้อมูล และสนับสนุน Dynamic Database-Access API
	 	\item Automatic Admin Interface คือ ส่วนของการสร้าง Interface อัตโนมัติสำหรับการ Add, Edit, Delete และ Search ด้วย Django Framework
	 	\item Elegant URL design คือ การทำให้ URL มีความสวยงาม สั้น กระชับ และสื่อความหมายของหน้านั้น ๆ ได้อย่างชัดเจน เหมาะสมกับการทำ SEO ในปัจจุบัน
	 	\item Template System คือ Django นั้นมีการออกแบบ Template Language เพื่อการเขียนแยกส่วนระหว่าง Design และ Business Logic
	 	\item Cache System คือ ส่วนของการบันทึก หรือจัดการข้อมูลที่มีการดาวน์โหลดไปแล้ว เพื่อเพิ่มประสิทธิภาพการทำงานของเว็บไซต์ด้านความเร็ว และด้านอื่น ๆ
	 	\item nternationalization คือ Django สนับสนุน Application ที่มีความหลากหลายด้านภาษาในการแสดงผล
	 \end{enumerate}

	 \section{ความรู้เกี่ยวกับ SQLite}
	 เอสคิวแอลไลท์ (SQLite) \cite{SQLite} เป็นห้องสมุดที่น่าทึ่งที่ฝังตัวอยู่ภายในแอปพลิเคชันที่ใช้งาน ในฐานะที่เป็นฐานข้อมูลแบบไฟล์ในตัว SQLite มีชุดเครื่องมือที่ยอดเยี่ยมในการจัดการข้อมูลทุกประเภทโดยมีข้อ จำกัด และความสะดวกน้อยกว่ามากเมื่อเปรียบเทียบกับฐานข้อมูลเชิงสัมพันธ์แบบโฮสต์กระบวนการ (เซิร์ฟเวอร์)
	 \newline
	 \indent
	 เมื่อแอปพลิเคชันใช้ SQLite กาพรวมจะทำงานกับการเรียกใช้งานและการโทรโดยตรงกับไฟล์ที่เก็บข้อมูล (เช่นฐานข้อมูล SQLite) แทนการสื่อสารผ่านอินเทอร์เฟซประเภท (พอร์ตพอร์ตซ็อกเก็ต) สิ่งนี้ทำให้ SQLite รวดเร็วและมีประสิทธิภาพเป็นอย่างยิ่งและยังมีเทคโนโลยีพื้นฐาน
	 \newline
	 \indent
	 ประเภทข้อมูลที่สนับสนุนของ SQLite
	 \begin{itemize}
	 	\item โมฆะ:
	 \end{itemize}
	  ค่า NULL
	  \begin{itemize}
	  	\item จำนวนเต็ม:
	  \end{itemize}
	  เลขจำนวนเต็มที่ลงนามซึ่งเก็บใน 1, 2, 3, 4, 6 หรือ 8 ไบต์ขึ้นอยู่กับขนาดของค่า
	  \begin{itemize}
	  	\item จริง:
	  \end{itemize}
	  ค่าจุดลอยตัวเก็บไว้เป็นหมายเลขทศนิยม IEEE 8 ไบต์
	  \begin{itemize}
	  	\item ข้อความ:
	  \end{itemize}
	  สตริงข้อความที่จัดเก็บโดยใช้การเข้ารหัสฐานข้อมูล (UTF-8, UTF-16BE หรือ UTF-16LE)
	  \begin{itemize}
	  	\item หยด:
	  \end{itemize}
	  หยดของข้อมูลที่จัดเก็บเหมือนกับข้อมูลที่ป้อนเข้า
	  \newline
	  หมายเหตุ: หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับประเภทข้อมูลของ SQLite และความสัมพันธ์ประเภท SQLite ให้ตรวจสอบเอกสารอย่างเป็นทางการเกี่ยวกับเรื่องนี้
	  \newline
	  \indent
	  ข้อดีของ SQLite
	  \begin{itemize}
	  	\item ไฟล์ที่ใช้:
	  \end{itemize}
	  ฐานข้อมูลทั้งหมดประกอบด้วยไฟล์เดียวบนดิสก์ซึ่งทำให้พกพาได้อย่างมาก
	  \begin{itemize}
	  	\item มาตรฐานการตระหนักถึง:
	  \end{itemize}
	  แม้ว่ามันอาจดูเหมือนการใช้งานฐานข้อมูล“ แบบง่าย” แต่ SQLite ก็ใช้ SQL มันมีคุณสมบัติบางอย่างที่ถูกละเว้น (เข้าร่วมขวาหรือเพื่อแต่ละงบ) แต่บางส่วนเพิ่มเติมจะถูกอบเข้า
	  \begin{itemize}
	  	\item เหมาะสำหรับการพัฒนาและการทดสอบ:
	  \end{itemize}
	  ในระหว่างขั้นตอนการพัฒนาแอปพลิเคชั่นส่วนใหญ่สำหรับคนส่วนใหญ่มีแนวโน้มที่จะต้องการโซลูชันที่สามารถปรับขนาดสำหรับการทำงานพร้อมกัน SQLite ซึ่งมีฐานคุณลักษณะที่หลากหลายสามารถให้มากกว่าสิ่งที่จำเป็นสำหรับการพัฒนาด้วยความเรียบง่ายในการทำงานกับไฟล์เดียวและไลบรารีบนฐาน C ที่เชื่อมโยง
	  \newline
	  \indent
	  ข้อเสียของ SQLite
	  \begin{itemize}
	  	\item ไม่มีการจัดการผู้ใช้:
	  \end{itemize}
	  ฐานข้อมูลขั้นสูงมาพร้อมกับการสนับสนุนสำหรับผู้ใช้เช่นการเชื่อมต่อที่มีการจัดการที่มีสิทธิ์ตั้งค่าการเข้าถึงฐานข้อมูลและตาราง เมื่อพิจารณาถึงวัตถุประสงค์และลักษณะของ SQLite (ไม่มีระดับที่สูงขึ้นของการทำงานพร้อมกันของไคลเอนต์หลายรายการ) คุณลักษณะนี้ไม่มีอยู่
	  \begin{itemize}
	 	\item ขาดความเป็นไปได้ที่จะจัดด้วยสำหรับประสิทธิภาพเพิ่มเติม
	 \end{itemize}
	 อีกครั้งโดยการออกแบบ SQLite เป็นไปไม่ได้ที่จะได้รับประสิทธิภาพที่เพิ่มขึ้นอย่างมาก ไลบรารี่นั้นง่ายต่อการปรับแต่งและใช้งานง่าย เนื่องจากมันไม่ซับซ้อนจึงเป็นไปไม่ได้ในทางเทคนิคที่จะทำให้มันมีประสิทธิภาพมากกว่ามันแล้วน่าประหลาดใจคือ
	 \newline
	 \indent
	 เมื่อต้องการใช้ SQLite
	 \begin{itemize}
	 	\item แอปพลิเคชันแบบฝัง:
	 \end{itemize}
	 แอปพลิเคชันทั้งหมดที่ต้องการความสะดวกในการพกพาซึ่งไม่จำเป็นต้องมีการขยายเช่น แอพพลิเคชั่นในท้องถิ่นแอปพลิเคชันมือถือหรือเกม
	 \begin{itemize}
	 	\item การแทนที่การเข้าถึงดิสก์:
	 \end{itemize}
 		ในหลายกรณีแอปพลิเคชันที่จำเป็นต้องอ่าน / เขียนไฟล์ไปยังดิสก์โดยตรงจะได้ประโยชน์จากการสลับไปใช้ SQLite สำหรับการทำงานเพิ่มเติมและความเรียบง่ายที่มาจากการใช้ภาษาที่มีโครงสร้างของแบบสอบถาม (SQL)
 	 \begin{itemize}
 		\item การทดสอบ:
 	\end{itemize}
 	มันเกินความเป็นจริงสำหรับแอปพลิเคชันขนาดใหญ่เพื่อใช้กระบวนการเพิ่มเติมสำหรับการทดสอบตรรกะทางธุรกิจ (เช่นวัตถุประสงค์หลักของแอปพลิเคชัน: ฟังก์ชันการทำงาน)
 	\newline
 	\indent
 	เมื่อไม่ต้องการใช้ SQLite
 	 \begin{itemize}
 		\item แอปพลิเคชันผู้ใช้หลายคน: 
 	\end{itemize}
 	หากคุณกำลังทำงานกับแอปพลิเคชันที่ลูกค้าหลายรายต้องการเข้าถึงและใช้ฐานข้อมูลเดียวกัน RDBM ที่มีคุณสมบัติครบถ้วน (เช่น MySQL) น่าจะเลือก SQLite ได้ดีกว่า
 	 \begin{itemize}
 		\item แอปพลิเคชันที่ต้องการปริมาณการเขียนสูง:
 	\end{itemize}
 	หนึ่งในข้อ จำกัด ของ SQLite คือการดำเนินการเขียน DBMS นี้อนุญาตให้ใช้งานการเขียน * เพียงครั้งเดียวในเวลาที่กำหนดดังนั้นจึงอนุญาตให้มีปริมาณงานที่ จำกัด
 	 

\section{ความรู้เกี่ยวกับภาษา Python}
ภาษาโปรแกรม Python \cite{Python} คือภาษาโปรแกรมคอมพิวเตอร์ระดับสูง โดยถูกออกแบบมาให้เป็นภาษาสคริปต์ที่อ่านง่าย  โดยตัดความซับซ้อนของโครงสร้างและไวยกรณ์ของภาษาออกไป ในส่วนของการแปลงชุดคำสั่งที่เราเขียนให้เป็นภาษาเครื่อง Python มีการทำงานแบบ Interpreter คือเป็นการแปลชุดคำสั่งทีละบรรทัด เพื่อป้อนเข้าสู่หน่วยประมวลผลให้คอมพิวเตอร์ทำงานตามที่เราต้องการ นอกจากนั้นภาษาโปรแกรม Python ยังสามารถนำไปใช้ในการเขียนโปรแกรมได้หลากหลายประเภท โดยไม่ได้จำกัดอยู่ที่งานเฉพาะทางใดทางหนึ่ง (General-purpose language) จึงทำให้มีการนำไปใช้กันแพร่หลายในหลายองค์กรใหญ่ระดับโลก เช่น Google, YouTube, Instagram, Dropbox และ NASA เป็นต้น
\newline
\indent
ประวัติของภาษาโปรแกรม Python ได้เริ่มต้นขึ้นในเดือนธันวาคมปี 1989 โดยนาย Guido van Rossum โปรแกรมเมอร์ชาวดัตช์ ในตอนนั้นทำงานอยู่ที่สถาบันวิจัยแห่งชาติ Centrum Wiskunde & Informatica (CWI) ซึ่งเป็นสถาบันวิจัยทางด้านคณิตศาสตร์และวิทยาการคอมพิวเตอร์ในเมืองอัมสเตอร์ดัม ประเทศเนเธอร์แลนด์ ในเวลานั้น Guido ต้องพัฒนาโปรแกรมสำหรับผู้ดูแลระบบ เพื่อใช้ในโครงการ Amoeba ซึ่งเป็นโครงการเกี่ยวกับระบบปฏิบัติการแบบกระจาย (Distributed operating system) อย่างไรก็ตามเขารู้สึกว่าภาษาโปรแกรม ABC, C  และ Bourne shell มีข้อจำกัดมากมาย  ทั้งเรื่องใช้เวลาในการพัฒนานานมากและไม่สามารถตอบโจทย์หลายประการ ดังนั้น Guido จึงได้ตัดสินใจเริ่มพัฒนาภาษาโปรแกรมระดับสูงขึ้นมาใหม่เพื่อใช้งานเองเป็นงานอดิเรก โดยนำเอาสิ่งที่ชอบในภาษา ABC มาพัฒนาลงไปในภาษาโปรแกรม Python รวมถึงได้พัฒนาส่วนอื่น ๆ เพิ่มเติมเข้าไป และในเวลาต่อมาจึงได้เผยแพร่ Python 1.0 เวอร์ชันแรกในปี 1994 หากเทียบกับภาษา Java ที่ได้ทำการเผยแพร่เวอร์ชันแรกในปี 1996 จะเห็นได้ว่าภาษา Python มีอายุมากกว่าภาษา Java ถึง 2 ปีที่มาของชื่อภาษาโปรแกรม Python นั้นไม่ได้มีที่มาเกี่ยวข้องกับงูเหมือนกับชื่อของมันแต่อย่างใด แต่ในช่วงที่ตัดสินใจเลือกชื่อนั้น ชื่อแรกที่เข้ามาในความคิดของ Guido ก็คือ มอนตี้ ไพธอน: ละครสัตว์เหินหาว (Monty Python’s Flying Circus) ซึ่งเป็นชื่อรายการโทรทัศน์ทางช่อง BBC แนวตลกชื่อดังจากฝั่งอังกฤษที่เขาชื่นชอบมาก ๆ โดยเขาให้เหตุผลว่า “Python” เป็นชื่อที่สั้น จำได้ง่าย ฉีกแนวนิดๆ และดูลึกลับ ในตอนนั้นโดยทั่วไปมักจะนิยมเอาชื่อของบุคคลที่มีชื่อเสียงมาใช้เป็นชื่อภาษาโปรแกรมคอมพิวเตอร์ เช่น Ada, Pascal และ Eiffel ถึงแม้ว่าทีมนักแสดงในรายการจะไม่ได้มีชื่อเสียงทางด้านวิทยาศาสตร์และเทคโนโลยี แต่ก็เป็นที่ชื่นชอบในกลุ่มชาว Geek อย่างมาก รวมถึงกลุ่มคนที่ทำงานใน CWI ก็มักจะนิยมเอาชื่อรายการทีวีโชว์มาตั้งชื่อในงานของตัวเองอีกด้วย นี่คือเหตุผลที่มาที่ไปของชื่อภาษา Python นอกจากนั้น Guido ยังใช้ชื่อของนักแสดงตลกชาวอังกฤษชื่อดังและเป็นหนึ่งในสมาชิกผู้ก่อตั้งทีม Monty Python ที่ชื่อ Eric Idle มาใช้เป็นชื่อ IDE หรือเครื่องมือที่ใช้ในการพัฒนาโปรแกรมว่า “IDLE” อีกด้วย

	 \section{ความรู้เกี่ยวกับ Collaborative filtering}
	 \subsection{ ระบบแนะนำ (Recommender System)}
	 ระบบผู้แนะนำ (Recommender System) หมายถึง  การเสนอแนวทางเลือกให้แก่บุคคลใดบุคคลหนึ่ง ยกตัวอย่างสิ่งที่สามารถแนะนำ เช่น เสื้อผ้า ร้านอาหาร เพลง หนัง เป็นต้น ซึ่งในที่นี้จะเป็นระบบการแนะนำเสื้อผ้าให้แก่ผู้ใช้งาน โดยจะใช้หลักการของ Collaborative Filtering จะเลือกแนะนำสิ่งที่ผู้ใช้คนอื่นๆ ในระบบที่มีลักษณะความชอบคล้ายคลึงกับผู้ใช้ปัจจุบันมาก และผู้ใช้เหล่านี้ได้ให้คะแนนความชอบต่อไอเทม (item) นั้นไว้ค่อนข้างสูง ในขณะที่ผู้ใช้ปัจจุบันยังไม่เคยใช้ไอเทมนั้นมาก่อน
	 \newline
	 ระบบผู้แนะนำสามารถแบ่งออกได้เป็น 5 ประเภทตามลำดับความซับซ้อนของเทคนิคที่ใช้ได้แก่ \cite{recommenders}
	 	\begin{enumerate}[label=\arabic*.]
		 \item ไอเท็มยอดนิยม - กลยุทธ์ที่ง่ายที่สุด (Most Popular Items - The Simplest Strategy)
		 \newline
		 วิธีที่ง่ายที่สุดคือให้ลูกค้าสิ่งที่ได้รับความนิยมมากที่สุดไม่ว่าจะเป็นภาพยนตร์หนังสือหรือบทความเกี่ยวกับเสื้อผ้า โดยไม่ต้องทำอะไรมากกว่าดูในบันทึกการขายของคุณคุณสามารถทำได้ ไม่ต้องใช้วิทยาศาสตร์ข้อมูล ข้อมูลไม่ได้เป็นแบบส่วนบุคคล แต่อาจมีประโยชน์หากคุณรู้น้อยมากเกี่ยวกับผู้เข้าชม ต้องมีคุณสมบัติเนื้อหาพื้นฐานเพื่อสร้างหมวดหมู่ย่อยที่สามารถจับคู่การเรียกดูปัจจุบันของผู้เข้าชม ตัวอย่างเช่นหากคุณเสนอสินค้าที่หลากหลายเช่นทุกอย่างตั้งแต่เครื่องมือไปจนถึงเสื้อผ้าหรือภาพยนตร์หนังสือหรือข่าวที่ดึงดูดความสนใจ จะต้องพยายามจับคู่รายการอย่างน้อยในหมวดหมู่เดียวกัน แม้จะมีข้อจำกัดเหล่านี้ Home Depot ใช้ผู้ขายที่ดีที่สุดอย่างสม่ำเสมอและ GAP ใช้ผลิตภัณฑ์ล่าสุด และมาถึงเร็วนี้เป็นประจำเพื่อเพิ่มรายได้ เป็นไปได้มากที่จะพิจารณาผู้แนะนำที่นิยมมากที่สุดว่าเป็นวิธีเสริม
		 \item การวิเคราะห์ความสัมพันธ์หรือการวิเคราะห์ตลาด (Association or Market Basket Analysis)
		 \newline
		 \indent
		 การวิเคราะห์ความสัมพันธ์และการวิเคราะห์ตลาดมองเฉพาะเนื้อหา การวิเคราะห์ทางสถิติประเภทนี้ขึ้นอยู่กับการคำนวณที่ง่ายที่สุดเท่านั้นในการค้นหารายการที่ใช้ร่วมกันบ่อยครั้ง การวิเคราะห์ความสัมพันธ์และการวิเคราะห์ตลาดมีความเหมือนกันทางคณิตศาสตร์ เมื่อลูกค้ามักจะได้รับรายการหรือบริการหนึ่งครั้ง (เช่นบริการธนาคาร) เรียกสมาคมนี้ว่า เมื่อลูกค้าอาจซื้อหลายอย่างพร้อมกันเรียก Market Basket ดังนั้นการวิเคราะห์ความสัมพันธ์จะดำเนินการในระดับลูกค้า (สิ่งที่อยู่ในบัญชีของลูกค้า) ในขณะที่การวิเคราะห์ตลาดจะดำเนินการในระดับการทำธุรกรรม (สิ่งที่อยู่ในรายการชองลูกค้า) มี 3 ขั้นตอนหลัก:
		 \begin{enumerate}[label=\arabic*]
		 	\item ประเมินความสัมพันธ์ระหว่างแต่ละผลิตภัณฑ์ของสินค้าและผลิตภัณฑ์อื่นที่ได้เสนอโดยใช้อัลกอริทึมของคณิตศาสตร์
		 	\item ระบุการจับคู่ที่มีความสัมพันธ์ที่ดี (โดยทั่วไปจะเป็นคะแนนความสัมพันธ์ 2 หรือสูงกว่า) ตัวอย่างเช่นลูกค้าที่มีบัตรเครดิตอาจพบว่ามีแนวโน้มที่จะมีสินเชื่อรถยนต์มากกว่าสองเท่าหรือสามเท่ากว่าลูกค้าสินเชื่อรถยนต์ที่สุ่มเลือก
		 	\item สร้างข้อเสนอส่วนบุคคลสำหรับลูกค้าที่มีผลิตภัณฑ์หนึ่งของคู่ที่เชื่อมโยงอย่างยิ่ง แต่ไม่ใช่อีกข้อ
		 \end{enumerate}
		 \newline
		 ข้อดีสำหรับเทคนิคนี้
		 \begin{itemize}
		 	 \item ง่ายและรวดเร็วมาก
		 	 \item จะทำงานกับฐานลูกค้าขนาดเล็กและกระจัดกระจาย ตัวอย่างเช่นหากเป็นผู้ให้บริการขนาดเล็กเช่นธนาคารระดับภูมิภาคที่มีลูกค้าน้อยกว่า 5,000 รายและอาจมีเพียง 30 ผลิตภัณฑ์หรือผู้ให้บริการอีคอมเมิร์ซบูติกขนาดเล็กในทำนองเดียวกัน
		 	 \item ความรู้เกี่ยวกับลูกค้า นอกเหนือจากผลิตภัณฑ์หรือบริการที่มีอยู่ในปัจจุบันไม่จำเป็นต้องมี การเตรียมข้อมูล เนื่องจากการเพิ่มความรู้เกี่ยวกับลูกค้าอาจใช้เวลานานและมีค่าใช้จ่ายสูงและไม่จำเป็นที่นี่การวิเคราะห์ความสัมพันธ์ของกลุ่มลูกค้าและตลาดจึงเป็นวิธีที่คุ้มค่าที่สุดสำหรับการสร้างข้อเสนอส่วนบุคคล
		 \end{itemize}
	 	\indent
	 	การวิเคราะห์ลุ่มลูกค้าและการวิเคราะห์ตลาดเป็นหัวใจสำคัญของคำแนะนำอีคอมเมิร์ซภายใต้หัวข้อ“ ลูกค้าที่ซื้อสิ่งนี้และถือว่าเป็นรายการเหล่านี้” หรือ“ รายการที่ซื้อด้วยกัน” ซึ่งเป็นวัตถุดิบหลักของ Amazon เนื่องจากต้องการข้อมูลลูกค้าน้อยมากจึงไม่ได้ผลเช่นกันเพราะการเลือกนั้นกว้างมากเช่นภาพยนตร์หนังสือหรือเพลงและมีคนรู้น้อยเกี่ยวกับสิ่งที่ลูกค้าชอบ อย่างไรก็ตามสามารถกรองโดยใช้กิจกรรมการเรียกดูปัจจุบันของผู้เข้าชม
		 \item การกรองเนื้อหา (Content Filtering :CF)
		 \newline
		 \indent
		 การกรองตามเนื้อหาเป็นสิ่งดีเมื่อ 10 ปีที่แล้ว ยังคงพบในการใช้งานที่หลากหลายและมีแอปพลิเคชันที่ใช้ได้ เนื่องจากชื่อแสดงถึง CF จะมองหาความคล้ายคลึงกันระหว่างรายการที่ลูกค้าบริโภคหรือเรียกดูในอดีตเพื่อนำเสนอทางเลือกในอนาคต CFs เป็นตัวแยกประเภทเฉพาะของผู้ใช้ที่เรียนรู้ที่จะจัดประเภททางเลือกในเชิงบวกหรือเชิงลบโดยยึดตามความชอบของผู้ใช้ (โปรไฟล์ผู้ใช้)
		 \newline
		 อัลกอริทึม:
		 \newline
		 ระบบจะสร้างโปรไฟล์ตามเนื้อหาของผู้ใช้โดยใช้แอตทริบิวต์ที่ไม่ต่อเนื่อง ประวัติความเป็นมาของการบริโภคหรือการเรียกดูของผู้ใช้ถูกใช้เพื่อสร้างเวกเตอร์ถ่วงน้ำหนักของคุณสมบัติของรายการ น้ำหนักจะเรียนรู้หรือกำหนดให้แตกต่างกันไปตามความสำคัญของคุณลักษณะสำหรับผู้ใช้เฉพาะ น้ำหนักนั้นถูกใช้เพื่อเปรียบเทียบกับน้ำหนักเวกเตอร์ของรายการต่าง ๆ ที่อาจแนะนำ เทคนิคการคำนวณอาจแตกต่างจากค่าเฉลี่ยถ่วงน้ำหนักอย่างง่ายไปจนถึงตัวจําแนกเบส์การวิเคราะห์กลุ่มต้นไม้ตัดสินใจหรือวิธีการที่ซับซ้อนมากขึ้นรวมถึงตาข่ายประสาทเทียม คุณจะต้องตรวจสอบวิธีแก้ปัญหาแบบแพคเกจเพื่อประเมินวิธีการคำนวณและประสิทธิผล
		\newline
		คุณสมบัติของรายการ:
		\newline
		ข้อกำหนดที่ชัดเจนคือสามารถอธิบายเนื้อหาจำนวนมากเพื่อใช้ในการจำแนกประเภท สิ่งเหล่านี้สามารถเป็นบูลีนได้ (ภาพยนตร์เป็นภาพเคลื่อนไหวผู้แต่งหนังสือเล่มนี้คือ Clive Cussler วัสดุของเสื้อเชิ้ตเป็นผ้าฝ้าย พวกเขายังสามารถต่อเนื่องเช่นการจัดอันดับภาพยนตร์ที่ได้รับจากแหล่งการจัดอันดับ “การจัดอันดับเฉลี่ย” ของลูกค้ารายอื่นที่บริโภครายการหรือร้อยละหรือจำนวนนาทีในภาพยนตร์ที่พิจารณาว่าเป็น “การกระทำ”
		ความสามารถในการรับและรักษาแอตทริบิวต์ของเนื้อหาเป็นทั้งเกณฑ์หลักและข้อจำกัดที่สำคัญของ CF คุณลักษณะบางอย่างอาจหาได้ง่าย แต่คุณสมบัติอื่นอาจไม่ใช่ (เช่นคุณลักษณะที่อัปเดตอย่างต่อเนื่องของอุปกรณ์อิเล็กทรอนิกส์ใหม่หรือคุณลักษณะของภาพยนตร์) ในสภาพแวดล้อมเช่นภาพยนตร์เพลงและข่าวสินค้าคงคลังอาจมีการเปลี่ยนแปลงอย่างรวดเร็วและมีขนาดใหญ่จนการรับและบำรุงรักษาคุณลักษณะนั้นยากหรือมีค่าใช้จ่ายสูงเกินไป 
		ในบางสภาพแวดล้อมที่มีปริมาณการซื้อขายสูงอาจมีข้อมูลภายนอกอยู่ ตัวอย่างเช่น Pandora Radio ที่ใช้ CF สามารถใช้คุณลักษณะ 400 รายการทั้งเพลงและศิลปินที่จัดทำโดยโครงการจีโนมดนตรีเพื่อค้นหาความคล้ายคลึงกัน มะเขือเทศเน่าเว็บไซต์แนะนำภาพยนตร์เป็นอีกตัวอย่างหนึ่งของการนำ CF มาใช้
		\newline
		เพิ่มประสิทธิภาพ:
		\newline
		หากตัวจําแนกมีอะไรที่จะทำงานกับอื่น นอกเหนือจากการซื้อแบบไบนารีหรือไม่ซื้อคำแนะนำผลลัพธ์จะขาดความแม่นยำ วิธีแก้ทั่วไปที่มีค่าในบางสภาพแวดล้อม แต่ไม่รวมอยู่ในสภาพอื่น
		\begin{itemize}
			\item โพสต์คะแนนการแนะนำ:   ผู้ใช้จะได้รับตัวเลือกในการใช้ปุ่มชอบหรือไม่ชอบสำหรับคำแนะนำที่นำเสนอแม้ว่าพวกเขาจะไม่ได้ซื้อหรือเลือก
			\item โพสต์ซื้อคะแนน:   ผู้ใช้ให้คะแนน (ปกติ 1 ถึง 5) เกี่ยวกับความพึงพอใจของพวกเขากับรายการ
			\item โปรไฟล์อาสาสมัครการบริโภคล่วงหน้า:   สำหรับแอปพลิเคชันจำนวนมากที่ขอให้ผู้ใช้ล่วงหน้าเพื่อให้ข้อมูลโปรไฟล์บางอย่างเกี่ยวกับการกำหนดลักษณะช่วยในทางเลือกการกรองล่วงหน้าอย่างมาก
			\item การทำโปรไฟล์ผู้ใช้: โปรไฟล์ ผู้ใช้สามารถปรับปรุงด้วยการแบ่งส่วนหรือข้อมูลประชากร 
		\end{itemize}
	จุดแข็งและจุดอ่อน:
	\begin{enumerate}[label=\arabic*.]
		\item ระบบผู้แนะนำที่ใช้จริงส่วนใหญ่แก้ปัญหา Cold Start ของวิธีจัดการกับผู้เยี่ยมชมที่มีประวัติเพียงเล็กน้อยหรือไม่มีเลยเนื่องจากคำแนะนำสามารถขับเคลื่อนโดยการรวมประวัติการสืบค้น (สั้น ๆ ) พร้อมทั้งชอบหรือไม่ชอบหรือการทำโปรไฟล์โดยสมัครใจ
		\item การปรับปรุงโปรไฟล์อาจไม่สามารถทำได้หรืออยู่ในระดับที่เท่ากันสำหรับผู้ใช้ทุกคนที่ปล่อยให้ปัญหาการกระจัดกระจายในการคำนวณ คุณอาจไม่มีแท็กสำหรับทุกหมวดหมู่สำหรับทุกรายการ
		\item การใช้งาน CF โดยทั่วไปสามารถเรียนรู้จากแหล่งเดียว (เว็บไซต์ของคุณ) ซึ่งจำกัดความสามารถในการให้คำแนะนำที่ไม่ได้เป็นส่วนหนึ่งของ 'เมล็ดพันธุ์' ดั้งเดิม ระบบบางระบบเช่นตัวรวบรวมข่าวได้รับการออกแบบเพื่อรวมเนื้อหาจากหลายแหล่งเพื่อปรับปรุงข้อจำกัดนี้
		\item หากไม่มีการขยายโปรไฟล์หรือข้อเสนอแนะของผู้ใช้ระบบ CF จะใช้การคำนวณอื่น นอกเหนือจากการบริโภคหรือไม่ได้ใช้
	\end{enumerate}
		 \item การคัดกรอง (Collaborative Filtering: CB)
		 \newline
		 ตัวกรองความร่วมมือมุ่งเน้นไปที่ผู้ใช้และผู้ใช้อื่นที่พบว่ามีลักษณะทางคณิตศาสตร์คล้ายกับผู้ใช้ ในทางทฤษฎีไม่จำเป็นต้องมีคุณลักษณะเฉพาะสำหรับเนื้อหาที่ CB สามารถอนุมานได้ หลังจากนั้นเราจะเห็นว่าการเพิ่มคุณสมบัติเนื้อหาสามารถเพิ่มประสิทธิภาพ แต่ไม่จำเป็นต้องใช้ทางเทคนิค หลักฐานพื้นฐานคือหากผู้ใช้สองคนมีความชอบและชอบที่ไม่เหมือนกันในอดีตที่ผ่านมาพวกเขาจะยังคงมีความคล้ายคลึงกันที่แข็งแกร่งในอนาคต CB จะจับคู่คนที่ชอบหนังแนวโรแมนติกกับภาพยนตร์ที่มีเนื้อหาโรแมนติกที่แข็งแกร่งโดยไม่ต้องมีการกำหนด “ความรัก” เมื่อสร้างความคล้ายคลึงกันแล้วรายการที่บริโภคโดยผู้ใช้รายหนึ่งสามารถแนะนำให้กับผู้ใช้รายอื่นที่คล้ายคลึงกันได้ การมีอยู่ของการจัดอันดับภายหลังการเลือกการบ่งชี้ว่าชอบหรือไม่ชอบทันทีและ / หรือโปรไฟล์ผู้ใช้ที่มีอยู่ก่อนมีความจำเป็นเพื่อให้เทคนิคนี้ทำงานได้ CB พยายามที่จะทำนายการจัดอันดับผู้ใช้สำหรับรายการที่มองไม่เห็น ความถูกต้องของการทำนายสามารถกำหนดได้โดยการเปรียบเทียบการจัดอันดับที่คาดการณ์กับการจัดอันดับจริงเมื่อได้รับรายการที่แนะนำ
		 \newline
		 อัลกอริทึม:
		 \newline
		 ระบบ CB ส่วนใหญ่ใช้การแยกตัวประกอบเวกเตอร์และเริ่มต้นด้วยการสร้างเวกเตอร์คุณลักษณะที่อธิบายผู้ใช้ (ผลิตภัณฑ์และคุณสมบัติที่ระบุว่าน่าสนใจขนาดและความถี่ของการซื้อก่อนหน้า ฯลฯ ) ในระบบ CB ขั้นสูงเพิ่มเติม (รวม CB / CF ระบบ) คุณสมบัติเวกเตอร์นอกจากนี้ยังสร้างขึ้นสำหรับผลิตภัณฑ์ (ผู้เขียน  ประเภท คุณสมบัติ ฯลฯ ) การคำนวณความคล้ายคลึงกันของโคไซน์นั้นเกิดขึ้นกับเวกเตอร์คุณลักษณะเพื่อระบุลูกค้าและผลิตภัณฑ์ที่คล้ายคลึงกัน ข้อเสนอแนะสามารถทำขึ้นอยู่กับความคล้ายคลึงกันของลูกค้าหรือความคล้ายคลึงกันของผลิตภัณฑ์กับผลิตภัณฑ์อื่นที่ลูกค้าได้ซื้อหรือเรียกดูการแยกตัวประกอบตามลูกค้าเป็นพีชคณิตเชิงเส้นตรงไปตรงมาและสามารถรีเฟรชในหน่วยความจำแบบเรียลไทม์หลังจากการจัดอันดับแต่ละครั้งหรือการเลือกหรือไม่เลือกรายการที่แนะนำ ประสิทธิภาพจะเพิ่มขึ้นตามหลักวิชาการระหว่างการโต้ตอบของผู้ใช้กับไซต์ของคุณเมื่อพวกเขาจัดอันดับและเลือกรายการใหม่ โปรดทราบว่าสำหรับฐานผู้ใช้ขนาดใหญ่มากที่มีสินค้าคงคลังขนาดใหญ่มากพลังการคำนวณอาจมีความสำคัญ แต่อยู่ในช่วงของบริการคลาวด์ MPP การแยกตัวประกอบตามผลิตภัณฑ์มีแนวโน้มมากขึ้นจากการรวมกลุ่มหรือสถิติเช่นสหสัมพันธ์ของเพียร์สันและดำเนินการในแบทช์ออฟไลน์
		 \newline
		 คุณสมบัติของผู้ใช้:
		 \newline
		 ระบบ CB พึ่งพาข้อมูลสองประเภทเพื่อให้ทำงานได้ดี รายการแรกคือรายการที่เราขอให้ผู้ใช้ระบุ ได้แก่ 
		 \newline
		 \begin{itemize}
		 	\item ให้คะแนนรายการในระดับห้าจุดหรือใช้ปุ่มชอบหรือไม่ชอบทันที
		 	\item ขอให้ผู้ใช้ค้นหารายการและปฏิบัติตามข้อกำหนดที่ใช้
		 	\item การสร้างโปรไฟล์ของไลค์และไม่ชอบตามปัจจัยต่าง ๆ เช่นประเภทผู้แต่งหรือปัจจัยที่คล้ายกัน
		 	\item นำเสนอสองทางเลือกและถามผู้ใช้ว่าดีกว่า (การวิเคราะห์ร่วมกัน)
		\end{itemize}
	 	เราจะรวบรวมข้อมูลเกี่ยวกับพฤติกรรมออนไลน์ที่แท้จริงของผู้ใช้ซึ่งรวมถึง:
	 	\begin{itemize}
		 	\item การสังเกตรายการที่ดูรวมถึงเวลาที่ใช้ดู
		 	\item การซื้อจริง
		 	\item หากได้รับอนุญาตให้รวบรวมข้อมูลจากคอมพิวเตอร์ของผู้ใช้เช่นรายการที่รับฟังหรือดูจริง
		 	\item การใช้แหล่งข้อมูลภายนอกเช่นไซต์เครือข่ายสังคมออนไลน์เพื่อเพิ่มไลค์และไม่ชอบสำหรับผู้ใช้รายนี้
		 \end{itemize}
	 จุดแข็งและจุดอ่อน:
	 \begin{enumerate}[label=\arabic*.]
	 	\item CBs ไม่พึ่งพาแอตทริบิวต์เนื้อหาที่กำหนดไว้ล่วงหน้าและสามารถให้คำแนะนำที่ถูกต้องสำหรับเนื้อหาประเภทต่างๆโดยไม่จำเป็นต้องมีความเข้าใจในรายการเอง แอ็ตทริบิวต์สังเคราะห์เหล่านี้มีค่าสามารถส่งออกไปยังระบบกรองเนื้อหาได้อย่างไรก็ตามอาจยากที่จะทำให้มนุษย์ตีความได้
	 	\item CBs ต้องการข้อมูลจำนวนมากเพื่อวิเคราะห์ ในกรณีที่ความหลากหลายของรายการมีขนาดใหญ่มากอาจมีรายการที่ไม่ได้ติดแท็กจำนวนมากที่สร้างปัญหา Sparsity ในการคำนวณ อาจเป็นการยากที่จะค้นหาผู้ใช้รายอื่นที่ให้คะแนนรายการเดียวกัน แม้แต่ไอเท็มที่ได้รับความนิยมมากที่สุดอาจมีเรตติ้งไม่กี่อย่างเท่านั้น
	 	\item รายการที่ใหม่และไม่เคยได้รับการจัดอันดับไม่สามารถแนะนำได้เนื่องจากคำแนะนำนั้นขึ้นอยู่กับการให้คะแนนก่อน
	 	\item CBs มักจะแนะนำรายการที่เป็นที่นิยมและอาจอยู่ภายใต้การดำเนินการสำหรับผู้ใช้ที่มีรสนิยมเฉพาะ
	 	\item การแยกตัวประกอบเมทริกซ์อาจเหมาะสมเกินไปหากมีพารามิเตอร์มากเกินไป
	 	\item รายการยอดนิยมส่วนใหญ่ (เช่นภาพยนตร์) สามารถดำเนินการแยกต่างหากจากสินค้าคงคลังแบบเต็ม (ถ้ามีขนาดใหญ่มาก) เพื่อให้สามารถอัปเดตรายการยอดนิยมแบบเรียลไทม์แม้ว่าสินค้าคงคลังทั้งหมดมีขนาดใหญ่เกินไปที่จะประมวลผลหลังจากการเลือกของผู้ใช้แต่ละคน
	 \end{enumerate}
		 \item ไฮบริด (Hybrid)
		 \newline
		 มีการตีความสองอย่างของผู้แนะนำไฮบริดและคุณควรคิดว่าพวกเขาเป็นทั้งสองด้านกับเหรียญเดียวกัน
			 \begin{itemize}
				\item ความรู้ 
				\item ระบบ CF / CB แบบรวม 
			 \end{itemize}
		 	\begin{enumerate}[label=\arabic*.]
		 	\item ความรู้
		 	\newline
		 	การเปลี่ยนแปลงนี้ค่อนข้างง่ายที่จะเข้าใจเนื่องจากมันเกี่ยวข้องกับการเพิ่มกฎโดยผู้เชี่ยวชาญในประเด็นมนุษย์ ผู้จัดการฝ่ายการตลาดผลิตภัณฑ์ที่ดีสามารถกำหนดผลิตภัณฑ์ที่ทำและไม่ไปด้วยกันได้บ่อยครั้งและผลิตภัณฑ์ใดบ้างที่อาจเป็นส่วนเสริมและเสริม
		 	\item ระบบ CF / CB แบบรวม
		 	เมื่อรู้เกี่ยวกับผู้แนะนำ CF และ CB อาจจะเป็นประโยชน์ต่อทั้งสองฝ่าย โปรดทราบว่าระบบ CB บางเวอร์ชันใช้ทั้งแอททริบิวต์ลูกค้าและไอเท็มแล้วแม้ว่าแอททริบิวต์ไอเท็มในกรณีนี้โดยทั่วไปจะเป็นตัวแปรที่คำนวณจากการสังเคราะห์ซึ่งอาจไม่มีตรรกะที่เข้าใจได้ง่าย ในกรณีนี้ระบบ CF / CB ที่รวมกันนั้นแตกต่างกันไปขึ้นอยู่กับหลาย ๆ วิธีที่ระบบเหล่านี้สามารถรวมกันได้
		 	\begin{figure}[H]
		 		\centering
		 		\includegraphics[width=1\columnwidth]{Figures/2/2.1}
		 		\caption{ระบบ CF / CB แบบรวม}{ที่มา : https://www.datasciencecentral.com/profiles/blogs/5-types-of-recommenders}
		 		\label{Fig:sc1}
		 	\end{figure}
		 \end{enumerate}
	 ไม่มีแนวปฏิบัติสากลที่ดีที่สุดเฉพาะสำหรับไฮบริดผู้แนะนำซึ่งจะต้องใช้ความเข้าใจของคุณในสถานการณ์พิเศษของธุรกิจของคุณ กลยุทธ์บางอย่างอาจรวมถึง:
		 \begin{itemize}
		 	\item น้ำหนัก: กลยุทธ์การลงคะแนนระหว่างผู้แนะนำคู่แข่ง 
		 	\item การเลือกฐานกฎ: ตามกฎที่คุณกำหนดในบางกรณีผู้แนะนำรายหนึ่งจะโดดเด่นกว่าอีกฝ่าย
		 	\item การรวมกัน: คำแนะนำจากทั้งสองจะถูกนำเสนอเข้าด้วยกัน
		 	\item การรวมคุณสมบัติ: การใช้ข้อมูลเมตาจากผู้แนะนำทั้งสองเพื่อขับยังคงเป็นผู้แนะนำที่สาม
		 \end{itemize}
	 ในทางปฏิบัติแล้วการเพิ่มองค์ประกอบฐานความรู้ไปยังเทคนิคอื่น ๆ คุณอาจเลือกที่มีกฎฐานความรู้เป็นตัวกรองแรกสำหรับคำแนะนำที่เป็นไปได้หรือเป็นตัวกรองสุดท้าย
	 Netflix ใช้ผู้แนะนำ CB / CF ไฮบริด มันมีคำแนะนำทั้งสองตามนิสัยของลูกค้าที่คล้ายกัน (Collaborative Filtering) เช่นเดียวกับคำแนะนำจากภาพยนตร์ที่ได้รับการจัดอันดับสูงซึ่งมีลักษณะคล้ายกันโดยแอตทริบิวต์เนื้อหา (การกรองเนื้อหา)
	 \subsection{Collaborative Filtering Technique}
	 \indent
	 Collaborative filtering \cite{RecommendationSystems} คือระบบผู้แนะนำประเภทหนึ่งที่ใช้ข้อมูลการกระทำของเราและเพื่อน เพื่อใช้แนะนำการกระทำที่เราน่าจะทำหรือน่าสนใจ แต่ระบบนี้มีปัญหา Cold Start Problem หรือคือการที่ต้องมีข้อมูลเยอะพอสมควรเพื่อเป็นฐานข้อมูลในการแนะนำ และนอกจากนั้นระบบแบบนี้จะแนะนำการกระทำที่เป็นกระแสในช่วงนั้น โดยไม่แนะนำการกระทำนอกกระแส ก็เป็นข้อเสียเปรียบของระบบผู้แนะนำแบบนี้ก็ว่าได้ ระบบผู้แนะนำนี้ยกตัวอย่าง เช่น Amazon, Facebook, Twitter, LinkedIn, Spotify, Google News และ Last.fm
	 Collaborative filtering ช่วยค้นหารูปแบบ Patterns หรือกฏ Rules ในการแนะนำสินค้า ซึ่งแบ่งได้ง่ายๆ เป็น 2 แบบ ได้แก่ User-Based Filtering ซึ่งเป็นการแนะนำโดยหาลูกค้าที่พฤติกรรมเหมือนกัน  และ Item-Based Filtering ซึ่งเป็นการแนะนำโดยหาสินค้าที่ถูกซื้อด้วยลูกค้ากลุ่มเดียวกัน สามารถแสดงให้เห็นข้อแตกต่างได้ดังรูปที่ 2.1
	 \begin{figure}[H]
	 	\centering
	 	\includegraphics[width=1\columnwidth]{Figures/2/2.2}
	 	\caption{Collaborative filtering แบบ User-Based Filtering และ แบบ Item-Based Filtering}{ที่มา : http://www.salemmarafi.com/code/collaborative-filtering-r/}
	 	\label{Fig:sc1}
	 \end{figure}
 	K-Nearest Neighbour หรือ KNN เป็นเทคนิคที่นิยมมาใช้ใน CB ซึ่งจะช่วยจัดกลุ่มผู้ใช้หรือกลุ่มสินค้าที่ควรแนะนำได้ โดยเทคนิคนี้จะสามารถบอกรายการแนะนำเพื่อตอบคำถามต่อไปนี้
 	\begin{itemize}
 		\item สินค้าแนะนำ k รายการให้กับสมาชิก u 
 		\item สมาชิก  k คน ที่มีรสนิยมใกล้เคียงกันกับ u 
 	\end{itemize}
 	\subsection{การทดสอบประสิทธิภาพของเทคนิคที่ใช้}
 	\indent
 	เทคนิคที่ใช้สำหรับระบบผู้แนะนำนั้นโดยพื้นฐานแล้วจะสร้างต้นแบบจากการเรียนรู้ข้อมูลการให้คะแนน rating ของสมาชิกทุกคนในระบบ จากนั้นจะสามารถใช้ต้นแบบเหล่านี้เพื่อประเมินว่าสมาชิก u จะให้ rating สินค้า i เท่าใด  ซึ่งโดยปกติแล้ว rating จะมีค่าระหว่าง 1 ถึง 5 
 	\newline
 	\indent
 	ประสิทธิภาพของต้นแบบจึงสามารถวัดได้จากค่าประเมินว่าแตกต่างจากค่า rating จริงเท่าใด ในเชิงวิจัยการวัดประสิทธิภาพของต้นแบบจากชุดข้อมูล data ทั้งหมด n รายการที่แต่ละรายการประกอบไปด้วย สมาชิก(u), สินค้า(i), rating(r) สามารถวัดได้จากค่าแตกต่างทางสถิติรวมทุกรายการที่เรียกว่า Root-Mean Square Error: RMSE หรือไม่เอาผลต่างไปยกกำลังสองแล้วถอดรากที่สองแต่ใช้ค่าสัมบูรณ์แทนเรียกว่า Mean Absolute Error (MAE)
 	\begin{figure}[H]
 		\centering
 		\includegraphics[width=0.3\columnwidth]{Figures/2/2.0}
 	\end{figure}
 	เมื่อ:
 	\begin{itemize}
 		\item rj หมายถึง รายการที่ j ใน data ซึ่งประกอบไปด้วย หมายเลขสมาชิก (u), หมายเลขสินค้า (i), rating (r) 
 		\item ej หมายถึง ค่าประเมินที่ต้นแบบคำนวณได้จากการระบุ หมายเลขสมาชิก (u) และหมายเลขสินค้า (i) 
 	\end{itemize}
 \newline
 \indent
 ชุดข้อมูล data สำหรับสร้างต้นแบบนั้นจะแบ่งออกเป็น K กลุ่มเท่าๆ กันเพื่อใช้ K-1 กลุ่มในการสร้างต้นแบบ (trainset) และเหลืออีกกลุ่มสำหรับทดสอบความถูกต้อง (testset) โดยทำวนซ้ำสลับแต่ละกลุ่มเป็นกลุ่มทดสอบทั้งหมด K ครั้งเพื่อให้แต่ละกลุ่มได้มีโอกาสใช้เป็นกลุ่มทดสอบ การทดสอบประสิทธิภาพแบบนี้เรียกว่า K-fold cross-validation
 
	 \section{เอกสารและงานวิจัยที่เกี่ยวข้อง}
		\subsection{เว็บแอปพลิเคชัน Wongnai}
		\indent
		Wongnai \cite{Wongnai} เป็นเว็บไซต์และแอปพลิเคชันที่ให้บริการเกี่ยวกับการค้นหาร้านอาหาร สถาน ที่ท่องเที่ยว ร้านเสริมสวย มีฟังก์ชันการทำงานพื้นฐานอันได้แก่ การค้นหา ดูข้อมูล โพสต์รีวิว บันทึกร้านที่ชอบ เป็นต้น
		\subsection{ข้อแตกต่างระหว่างเว็บแอปพลิเคชัน wongnai กับเว็บของโครงงาน}
		\indent
		เว็บแอปพลิเคชันของ Wognai ยังไม่มีฟังก์ชันการแนะนำการแต่งกายให้ผู้ใช้ โดยในเว็บแอปพลิเคชั่นของ Wognai ยังขาดในส่วนของการแนะนำเสื้อผ้า ซึ่งเป็นอีกหนึ่งฟังก์ชันที่หน้าสนใจเพราะในปัจจุบัน คนนิยมเข้าซื้อของออนไล์มากยิ่งขึ้น หากเพิ่มในส่วนของการขายเสื้อผ้าหรือการแนะนำรายการเสื้อผ้าให้แก่ผู้ใช้งานได้อีกจะยิ่งทำให้ระบบมีการให้บริการแก่ลูกค้าที่ครอบคลุมมากยิ่งขึ้น  ผู้พัฒนาจึงได้ทำฟังก์ชันการแนะนำการแต่งกายที่เหมาะสมตามรสนิยมของผู้ใช้เพิ่มลงในเว็บของโครงงาน
		\begin{figure}[H]
			\centering
			\includegraphics[width=0.8\columnwidth]{Figures/2/2.3}
			\caption{หน้าแรกของเว็บไซต์ Wongnai}{ที่มา : https://www.wongnai.com/}
			\label{Fig:sc1}
		\end{figure}
		
	