<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Classification | พศิน มรุปัณฑ์ธร | นักวิจัยเชิงปริมาณ</title><link>https://quantfilab.github.io/pmarupanthorn/th/tags/classification/</link><atom:link href="https://quantfilab.github.io/pmarupanthorn/th/tags/classification/index.xml" rel="self" type="application/rss+xml"/><description>Classification</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>th-TH</language><lastBuildDate>Mon, 17 Jun 2024 00:00:00 +0000</lastBuildDate><image><url>https://quantfilab.github.io/pmarupanthorn/media/icon_hu68170e94a17a2a43d6dcb45cf0e8e589_3079_512x512_fill_lanczos_center_3.png</url><title>Classification</title><link>https://quantfilab.github.io/pmarupanthorn/th/tags/classification/</link></image><item><title>เครื่องเวกเตอร์สนับสนุนสำหรับการจำแนกประเภทบนผลตอบแทน SET100</title><link>https://quantfilab.github.io/pmarupanthorn/th/post/ml2024-1/</link><pubDate>Mon, 17 Jun 2024 00:00:00 +0000</pubDate><guid>https://quantfilab.github.io/pmarupanthorn/th/post/ml2024-1/</guid><description>&lt;div style="font-size: 16px;">
&lt;h2 id="หมายเหต">หมายเหตุ&lt;/h2>
&lt;p>โครงการนี้เป็นการสอบ CQF ในเรื่องการเรียนรู้ของเครื่องในด้านการเงิน&lt;/p>
&lt;h2 id="ความเขาใจปญหา">ความเข้าใจปัญหา&lt;/h2>
&lt;p>ดัชนี SET100 ซึ่งเป็นตัวแทนของหุ้น 100 ตัวบนตลาดหลักทรัพย์แห่งประเทศไทย (SET) ทำหน้าที่เป็นตัวชี้วัดที่สำคัญสำหรับตลาดหุ้นของไทย แตกต่างจากดัชนีที่เป็นที่ยอมรับในตลาดพัฒนาหรือประเทศที่พัฒนาแล้ว เช่น S&amp;amp;P 500 หรือ FTSE 100 ดัชนี SET100 เผชิญกับสภาพเศรษฐกิจที่เปลี่ยนแปลงอย่างรวดเร็วของตลาดเกิดใหม่ ตลาดเกิดใหม่อย่างประเทศไทยมีศักยภาพในการเติบโตที่สูงขึ้นเนื่องจากการอุตสาหกรรม, การขยายตัวของเมือง และโครงสร้างประชากรที่เอื้ออำนวย อย่างไรก็ตาม การเติบโตนี้มาพร้อมกับความผันผวนที่เพิ่มขึ้นและความเสี่ยงที่สูงขึ้น ซึ่งได้รับอิทธิพลจากความไม่มั่นคงทางการเมือง, ความผันผวนทางเศรษฐกิจ และผลกระทบจากเศรษฐกิจโลกSET100 มอบโอกาสการลงทุนที่โดดเด่นในหลายสาขา รวมถึงการเงิน พลังงาน สินค้าอุปโภคบริโภค และอุตสาหกรรม การรวมเอาธุรกิจขนาดเล็กถึงขนาดกลางเข้าสู่ดัชนีนี้เน้นศักยภาพในการเติบโตอย่างมีนัยสำคัญ คุณลักษณะเหล่านี้ พร้อมกับความท้าทายและโอกาสที่มีอยู่ในตลาดเกิดใหม่ ทำให้ SET100 เป็นหัวข้อที่น่าสนใจสำหรับการวิเคราะห์ทางการเงินและการคาดการณ์ผลตอบแทนการทำนายผลตอบแทนของหุ้นอย่างแม่นยำเป็นสิ่งสำคัญสำหรับการตัดสินใจลงทุนอย่างมีข้อมูล ตลาดการเงินที่ผันผวนและซับซ้อน พร้อมปัจจัยต่าง ๆ เช่น ความรู้สึกของตลาด ตัวชี้วัดทางเศรษฐกิจ และเหตุการณ์ทางภูมิรัฐศาสตร์ ก่อให้เกิดความท้าทายอย่างมากต่อการทำนายผลตอบแทน วิธีการทางสถิติแบบดั้งเดิมมักไม่สามารถจับความสัมพันธ์แบบไม่เชิงเส้นภายในข้อมูลได้ ทำให้ต้องพึ่งพาเทคนิคการเรียนรู้ของเครื่องที่ล้ำหน้า ในโครงการนี้ เราใช้เครื่องมือ Support Vector Machines (SVM) เพื่อจำแนกผลตอบแทนรายวันของหุ้น SET100 โดยใช้ความสามารถของอัลกอริทึมในการจัดการข้อมูลมิติสูงและจำลองรูปแบบที่ซับซ้อน เป้าหมายของเราคือการเพิ่มความแม่นยำในการทำนาย เพื่อให้ข้อมูลเชิงลึกที่มีคุณค่าสำหรับนักลงทุนและผู้จัดการพอร์ตโฟลิโอ&lt;/p>
&lt;h2 id="การดงขอมลขอมลสำหรบการศกษาน-รวมถงราคาสำหรบเปด-สง-ตำ-และปด-ohlc-ของหน-set100-ถกดงมาจาก-investingcomhttpswwwinvestingcom-ชดขอมลครอบคลมตงแตวนท-3-มกราคม-2018-ถง-30-พฤษภาคม-2024-ใหขอมลราคาประวตศาสตรอยางครบถวน-ทนhttpsrawgithubusercontentcomquantfilabpmarupanthornmaincontentpostml2024-1set100datacsv-ราคาทงหมดปรบตามเงนปนผลและนำเสนอเปนสกลเงนบาท-thb-หลงจากดงขอมลมา-ขอมลไดผานกระบวนการทำความสะอาดอยางละเอยดเพอใหมนใจในคณภาพและความนาเชอถอ-กระบวนการนรวมถงการจดการกบคาทหายไป-การลบขอมลซำ-และการทำใหรปแบบวนทสอดคลองกน">การดึงข้อมูลข้อมูลสำหรับการศึกษานี้ รวมถึงราคาสำหรับเปิด สูง ต่ำ และปิด (OHLC) ของหุ้น SET100 ถูกดึงมาจาก &lt;a href="https://www.investing.com/">Investing.com&lt;/a> ชุดข้อมูลครอบคลุมตั้งแต่วันที่ 3 มกราคม 2018 ถึง 30 พฤษภาคม 2024 ให้ข้อมูลราคาประวัติศาสตร์อย่างครบถ้วน &lt;a href="https://raw.githubusercontent.com/QuantFILab/pmarupanthorn/main/content/post/ML2024-1/SET100Data.csv">ที่นี่&lt;/a> ราคาทั้งหมดปรับตามเงินปันผลและนำเสนอเป็นสกุลเงินบาท (THB) หลังจากดึงข้อมูลมา ข้อมูลได้ผ่านกระบวนการทำความสะอาดอย่างละเอียดเพื่อให้มั่นใจในคุณภาพและความน่าเชื่อถือ กระบวนการนี้รวมถึงการจัดการกับค่าที่หายไป การลบข้อมูลซ้ำ และการทำให้รูปแบบวันที่สอดคล้องกัน&lt;/h2>
&lt;h2 id="การสรางภาพขอมลคำอธบายชดขอมลประกอบดวยคณลกษณะหลกดงตอไปน">การสร้างภาพข้อมูล/คำอธิบายชุดข้อมูลประกอบด้วยคุณลักษณะหลักดังต่อไปนี้:&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>เปิด (Open)&lt;/strong>: ราคาหุ้นเปิดในวันซื้อขายที่กำหนด&lt;/li>
&lt;li>&lt;strong>สูง (High)&lt;/strong>: ราคาหุ้นสูงสุดในช่วงวันซื้อขาย&lt;/li>
&lt;li>&lt;strong>ต่ำ (Low)&lt;/strong>: ราคาหุ้นต่ำสุดในช่วงวันซื้อขาย&lt;/li>
&lt;li>&lt;strong>ปิด (Close)&lt;/strong>: ราคาหุ้นปิดในวันซื้อขาย&lt;/li>
&lt;/ul>
&lt;img src="https://raw.githubusercontent.com/QuantFILab/pmarupanthorn/main/content/post/ML2024-1/hist.png" alt="Figure 1. Distributions of Selected Features" style="display: block; margin-left: auto; margin-right: auto; width: 50%;" />
&lt;p>รูปที่ 1 แสดงการกระจายตัวของคุณลักษณะที่เลือกบางประการ ซึ่งให้ข้อมูลเชิงลึกเกี่ยวกับช่วงและแนวโน้มศูนย์กลางของพวกมัน ข้อมูลไม่มีค่าผิดปกติสุดโต่ง เนื่องจาก SET100 ไม่เติบโตอย่างรวดเร็วเมื่อเทียบกับตลาดอื่นและช่วงเวลาการศึกษาเป็นระยะเวลาสั้น ๆ ฮิสโตแกรมของคุณลักษณะต่าง ๆ แสดงแนวโน้มศูนย์กลาง นอกจากนี้คุณลักษณะเหล่านี้มีความสัมพันธ์กันสูง การสร้างคุณลักษณะเพิ่มเติมเป็นสิ่งจำเป็นเพื่อจับรูปแบบที่แท้จริงและปรับปรุงประสิทธิภาพของโมเดล&lt;/p>
&lt;h2 id="การทำความสะอาดจดการขอมลการทำความสะอาดและจดการขอมลอยางมประสทธภาพเปนขนตอนสำคญในการเตรยมชดขอมลสำหรบการวเคราะหและสรางแบบจำลอง-ในการศกษาน-ชดขอมลซงประกอบดวยขอมลราคาประวตศาสตรของดชน-set100-ไดผานกระบวนการทำความสะอาดขอมลอยางละเอยดเพอใหมนใจในคณภาพและความนาเชอถอของขอมล">การทำความสะอาด/จัดการข้อมูลการทำความสะอาดและจัดการข้อมูลอย่างมีประสิทธิภาพเป็นขั้นตอนสำคัญในการเตรียมชุดข้อมูลสำหรับการวิเคราะห์และสร้างแบบจำลอง ในการศึกษานี้ ชุดข้อมูลซึ่งประกอบด้วยข้อมูลราคาประวัติศาสตร์ของดัชนี SET100 ได้ผ่านกระบวนการทำความสะอาดข้อมูลอย่างละเอียดเพื่อให้มั่นใจในคุณภาพและความน่าเชื่อถือของข้อมูล&lt;/h2>
&lt;h3 id="การจดการคาทหายไป">การจัดการค่าที่หายไป&lt;/h3>
&lt;p>ค่าที่หายไปในชุดข้อมูลสามารถทำให้ผลลัพธ์ไม่ถูกต้องและเกิดอคติในแบบจำลอง เพื่อแก้ไขปัญหานี้ เราได้ดำเนินการตามขั้นตอนดังต่อไปนี้:&lt;/p>
&lt;ul>
&lt;li>ระบุค่าที่หายไปในชุดข้อมูล&lt;/li>
&lt;li>เติมค่าที่หายไปโดยใช้วิธีเติมต่อจากค่าก่อนหน้าหรือค่าหลังที่เหมาะสม&lt;/li>
&lt;li>สำหรับคุณสมบัติที่ไม่เหมาะสมกับการเติมค่า แถวที่มีค่าหายไปจะถูกลบออกเพื่อรักษาความสมบูรณ์ของข้อมูล&lt;/li>
&lt;/ul>
&lt;h3 id="การลบขอมลซำ">การลบข้อมูลซ้ำ&lt;/h3>
&lt;p>ระเบียนที่ซ้ำซ้อนสามารถทำให้การวิเคราะห์ผิดเพี้ยนและนำไปสู่ข้อสรุปที่ไม่ถูกต้อง เรารับประกันว่าชุดข้อมูลปราศจากข้อมูลซ้ำโดย:- ระบุและลบแถวที่ซ้ํากันตามคอลัมน์ &amp;lsquo;วันที่&amp;rsquo;&lt;/p>
&lt;p>ในกระบวนการนี้ 70.% ของข้อมูลถูกจัดสรรให้กับชุดฝึก และ 30.% ไปยังชุดทดสอบพารามิเตอร์ \texttt{random_state} ถูกตั้งเป็น 42 เพื่อให้มั่นใจว่าผลลัพธ์สามารถทําซ้ําได้&lt;/p>
&lt;h2 id="วศวกรรมฟเจอร">วิศวกรรมฟีเจอร์&lt;/h2>
&lt;p>ตารางต่อไปนี้แสดงคุณลักษณะที่ถูกแปลง คําอธิบาย และสูตรทางคณิตศาสตร์ที่ใช้คํานวณ:|&lt;strong>คุณสมบัติ&lt;/strong> |&lt;strong>คําอธิบาย&lt;/strong> |&lt;strong>สูตรคณิตศาสตร์&lt;/strong> |
|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;-|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;|
|ความผันผวน |ส่วนเบี่ยงเบนมาตรฐานของผลตอบแทนในช่วงเวลา 10 วันแสดงระดับความผันผวนของราคาหุ้น แสดงถึงความไม่แน่นอนและความเสี่ยงของตลาด|$\text{std}(\text{Return}_{t-10:t-1})$ |
|โมเมนตัม |ความแตกต่างระหว่างราคาปิดปัจจุบันกับราคาปิดเมื่อ 10 วันที่แล้วฟีเจอร์นี้ช่วยระบุแนวโน้มและความแข็งแกร่งของการเคลื่อนไหวของราคาหุ้น|$\text{ปิด}_{t-10} - \text{ปิด}_{t-20}$ || Avg_Open_Close | ค่าเฉลี่ยของราคาปิดและราคาเปิด ให้ค่าที่เรียบง่ายซึ่งแสดงถึงแนวโน้มศูนย์กลางของราคาภายในวันซื้อขาย | $ rac{ ext{Open}_{t-1} + ext{Close}_{t-1}}{2}$ |
| Avg_High_Low | ค่าเฉลี่ยของราคาสูงสุดและราคาต่ำสุด ให้ข้อมูลเกี่ยวกับช่วงความผันผวนของราคาในแต่ละวัน แสดงถึงความผันผวนภายในวันซื้อขายเดียว | $ rac{ ext{High}_{t-1} + ext{Low}_{t-1}}{2}$ |
| Price_Range | ความต่างระหว่างราคาสูงสุดและราคาต่ำสุด คุณสมบัตินี้แสดงการเคลื่อนไหวของราคาภายในวัน | $ ext{High}_{t-1} - ext{Low}_{t-1}$ |
| Daily_Change | ความต่างระหว่างราคาปิดและราคาเปิด | $ ext{Close}_{t-1} - ext{Open}_{t-1}$ || เปอร์เซ็นต์การเปลี่ยนแปลงรายวัน | การเปลี่ยนแปลงรายวันเป็นเปอร์เซ็นต์ของราคาปิด เปิด เพื่อให้มุมมองที่ปรับมาตรฐานของการเปลี่ยนแปลงราคาประจำวัน | $ rac{ ext{Daily_Change}_{t}}{ ext{Open}_{t-1}} imes 100$ |
| ค่าเฉลี่ยเคลื่อนที่ของราคาปิด | ค่าเฉลี่ยเคลื่อนที่ของราคาปิดในช่วง 10 วัน ให้แนวโน้มราคาปิดที่เรียบขึ้น | $ ext{mean}( ext{Close}_{t-10:t-1})$ |
| ค่าเฉลี่ยเคลื่อนที่ของความผันผวน | ค่าเฉลี่ยเคลื่อนที่ของความผันผวนในช่วง 10 วัน เน้นแนวโน้มระยะยาวของความผันผวนในตลาด | $ ext{mean}( ext{Volatility}_{t-10:t-1})$ |
| ค่าเฉลี่ยเคลื่อนที่ของโมเมนตัม | ค่าเฉลี่ยเคลื่อนที่ของโมเมนตัมในช่วง 10 วัน ช่วยในการระบุแนวโน้มที่ต่อเนื่องของการเคลื่อนไหวของราคา | $ ext{mean}( ext{Momentum}_{t-10:t-1})$ |ด้วยการออกแบบคุณสมบัติเหล่านี้ เราได้เปลี่ยนข้อมูลราคาหุ้นดิบให้เป็นชุดข้อมูลที่มีโครงสร้างซึ่งจับตัวชี้วัดทางการเงินที่สําคัญ ช่วยให้สามารถสร้างแบบจําลองและทํานายได้อย่างมีประสิทธิภาพด้วยแนวทาง SVM&lt;/p>
&lt;h2 id="การสรางแบบจาลองขอมล">การสร้างแบบจําลองข้อมูล&lt;/h2>
&lt;h3 id="รองรบเครองเวกเตอร">รองรับเครื่องเวกเตอร์&lt;/h3>
&lt;p>SVM ทํางานโดยหาไฮเปอร์เพลนที่แยกคลาสในพื้นที่ฟีเจอร์ได้ดีที่สุดไฮเปอร์เพลนถูกเลือกเพื่อเพิ่มขอบเขตสูงสุด ซึ่งเป็นระยะห่างระหว่างไฮเปอร์เพลนกับจุดข้อมูลที่ใกล้ที่สุดจากแต่ละคลาส&lt;/p>
&lt;p>สําหรับ SVM เชิงเส้น ฟังก์ชันการตัดสินใจถูกกําหนดไว้ดังนี้:&lt;/p>
$$
f(\mathbf{x}) = \mathbf{w} \cdot \mathbf{x} + b
$$
&lt;p>โดยที่ $\mathbf{w}$ คือเวกเตอร์น้ําหนัก, $\mathbf{x}$ คือเวกเตอร์อินพุต และ $b$ คือเทอมไบแอสไฮเปอร์เพลนถูกกําหนดโดยสมการ $\mathbf{w} \cdot \mathbf{x} + b = 0$วัตถุประสงค์ของ SVM คือการเพิ่มมาร์จิ้นให้สูงสุดในขณะที่จัดประเภทข้อมูลฝึกสอนอย่างถูกต้องซึ่งสามารถกําหนดเป็นปัญหาการเพิ่มประสิทธิภาพที่มีข้อจํากัด:
&lt;/p>
$$
\min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^{n} \xi_i
$$
$$
\text{subject to } y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 \quad \forall i
$$
&lt;p>โดยที่ $y_i$ คือป้ายกํากับของคลาส และ $\mathbf{x}_i$ คือเวกเตอร์อินพุต, $\xi_i \geq 0 \quad \forall i$, และ $C$ คือพารามิเตอร์การทําให้เป็นปกติ&lt;/p>
&lt;p>ค่าที่มากขึ้น $C$ จะเน้นการลดข้อผิดพลาดในการจัดประเภทผิดให้น้อยที่สุด ซึ่งอาจแลกมาด้วยขอบเขตที่น้อยลงสิ่งนี้อาจนําไปสู่โมเดลที่ตรงกับข้อมูลการฝึกอย่างใกล้ชิด (อคติต่ําแต่ความแปรปรวนสูง) ซึ่งอาจนําไปสู่การ overfitting&lt;/p>
&lt;p>ในทางกลับกัน ค่าที่เล็กลง $C$ จะเน้นการเพิ่มมาร์จิ้นให้สูงสุด ทําให้เกิดการจัดประเภทผิดพลาดบางอย่างสิ่งนี้อาจนําไปสู่โมเดลที่ง่ายขึ้นซึ่งสามารถขยายผลได้ดีขึ้นกับข้อมูลที่ไม่เคยเห็น (อคติสูงแต่ความแปรปรวนต่ํา) ลดความเสี่ยงของการฟิตเกินโครงการนี้ใช้เทคนิคเคอร์เนลกับเคอร์เนลเชิงเส้น, RBF และซิกมอยด์ ตามที่สามารถพบได้ในภาคผนวก \ref{app:A}.&lt;/p>
&lt;h3 id="การเลอกแบบจำลองผานการปรบพารามเตอร">การเลือกแบบจำลองผ่านการปรับพารามิเตอร์&lt;/h3>
&lt;p>เพื่อเพิ่มประสิทธิภาพของแบบจำลอง SVM เราได้ใช้ Grid Search ซึ่งเป็นวิธีแบบเป็นระบบในการปรับพารามิเตอร์ Grid Search เกี่ยวข้องกับการประเมินผลการทำงานของแบบจำลองผ่านชุดพารามิเตอร์ที่กำหนดล่วงหน้าเพื่อหาชุดค่าที่ให้ผลลัพธ์ดีที่สุด&lt;/p>
&lt;p>ในการศึกษานี้ เราได้พิจารณาพารามิเตอร์สำคัญสามตัวสำหรับแบบจำลอง SVM:- $C$: พารามิเตอร์การทําให้เป็นปกติ ซึ่งควบคุมการแลกเปลี่ยนระหว่างการได้ค่าความคลาดเคลื่อนต่ําในข้อมูลฝึกสอนและการลดความซับซ้อนของโมเดลเพื่อหลีกเลี่ยงการฟิตเกิน&lt;/p>
&lt;ul>
&lt;li>$\gamma$: สัมประสิทธิ์เคอร์เนลสําหรับเคอร์เนลที่ไม่เชิงเส้น (เช่น ฟังก์ชันฐานรัศมี RBF)มันกําหนดขอบเขตของอิทธิพลของตัวอย่างฝึกสอนเพียงหนึ่งตัว โดยค่าต่ําหมายถึง &amp;lsquo;ไกล&amp;rsquo; และค่าสูงหมายถึง &amp;lsquo;ใกล้&amp;rsquo;&lt;/li>
&lt;li>เคอร์เนล: ประเภทของฟังก์ชันเคอร์เนลที่ใช้ในการแปลงข้อมูลนําเข้าเราพิจารณาเคอร์เนลสองประเภท ได้แก่ ฟังก์ชันฐานเชิงเส้นและเรเดียล และเคอร์เนลซิกมิโอดเราได้กําหนดกริดของไฮเปอร์พารามิเตอร์โดยมีค่าดังนี้ $C \in \{0.1, 1, 10, 100\}$, $\gamma \in \{1, 0.1, 0.01, 0.001\}$ และเคอร์เนลสามประเภทที่เคยเป็นดิสปัสก่อนหน้านี้กริดที่กําหนดข้างต้นให้ผลลัพธ์รวมทั้งหมด 48 ชุด (4 ค่าสําหรับ $C$, 4 ค่าสําหรับ $\gamma$ และ 3 ค่าสําหรับเคอร์เนล)แต่ละค่าถูกประเมินเพื่อกําหนดชุดไฮเปอร์พารามิเตอร์ที่เหมาะสมที่สุด
หลังจากทําการค้นหาแบบกริด พบว่าพารามิเตอร์ที่ดีที่สุดคือ: $C = 1$ ในเคอร์เนลเชิงเส้น&lt;/li>
&lt;/ul>
&lt;p>ในทางปฏิบัติ ไลบรารี scikit-learn ของ Python ใช้อัลกอริทึม Sequential Minimal Optimization (SMO) [2] เพื่อแก้ปัญหาการปรับแต่ง SVM แบบคู่ [1]SMO แบ่งปัญหาออกเป็นปัญหาย่อยย่อย โดยแต่ละปัญหาเกี่ยวข้องกับตัวคูณ Lagrange เพียงสองตัวในแต่ละครั้ง ซึ่งทําให้การปรับแต่งมีประสิทธิภาพและขยายตัวได้มากขึ้นรายละเอียดสามารถดูได้ในภาคผนวก \ref{app:smo}## การตรวจสอบ/พัฒนาโมเดล&lt;/p>
&lt;p>ประสิทธิภาพของโมเดลแสดงไว้ในตาราง \ref{tab:classification_report}โมเดล SVM มีความแม่นยํา 65.80% ซึ่งบ่งชี้ถึงอัตราการทํานายที่ถูกต้องสูงความแม่นยําสําหรับคลาส 0.0 (ผลตอบแทนลบ) อยู่ที่ 0.68 และสําหรับคลาส 1.0 (ผลตอบแทนบวก) อยู่ที่ 0.62 แสดงให้เห็นถึงความสามารถของโมเดลในการระบุผลตอบแทนลบได้แม่นยํากว่าผลตอบแทนบวกการเรียกคืนสําหรับคลาส 0.0 อยู่ที่ 0.74 และสําหรับคลาส 1.0 คือ 0.55 ซึ่งบ่งชี้ว่าโมเดลสามารถระบุผลตอบแทนลบจริงส่วนใหญ่ได้สําเร็จ แต่น้อยกว่าสําหรับผลตอบแทนบวกคะแนน F1 สําหรับทั้งสองคลาสอยู่ในระดับปานกลาง (0.71 สําหรับคลาส 0.0 และ 0.58 สําหรับคลาส 1.0) สะท้อนถึงความสมดุลระหว่างความแม่นยําและการเรียกคืนคะแนน ROC AUC 0.64 ยังยืนยันความสามารถในการแยกแยะผลตอบแทนบวกและลบของโมเดลนี้อีกด้วยเมทริกซ์ความสับสน (Confusion Matrix) ซึ่งแสดงในรูปที่ 2 ให้ข้อมูลเชิงลึกอย่างละเอียดเกี่ยวกับการทำนายของโมเดล จากการทำนายทั้งหมด 462 ครั้ง โมเดลทำการทำนายที่ถูกต้องและไม่ถูกต้องอย่างสมดุลสำหรับทั้งสองคลาส โดยเฉพาะ โมเดลทำนายค่า True Negative ถูกต้อง 194 ครั้ง และ True Positive ถูกต้อง 110 ครั้ง ซึ่งชี้ให้เห็นความน่าเชื่อถือของโมเดลในการแยกความแตกต่างระหว่างสองคลาส แต่ก็ยังมีพื้นที่ที่ต้องปรับปรุง&lt;/p>
&lt;p>ค่า ROC AUC ซึ่งย่อมาจาก Receiver Operating Characteristic Area Under Curve ที่แสดงในรูปที่ 3 เป็นเครื่องวัดความสามารถของโมเดลในการแยกแยะระหว่างคลาส ค่า ROC AUC 0.64 แสดงถึงระดับการแยกแยะปานกลางระหว่างผลตอบแทนเชิงบวกและลบ แสดงให้เห็นว่าโมเดลดีกว่าการเดาสุ่ม แต่ยังมีพื้นที่ปรับปรุงอยู่&lt;/p>
&lt;p>&lt;strong>ข้อสรุปเกี่ยวกับการซื้อขาย&lt;/strong>ความแม่นยำและตัวชี้วัดประสิทธิภาพในระดับปานกลางของโมเดล SVM บ่งชี้ถึงความเป็นไปได้ในการประยุกต์ใช้ในกลยุทธ์การซื้อขายทางการเงิน ตัวอย่างเช่น การทำนายผลตอบแทนเป็นบวก (คลาส 1.0) อาจทำหน้าที่เป็นสัญญาณซื้อ ในขณะที่การทำนายผลตอบแทนเป็นลบ (คลาส 0.0) อาจบ่งชี้ถึงการขายหรือการถือครอง ความสามารถในการทำนายนี้สามารถผนวกรวมเข้ากับระบบการซื้อขายอัตโนมัติเพื่อปรับปรุงกระบวนการตัดสินใจ นอกจากนี้ การรวมกลยุทธ์การบริหารความเสี่ยง เช่น การตั้งคำสั่งหยุดขาดทุนตามการทำนายความผันผวน สามารถลดความสูญเสียที่อาจเกิดขึ้นได้ การปรับแต่งพอร์ตโฟลิโอยังสามารถได้รับประโยชน์จากการทำนายเหล่านี้โดยการกระจายการลงทุนไปยังหลายหุ้นใน SET100 เพื่อสร้างความสมดุลระหว่างความเสี่ยงและผลตอบแทน| &lt;strong>มาตรฐาน&lt;/strong>|&lt;strong>ความแม่นยำ&lt;/strong>|&lt;strong>การดึงข้อมูล&lt;/strong>|&lt;strong>F1-Score&lt;/strong>|&lt;strong>จำนวนตัวอย่าง&lt;/strong> |
|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;-|
| 0 | 0.68 | 0.74 | 0.71 | 262 |
| 1 | 0.62 | 0.55 | 0.58 | 200 |
| &lt;strong>ความถูกต้อง&lt;/strong> | 0.66 | 0.66 | 0.66 | 462 |
| &lt;strong>ค่าเฉลี่ยแบบมาโคร&lt;/strong> | 0.65 | 0.64 | 0.65 | 462 |
| &lt;strong>ค่าเฉลี่ยถ่วงน้ำหนัก&lt;/strong>| 0.65 | 0.66 | 0.65 | 462 |&lt;/p>
&lt;p>&lt;strong>ตาราง:&lt;/strong> รายงานการจำแนกประเภทและมาตรฐาน&lt;/p>
&lt;img src="https://raw.githubusercontent.com/QuantFILab/pmarupanthorn/main/content/post/ML2024-1/featured.png" alt="Figure 2. Classification Confusion Matrix" style="display: block; margin-left: auto; margin-right: auto; width: 50%;" />
&lt;img src="https://raw.githubusercontent.com/QuantFILab/pmarupanthorn/main/content/post/ML2024-1/roc.png" alt="รูปที่ 3. เส้นกราฟลักษณะตัวรับของการจำแนกประเภท" style="display: block; margin-left: auto; margin-right: auto; width: 50%;" />
&lt;h2 id="ภาคผนวก">ภาคผนวก&lt;/h2>
&lt;h3 id="เทคนคเคอรเนลsvm-สามารถทาการจาแนกแบบไมเชงเสนไดอยางมประสทธภาพโดยใชฟงกชนเคอรเนลเคอรเนลจะแปลงขอมลนาเขาเปนพนทมตทสงขน-ซงสามารถใชตวแยกเชงเสนเพอแยกความแตกตางระหวางคลาสตาง-ๆทน-เราจะอธบายเคอรเนลทใชกนทวไปสามประเภท-ไดแก-ฟงกชนเชงเสน-ฟงกชนฐานรศม-rbf-และซกมอยด">เทคนิคเคอร์เนลSVM สามารถทําการจําแนกแบบไม่เชิงเส้นได้อย่างมีประสิทธิภาพโดยใช้ฟังก์ชันเคอร์เนลเคอร์เนลจะแปลงข้อมูลนําเข้าเป็นพื้นที่มิติที่สูงขึ้น ซึ่งสามารถใช้ตัวแยกเชิงเส้นเพื่อแยกความแตกต่างระหว่างคลาสต่าง ๆที่นี่ เราจะอธิบายเคอร์เนลที่ใช้กันทั่วไปสามประเภท ได้แก่ ฟังก์ชันเชิงเส้น, ฟังก์ชันฐานรัศมี (RBF) และซิกมอยด์&lt;/h3>
&lt;h4 id="เคอรเนลเชงเสน">เคอร์เนลเชิงเส้น&lt;/h4>
&lt;p>เคอร์เนลเชิงเส้นเป็นเคอร์เนลประเภทที่ง่ายที่สุด ใช้เมื่อข้อมูลสามารถแยกเชิงเส้นในพื้นที่ฟีเจอร์เดิมได้ขอบเขตการตัดสินใจเป็นไฮเปอร์เพลนในพื้นที่ฟีเจอร์เดิม&lt;/p>
&lt;p>ในทางคณิตศาสตร์ ฟังก์ชันเคอร์เนลเชิงเส้นถูกกําหนดไว้ดังนี้:&lt;/p>
$$
K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i \cdot \mathbf{x}_j
$$
&lt;p>โดยที่ $\mathbf{x}_i$ และ $\mathbf{x}_j$ เป็นเวกเตอร์อินพุต และ $\cdot$ หมายถึงผลคูณจุด&lt;/p>
&lt;p>ฟังก์ชันการตัดสินใจสําหรับเคอร์เนลเชิงเส้นกําหนดโดย:&lt;/p>
$$
f(\mathbf{x}) = \mathbf{w} \cdot \mathbf{x} + b
$$
&lt;p>โดยที่ $\mathbf{w}$ คือเวกเตอร์น้ําหนัก และ $b$ คือเทอมไบแอส&lt;/p>
&lt;h4 id="เคอรเนลฟงกชนฐานรศม-rbfเคอรเนล-rbf-หรอทรจกกนในชอเคอรเนลเกาสเซยน-เปนตวเลอกยอดนยมสาหรบ-svm-เพราะสามารถจดการความสมพนธทไมเชงเสนโดยการแมปขอมลไปยงพนทมตอนนตมนมประสทธภาพเปนพเศษเมอขอบเขตการตดสนใจไมเปนเชงเสนสง">เคอร์เนลฟังก์ชันฐานรัศมี (RBF)เคอร์เนล RBF หรือที่รู้จักกันในชื่อเคอร์เนลเกาส์เซียน เป็นตัวเลือกยอดนิยมสําหรับ SVM เพราะสามารถจัดการความสัมพันธ์ที่ไม่เชิงเส้นโดยการแมปข้อมูลไปยังพื้นที่มิติอนันต์มันมีประสิทธิภาพเป็นพิเศษเมื่อขอบเขตการตัดสินใจไม่เป็นเชิงเส้นสูง&lt;/h4>
&lt;p>ฟังก์ชันเคอร์เนล RBF ถูกกําหนดไว้ดังนี้:&lt;/p>
$$
K(\mathbf{x}_i, \mathbf{x}_j) = \exp\left(-\gamma \|\mathbf{x}_i - \mathbf{x}_j\|^2\right)
$$
&lt;p>โดยที่ $\gamma$ เป็นพารามิเตอร์ที่กําหนดความกว้างของฟังก์ชันเกาส์เซียน และ $\|\mathbf{x}_i - \mathbf{x}_j\|^2$ คือระยะทางยูคลิดยกกําลังสองระหว่างเวกเตอร์อินพุต&lt;/p>
&lt;p>ฟังก์ชันการตัดสินใจสําหรับเคอร์เนล RBF คือ:&lt;/p>
$$
f(\mathbf{x}) = \sum_{i=1}^{n} \alpha_i y_i \exp\left(-\gamma \|\mathbf{x} - \mathbf{x}_i\|^2\right) + b
$$
&lt;p>โดยที่ $\alpha_i$ คือตัวคูณลากรังจ์, $y_i$ คือป้ายกํากับคลาส และ $b$ คือเทอมไบแอส&lt;/p>
&lt;h4 id="เคอรเนลซกมอยด">เคอร์เนลซิกมอยด์&lt;/h4>
&lt;p>เคอร์เนลซิกมอยด์มีพื้นฐานมาจากฟังก์ชันซิกมอยด์ ซึ่งมักใช้ในเครือข่ายประสาทเทียมมันสามารถแมปข้อมูลอินพุตไปยังพื้นที่มิติสูงกว่า คล้ายกับ RBF แต่ใช้กันน้อยกว่าฟังก์ชันเคอร์เนลซิกมอยด์ถูกนิยามว่า:&lt;/p>
$$
K(\mathbf{x}_i, \mathbf{x}_j) = \tanh\left(\gamma \mathbf{x}_i \cdot \mathbf{x}_j + c\right)
$$
&lt;p>โดยที่ $\alpha$และ $c$ คือพารามิเตอร์ของเคอร์เนล และ $\tanh$ คือฟังก์ชันสัมผัสไฮเปอร์โบลิก&lt;/p>
&lt;p>ฟังก์ชันการตัดสินใจสําหรับเคอร์เนลซิกมอยด์คือ:&lt;/p>
$$
f(\mathbf{x}) = \tanh\left(\sum_{i=1}^{n} \gamma_i y_i (\mathbf{x} \cdot \mathbf{x}_i) + c\right)
$$
&lt;p>โดยที่ $\alpha_i$ คือตัวคูณลากรังจ์, $y_i$ คือป้ายกํากับคลาส และ $c$ คือพารามิเตอร์&lt;/p>
&lt;h3 id="svm-สตรค">SVM สูตรคู่&lt;/h3>
&lt;p>ปัญหาการหาค่าที่เหมาะสมมักถูกแก้โดยใช้สูตรคู่ของมันปัญหาคู่เน้นการหาตัวคูณลากรังจ์ $\alpha_i$ ที่เป็นไปตามเงื่อนไขดังต่อไปนี้:&lt;/p>
$$
\max_{\alpha} \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j K(\mathbf{x}_i, \mathbf{x}_j)
$$
&lt;p>ขึ้นอยู่กับ:&lt;/p>
$$
0 \leq \alpha_i \leq C \quad \forall i
$$
&lt;p>และ&lt;/p>
$$
\sum_{i=1}^{n} \alpha_i y_i = 0
$$
&lt;p>โดยที่ $K(\mathbf{x}_i, \mathbf{x}_j)$ คือฟังก์ชันเคอร์เนลที่คํานวณผลคูณจุดในพื้นที่ฟีเจอร์ที่แปลงแล้ว&lt;/p>
&lt;h3 id="การปรบแตงขนตาแบบลาดบ">การปรับแต่งขั้นต่ําแบบลําดับ&lt;/h3>
&lt;p>อัลกอริทึม SMO ทํางานดังนี้:- เริ่มต้นตัวคูณลากรังจ์ $\alpha_i$ ให้เป็นศูนย์&lt;/p>
&lt;ul>
&lt;li>รายการ ทําซ้ําจนกว่าจะบรรลุเป้าหมาย:
&lt;ol>
&lt;li>เลือกตัวคูณสองตัว $\alpha_i$ และ $\alpha_j$ ที่ละเมิดเงื่อนไข Karush-Kuhn-Tucker (KKT)&lt;/li>
&lt;li>แก้ปัญหาการหาค่าที่เหมาะสมสําหรับตัวคูณทั้งสองนี้ในขณะที่ยังคงค่าตัวคูณอื่น ๆ ไว้&lt;/li>
&lt;li>อัปเดตตัวคูณและเวกเตอร์น้ําหนักที่เกี่ยวข้อง $\mathbf{w}$ และเทอมไบแอส $b$&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>ข้อดีของอัลกอริทึม SMO คือมันแยกปัญหาการเขียนโปรแกรมกําลังสองขนาดใหญ่ออกเป็นชุดปัญหาขนาดเล็กที่แก้ไขได้ง่ายและรวดเร็วกว่า&lt;/p>
&lt;p>การเพิ่มประสิทธิภาพของตัวคูณลากรังจ์สองตัว $\alpha_i$ และ $\alpha_j$ สามารถแสดงได้ดังนี้:&lt;/p>
$$
\max_{\alpha_i, \alpha_j} \left( \alpha_i + \alpha_j - \frac{1}{2} \left( \alpha_i^2 K(\mathbf{x}_i, \mathbf{x}_i) + \alpha_j^2 K(\mathbf{x}_j, \mathbf{x}_j) + 2 \alpha_i \alpha_j K(\mathbf{x}_i, \mathbf{x}_j) \right) \right)
$$
&lt;p>ภายใต้ข้อจํากัดดังนี้:&lt;/p>
$$
0 \leq \alpha_i, \alpha_j \leq C
$$
&lt;p>และ&lt;/p>
$$
y_i \alpha_i + y_j \alpha_j = \text{constant}
$$
&lt;p>ปัญหาการหาค่าที่เหมาะสมแบบกําลังสองนี้แก้ไขได้ง่ายกว่ามาก และอัลกอริทึม SMO จะอัปเดตตัวคูณซ้ํา ๆ เพื่อหาคําตอบที่เหมาะสมที่สุด## อ้างอิง&lt;/p>
&lt;p>[1] V. K. Chauhan, K. Dahiya, และ A. Sharma. การกำหนดปัญหาและตัวแก้ปัญหาใน SVM เชิงเส้น: การทบทวน. &lt;em>Artificial Intelligence Review&lt;/em>, 52(2):803–855, 2019.&lt;/p>
&lt;p>[2] J. Platt. การเพิ่มประสิทธิภาพน้อยลำดับ: อัลกอริธึมเร็วสำหรับการฝึกเครื่องเวกเตอร์สนับสนุน. 1998.&lt;/p></description></item></channel></rss>