MapReduce เป็น Programming Model ตัวหนึ่งที่เหมาะกับการทำงานกับข้อมูลขนาดใหญ่ เพราะมันสามารถประมวลผลแบบ parallel ได้นั่นเอง แล้วมันทำงานยังไงล่ะ? มาดูกันเลย

เจ้าตัว MapReduce จะแบ่งการทำงานออกเป็น 2 ส่วนตามชื่อของมัน คือ ส่วน Map และส่วน Reduce โดยสองส่วนนี้จะได้รับคู่ key-value เข้ามาเป็น input แล้วทำอะไรบางอย่างออกมาเป็นคู่ key-value ที่เป็น output

MapReduce flow

มาลองดูตัวอย่างนี้กันดีกว่าค่ะ จะได้เข้าใจภาพของ MapReduce ง่ายขึ้น โดยบอกก่อนเลยว่าพื้นหลังสีเหลืองในรูปภาพแทน key และสีฟ้าแทน value นะคะ

สมมุติว่าร้านอาหารแห่งหนึ่ง ได้เอาเมนูอาหารของลูกค้ามาส่งให้เชฟ จะเห็นว่า นาย A สั่งพิซซ่าและเฟรนช์ฟรายส์อย่างละชิ้น นาย B สั่งเฟรนช์ฟรายและเบอร์เกอร์อย่างละชิ้น นาย C สั่งเบอร์เกอร์และเค้กอย่างละชิ้น ส่วนนาย D สั่งพิซซ่าอย่างเดียว 2 ชิ้น

ถ้าเชฟค่อยๆทำไปตามแต่ละออเดอร์ มีหวังนาย D หิวจนเป็นลมไปก่อนก็ได้ ถูกไหมล่ะ แล้วเชฟจะทำยังไงดี? งั้นให้คุณ Mapper ช่วยแยกออเดอร์ทั้งหมดออกเป็นรายการย่อยๆหน่อยดีกว่า โดยในตอนนี้เชฟก็ไม่จำเป็นต้องสนใจแล้วว่าเมนูไหนใครเป็นคนสั่ง เพราะฉะนั้น key ที่เป็นชื่อคนสั่งอาหารก็ไม่จำเป็นแล้ว เราเลยตัดมันออกไปก่อน (อะไรที่เราไม่สนใจจะถูกตัดออกไปในขั้นตอน Map ให้เหลือแค่สิ่งที่สนใจเพื่อนำไปประมวลผลต่อ) ตอนนี้ก็จะได้ key เป็นอาหาร และ value เป็นจำนวนที่ถูกสั่งนั่นเอง


picture from http://www.trytoprogram.com

ภาษาไพธอนมีฟังก์ชันของตัวเองที่เราสามารถเรียกมาใช้งานได้อย่างง่ายดาย แล้วมีฟังก์ชันอะไรบ้างล่ะ? วันนี้เรามาดู built-in function ของ Python กันดีกว่า (ในที่นี้จะยกมาเฉพาะฟังก์ชันที่คิดว่าน่าจะได้ใช้กันบ่อยๆ)

abs

abs ย่อมาจาก absolute โดยจะ return ผลบวกของตัวเลข แต่หากใส่ argument เป็นเลขจำนวนซ้อน จะ return ขนาดของเลขจำนวนซ้อนนั้นๆ

print(abs(-11))        # 11
print(abs(30)) # 30
print(abs(-4.56)) # 4.56
print(abs(-4+5j)) # 6.4031242374328485

all

return True หากทุก element ใน iterable เป็น True หรือเป็น Empty (ว่าง)

list1 = [True, True, True]                                                                  list2 = [True, True, False]
list3 = []
print(all(list1)) # True
print(all(list2)) # False
print(any(list3)) # True

any

return True หากมีอย่างน้อย 1 element ใน iterable เป็น True

list1 = [True, True, True]                                                                  list2 = [True, True, False]
list3 = [False, False, False]
print(all(list1)) # True
print(all(list2))…

Function is block of code that will run only when it is called.

You can enter/not enter parameter(s) into function (depend on your function). When calling the function. It will run and the result will be returned.

How to define function?

Creating a function starts with the keyword (1) def followed by the (2) function name. Then add a (3) parameter (if any) within parentheses and end this line with (4) a colon.

After that, you can write (5) a code inside the function block and end it with (6) return statement (optional).

def myfirst_function():
print("This is my first function")

Calling a function

calling the name of…


CRISP-DM ย่อมาจาก Cross-industry standard process for data mining

ซึ่งหมายถึง กระบวนการมาตรฐานที่ใช้สำหรับการทำเหมืองข้อมูล เพื่อทำการวิเคราะห์และนำไปใช้ประโยชน์ทางธุรกิจ มีอยู่ 6 ขั้นตอน คือ

1. การทำความเข้าใจธุรกิจ (Business Understanding)

ขั้นตอนแรกมุ่งไปที่การทำความเข้าใจธุรกิจ ปัญหาและวัตถุประสงค์ของโครงการจากมุมมองทางธุรกิจ จากนั้นแปลงปัญหาให้อยู่ในรูปของโจทย์สำหรับการวิเคราะห์ข้อมูล และวางแผนการดำเนินงานเบื้องต้น

2. การทำความเข้าใจข้อมูล (Data Understanding)

ขั้นตอนนี้เริ่มต้นด้วยการรวบรวมข้อมูล จากนั้นทำความเข้าใจ ตรวจสอบคุณภาพ และเลือกข้อมูลที่เก็บรวบรวมมาว่าจะใช้ข้อมูลใดบ้างในการวิเคราะห์

ขั้นตอนที่ 1 และ 2 สามารถทำกลับไปมาได้ เนื่องจากการทำความเข้าใจธุรกิจทำให้เราเข้าใจข้อมูลมากขึ้น และการเข้าใจข้อมูลก็ทำให้เราเข้าใจธุรกิจมากขึ้นเช่นกัน

3. การเตรียมข้อมูล (Data Preparation)

ขั้นตอนการเตรียมข้อมูล หมายถึง ขั้นตอนทั้งหมดที่จะทำเพื่อให้ข้อมูลดิบที่เรารวบรวมมา กลายเป็นข้อมูลสมบูรณ์ที่พร้อมจะเข้าสู่โมเดลในขั้นตอนที่ 4 เช่น การสร้างตาราง การลบข้อมูลที่ไม่ต้องการออก การแปลงข้อมูลให้อยู่ในรูปแบบที่ต้องการ เป็นต้น

4. การสร้างโมเดล (Modeling)

ในขั้นตอนนี้ เราจะเลือกและทดสองสร้างโมเดลหลายๆแบบที่น่าจะสามารถแก้ไขปัญหาที่ต้องการได้ จากนั้นค่อยๆปรับค่าพารามิเตอร์ในแต่ละโมเดล เพื่อให้ได้โมเดลที่เหมาะสมที่สุดมาใช้ในการแก้ไขปัญหา

หากยังไม่ได้โมเดลที่พอใจ เราสามารถกลับไปเตรียมข้อมูลให้พร้อมมากกว่านี้ได้ เนื่องจากข้อมูลที่ดี ก็จะทำให้ได้ผลลัพธ์ที่ดีเช่นกัน ดังคำกล่าวที่ว่า Garbage in, Garbage out นั่นเอง

5. การวัดประสิทธิภาพของโมเดล (Evaluation)

เราจะทำการวัดประสิทธิภาพของโมเดลที่ได้จากขั้นตอนที่ 4 เพื่อวัดว่าโมเดลมีประสิทธิภาพเพียงพอต่อการนำไปใช้งานแล้วหรือไม่ ซึ่งโมเดลแต่ละประเภทก็จะมีตัววัดประสิทธิภาพที่แตกต่างกันออกไป

6. การนำโมเดลไปใช้งานจริง (Deployment)

เป็นการนำโมเดลที่เหมาะสมที่สุดไปใช้งานจริง เพื่อวิเคราะห์และแก้ปัญหาที่ต้องการ

Thapanee Boonchob

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store