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

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

Image for post
Image for post
MapReduce flow

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

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

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


Image for post
Image for post
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)) # True
print(any(list3)) #…

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?

Image for post
Image for post

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 the function followed by parentheses and parameters (if…


Image for post
Image for post

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