Machine Learning ใน R สำหรับผู้เริ่มต้นพร้อมตัวอย่าง



บล็อกเกี่ยวกับการเรียนรู้ของเครื่องด้วย R นี้ช่วยให้คุณเรียนรู้แนวคิดหลักของ Machine Learning และใช้อัลกอริทึมการเรียนรู้ของเครื่องที่แตกต่างกันกับ R

การเรียนรู้ของเครื่องด้วย R

การเรียนรู้ของเครื่องคือปัจจุบันและอนาคต! ตั้งแต่เครื่องมือแนะนำของ Netflix ไปจนถึงรถยนต์ขับเคลื่อนด้วยตนเองของ Google ทั้งหมดนี้เป็นการเรียนรู้ของเครื่อง บล็อกเกี่ยวกับ Machine Learning with R นี้ช่วยให้คุณเข้าใจแนวคิดหลักของการเรียนรู้ของเครื่องตามด้วยอัลกอริทึมการเรียนรู้ของเครื่องที่แตกต่างกันและใช้อัลกอริทึมการเรียนรู้ของเครื่องเหล่านั้นกับ R

บล็อกเกี่ยวกับ“ Machine Learning with R” ประกอบด้วยส่วนต่างๆเหล่านี้:





การเรียนรู้ของเครื่องด้วย R | Edureka

ทำความเข้าใจเกี่ยวกับ Machine Learning

Fish1- Machine Learning กับ R - Edureka



คุณรู้ได้อย่างไรว่าทั้งหมดนี้เป็นปลา?



ตอนเป็นเด็กคุณอาจเคยเจอรูปปลาและคุณครูอนุบาลหรือผู้ปกครองบอกคุณว่านี่คือปลาและมีลักษณะเฉพาะบางอย่างที่เกี่ยวข้องเช่นมีครีบเหงือกคู่ของ ตาหางและอื่น ๆ ตอนนี้เมื่อใดก็ตามที่สมองของคุณเจอภาพที่มีชุดคุณสมบัติเหล่านั้นมันจะบันทึกภาพนั้นเป็นปลาโดยอัตโนมัติเพราะสมองของคุณมี ได้เรียนรู้ ว่ามันคือปลา

นั่นคือสมองของเราทำงานอย่างไร แต่เกี่ยวกับเครื่องจักรล่ะ? ถ้าภาพเดียวกันถูกป้อนเข้าเครื่องเครื่องจะระบุได้อย่างไรว่าเป็นปลา?

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

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

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

ให้เราก้าวไปข้างหน้าในบล็อก Machine Learning with R และทำความเข้าใจเกี่ยวกับประเภทของ Machine Learning

ประเภทของการเรียนรู้ของเครื่อง

  • การเรียนรู้ภายใต้การดูแล:

อัลกอริทึมการเรียนรู้ภายใต้การดูแลเรียนรู้จากชุดข้อมูลที่รู้จัก (ข้อมูลการฝึกอบรม) ซึ่งมีป้ายกำกับเพื่อทำการคาดการณ์

การถดถอยและการจัดประเภทเป็นตัวอย่างของการเรียนรู้ภายใต้การดูแล

#การจัดหมวดหมู่:

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

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

# การถดถอย:

การถดถอยเป็นอัลกอริธึมการเรียนรู้ภายใต้การดูแลซึ่งช่วยในการพิจารณาว่าตัวแปรหนึ่งมีอิทธิพลต่อตัวแปรอื่นอย่างไร

ตรงนี้“ living_area” คือตัวแปรอิสระและ“ ราคา” คือตัวแปรตามนั่นคือเรากำลังพิจารณาว่า“ ราคา” แตกต่างกันอย่างไรเมื่อเทียบกับ“ living_area”

  • การเรียนรู้ที่ไม่มีผู้ดูแล:

อัลกอริทึมการเรียนรู้ที่ไม่มีผู้ดูแลจะดึงการอนุมานจากข้อมูลที่ไม่มีป้ายกำกับ

การทำคลัสเตอร์ เป็นตัวอย่างของการเรียนรู้ที่ไม่มีผู้ดูแล “ K-mean”,“ Hierarchical”,“ Fuzzy C-means” เป็นตัวอย่างของอัลกอริทึมการจัดกลุ่ม

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

  • การเรียนรู้การเสริมแรง:

Reinforcement Learning เป็นอัลกอริทึมการเรียนรู้ของเครื่องประเภทหนึ่งที่ เครื่อง / ตัวแทน ใน สิ่งแวดล้อม เรียนรู้พฤติกรรมในอุดมคติเพื่อเพิ่มประสิทธิภาพสูงสุด จำเป็นต้องมีข้อเสนอแนะรางวัลอย่างง่ายเพื่อให้ตัวแทนเรียนรู้พฤติกรรมของตนซึ่งเรียกว่า สัญญาณเสริมแรง .

มาดูกัน Pacman ตัวอย่างเช่น. ตราบใดที่ Pacman ยังคงกินอาหารมันจะได้รับคะแนน แต่เมื่อมันปะทะกับสัตว์ประหลาดมันจะเสียชีวิต ดังนั้น Pacman จึงเรียนรู้ว่ามันต้องกินอาหารมากขึ้นและหลีกเลี่ยงสัตว์ประหลาดเพื่อปรับปรุงประสิทธิภาพ

การนำ Machine Learning ไปใช้กับ R:

การถดถอยเชิงเส้น:

เราจะทำงานร่วมกับชุดข้อมูลเพชรเพื่อใช้อัลกอริธึมการถดถอยเชิงเส้น:

คำอธิบายของชุดข้อมูล:

ก่อนที่จะสร้างแบบจำลองใด ๆ บนข้อมูลเราควรแบ่งข้อมูลออกเป็นชุด 'ฝึกอบรม' และ 'ทดสอบ' แบบจำลองนี้จะสร้างขึ้นจากชุด 'รถไฟ' และจะตรวจสอบความแม่นยำในชุด 'การทดสอบ'

เราจำเป็นต้องโหลดแพ็คเกจ“ caTools” เพื่อแบ่งข้อมูลออกเป็นสองชุด

ห้องสมุด (caTools)

แพ็คเกจ“ caTools” มีฟังก์ชัน“ sample.split ()” ซึ่งช่วยในการแยกข้อมูล

sample.split (เพชร $ ราคา SplitRatio = 0.65) -> split_index

65% ของการสังเกตจากคอลัมน์ราคาได้รับการกำหนดป้ายกำกับ 'จริง' และอีก 35% ที่เหลือได้รับการกำหนดป้ายกำกับ 'เท็จ'

ชุดย่อย (เพชร, split_index == T) -> รถไฟ ชุดย่อย (เพชร, split_index == F) -> ทดสอบ

ข้อสังเกตทั้งหมดที่มีฉลาก 'จริง' ได้ถูกจัดเก็บไว้ใน ' รถไฟ” วัตถุ และการสังเกตที่มีป้ายกำกับ 'เท็จ' ได้ถูกกำหนดให้กับชุด 'การทดสอบ'

ตอนนี้การแยกเสร็จสิ้นและเรามีชุด 'ฝึก' และ 'ทดสอบ' แล้วก็ถึงเวลาสร้างแบบจำลองการถดถอยเชิงเส้นในชุดการฝึก

เราจะใช้ฟังก์ชัน“ lm ()” เพื่อสร้างแบบจำลองการถดถอยเชิงเส้นบนข้อมูล“ รถไฟ” เรากำลังพิจารณา ราคา ของเพชรที่เกี่ยวข้องกับตัวแปรอื่น ๆ ทั้งหมดของชุดข้อมูล โมเดลที่สร้างขึ้นจะถูกเก็บไว้ในอ็อบเจ็กต์“ mod_regress”

lm (ราคา ~., data = train) -> mod_regress

ตอนนี้เราได้สร้างแบบจำลองขึ้นแล้วเราจำเป็นต้องทำการคาดคะเนในชุด 'การทดสอบ' ฟังก์ชัน“ ทำนาย ()” ใช้เพื่อรับคำทำนาย ต้องใช้สองอาร์กิวเมนต์: แบบจำลองที่สร้างขึ้น และ ชุดทดสอบ ผลลัพธ์ที่คาดการณ์จะถูกเก็บไว้ในออบเจ็กต์“ result_regress”

ทำนาย (mod_regress, ทดสอบ) -> result_regress

มารวมค่าราคาจริงจากชุดข้อมูล 'ทดสอบ' กับค่าที่คาดการณ์ไว้เป็นชุดข้อมูลเดียวโดยใช้ฟังก์ชัน 'cbind ()' data-frame ใหม่ถูกเก็บไว้ใน“ Final_Data”

cbind (Actual = test $ price, Predicted = result_regress) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

ภาพรวมของ“ Final_Data” ซึ่งประกอบด้วยค่าจริงและค่าที่คาดการณ์:

เรามาค้นหาข้อผิดพลาดโดยการลบค่าที่คาดการณ์ออกจากค่าจริงและเพิ่มข้อผิดพลาดนี้เป็นคอลัมน์ใหม่ใน“ Final_Data”:

(Final_Data $ Actual- Final_Data $ Predicted) -> ข้อผิดพลาด
cbind (Final_Data ข้อผิดพลาด) -> Final_Data

ภาพรวมของ“ Final_Data” ซึ่งประกอบด้วยข้อผิดพลาดในการทำนาย:

วิธีใช้อนาคอนดาสำหรับงูหลาม

ตอนนี้เราจะมาคำนวณกันต่อ ' รูทค่าเฉลี่ยกำลังสองผิดพลาด” ซึ่งทำให้เกิดข้อผิดพลาดโดยรวมสำหรับการคาดการณ์ทั้งหมด

rmse1<-sqrt(mean(Final_Data$error^2)) 
rmse1

ต่อไปเรามาสร้างแบบจำลองอีกแบบเพื่อที่เราจะได้เปรียบเทียบความแม่นยำของทั้งสองแบบนี้และพิจารณาว่าแบบใดดีกว่ากัน

เราจะสร้างแบบจำลองการถดถอยเชิงเส้นใหม่ในชุด 'รถไฟ' แต่คราวนี้เราจะทิ้งคอลัมน์ 'x' และ 'y' จากตัวแปรอิสระเช่น 'ราคา' ของเพชรจะถูกกำหนดโดย คอลัมน์ยกเว้น 'x' และ 'y'

โมเดลที่สร้างขึ้นจะถูกเก็บไว้ใน“ mod_regress2”:

lm (ราคา ~.-y-z, data = train) -> mod_regress2

ผลลัพธ์ที่คาดการณ์จะถูกเก็บไว้ใน“ result_regress2”

ทำนาย (mod_regress2, ทดสอบ) -> result_regress2

ค่าจริงและค่าที่คาดการณ์จะรวมกันและเก็บไว้ใน“ Final_Data2”:

cbind (จริง = ทดสอบ $ ราคา, Predicted = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

เรามาเพิ่มข้อผิดพลาดในการคาดคะเนใน“ Final_Data2” ด้วย

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> error2
cbind (Final_Data2, error2) -> Final_Data2

ภาพรวมของ“ Final_Data2”:

ค้นหา Root Mean Square Error เพื่อรับข้อผิดพลาดรวม:

rmse2<-sqrt(mean(Final_Data2$error^2))

เราเห็นว่า“ rmse2” น้อยกว่า“ rmse1” เล็กน้อยและด้วยเหตุนี้โมเดลที่สองจึงดีกว่ารุ่นแรกเล็กน้อย

การจัดหมวดหมู่:

เราจะทำงานร่วมกับชุดข้อมูล“ car_purchase” เพื่อใช้งาน การแบ่งพาร์ติชันแบบเรียกซ้ำ ซึ่งเป็นอัลกอริทึมการจำแนกประเภท

เรามาแบ่งข้อมูลออกเป็นชุด“ train” และ“ test” โดยใช้ฟังก์ชัน“ sample.split ()” จากแพ็คเกจ“ caTools”

ห้องสมุด (caTools)

65% ของการสังเกตจากคอลัมน์ 'ซื้อแล้ว' จะถูกกำหนดป้ายกำกับ 'TRUE' และส่วนที่เหลือจะถูกกำหนดป้ายกำกับ 'FALSE'

sample.split (car_purchase $ ซื้อแล้ว SplitRatio = 0.65) -> split_values

การสังเกตทั้งหมดที่มีป้ายกำกับ 'TRUE' จะถูกจัดเก็บไว้ในข้อมูล 'การฝึกอบรม' และการสังเกตที่มีป้ายกำกับ 'FALSE' จะถูกกำหนดให้กับข้อมูล 'ทดสอบ'

ชุดย่อย (car_purchase, split_values ​​== T) -> train_data
ชุดย่อย (car_purchase, split_values ​​== F) -> test_data

เวลาในการสร้างอัลกอริธึม Recursive Partitioning:

เราจะเริ่มต้นด้วยการโหลดแพ็คเกจ 'rpart':

ห้องสมุด (rpart)

คอลัมน์“ ซื้อแล้ว” จะเป็นตัวแปรตามและคอลัมน์อื่น ๆ ทั้งหมดเป็นตัวแปรอิสระนั่นคือเรากำลังพิจารณาว่าบุคคลนั้นซื้อรถหรือไม่โดยเกี่ยวกับคอลัมน์อื่น ๆ ทั้งหมด โมเดลสร้างขึ้นจาก“ train_data” และผลลัพธ์จะถูกเก็บไว้ใน“ mod1”

rpart (ซื้อแล้ว ~., data = train_data) -> mod1

มาพล็อตผลลัพธ์:

พล็อต (mod1, margin = 0.1) ข้อความ (mod1, สวย = T, cex = 0.8)

ตอนนี้เรามาคาดเดาผลลัพธ์ใน“ test_data” กัน เรากำลังให้โมเดล rpart ที่สร้างขึ้นเป็น“ mod1” เป็นอาร์กิวเมนต์แรกชุดทดสอบ“ test_data” เป็นอาร์กิวเมนต์ที่สองและประเภทการคาดคะเนเป็น“ คลาส” สำหรับอาร์กิวเมนต์ที่สาม ผลลัพธ์จะถูกเก็บไว้ในวัตถุ 'result1'

ทำนาย (mod1, test_data, type = 'class') -> result1

เรามาประเมินความถูกต้องของแบบจำลองโดยใช้ฟังก์ชัน 'confuseMatrix ()' จากแพ็กเกจคาเร็ต

ห้องสมุด (คาเร็ต) สับสนเมทริกซ์ (ตาราง (test_data $ ซื้อแล้วผลลัพธ์ 1))

เมทริกซ์ความสับสนบอกเราว่าจากการสังเกต 90 ครั้งที่บุคคลนั้นไม่ได้ซื้อรถการสังเกต 79 รายการได้รับการจัดประเภทอย่างถูกต้องว่าเป็น“ ไม่” และ 11 ได้รับการจัดประเภทผิดเป็น“ ใช่” ในทำนองเดียวกันจากการสังเกต 50 รายการที่ผู้ซื้อรถคันดังกล่าว 47 ถูกจัดประเภทอย่างถูกต้องว่าเป็น 'ใช่' และ 3 ข้อถูกจัดประเภทเป็น 'ไม่' อย่างไม่ถูกต้อง

เราสามารถหาความแม่นยำของแบบจำลองได้โดยการหารการคาดคะเนที่ถูกต้องด้วยการคาดคะเนทั้งหมดเช่น (79 + 47) / (79 + 47 + 11 + 3)

K- หมายถึงการจัดกลุ่ม:

เราจะทำงานร่วมกับชุดข้อมูล“ ม่านตา” เพื่อใช้ k-mean clustering:

เรามาลบคอลัมน์ 'สายพันธุ์' และสร้างชุดข้อมูลใหม่ซึ่งประกอบด้วยสี่คอลัมน์แรกจากชุดข้อมูล 'ม่านตา'

ม่านตา [1: 4] -> iris_k

ให้เราหาจำนวนคลัสเตอร์เป็น 3 ฟังก์ชัน“ Kmeans ()” รับข้อมูลอินพุตและจำนวนคลัสเตอร์ที่ข้อมูลจะถูกจัดคลัสเตอร์ ไวยากรณ์คือ: kmeans (data, k) โดยที่ k คือจำนวนคลัสเตอร์เซ็นเตอร์

กม. (iris_k, 3) -> k1

การวิเคราะห์คลัสเตอร์:

str (k1)

ฟังก์ชั่น str () ให้โครงสร้างของ kmeans ซึ่งรวมถึงพารามิเตอร์ต่างๆเช่น withinss, betweenss และอื่น ๆ ซึ่งคุณสามารถหาประสิทธิภาพของ kmeans ได้

betweenss: ระหว่างผลรวมของกำลังสองเช่นความคล้ายคลึงกันภายในคลัสเตอร์

withinss: ภายในผลรวมของกำลังสองเช่นความคล้ายคลึงระหว่างคลัสเตอร์

totwithinss: ผลรวมของภายในทั้งหมดของคลัสเตอร์ทั้งหมดเช่นความคล้ายคลึงกันภายในคลัสเตอร์ทั้งหมด

การจัดกลุ่มที่ดีจะมีค่า“ tot.withinss” ที่ต่ำกว่าและค่า“ betweenss” ที่สูงกว่าซึ่งขึ้นอยู่กับจำนวนคลัสเตอร์ 'k' ที่เลือกไว้ในตอนแรก

ถึงเวลาแล้วที่จะเป็นผู้เชี่ยวชาญด้าน Machine Learning เพื่อใช้ประโยชน์จากโอกาสใหม่ ๆ ที่มาถึงคุณ สิ่งนี้ทำให้เรามาถึงจุดจบของสิ่งนี้ ' การเรียนรู้ของเครื่องด้วย R ” บล็อก ฉันหวังว่าบล็อกนี้จะเป็นประโยชน์

Edureka ได้รับการดูแลเป็นพิเศษ ซึ่งช่วยให้คุณมีความเชี่ยวชาญในอัลกอริทึมการเรียนรู้ของเครื่องเช่น K-Means Clustering, Decision Trees, Random Forest, Naive Bayes คุณจะได้เรียนรู้แนวคิดของสถิติอนุกรมเวลาการขุดข้อความและการเรียนรู้เชิงลึกเบื้องต้นด้วย ชุดใหม่สำหรับหลักสูตรนี้กำลังจะเริ่มเร็ว ๆ นี้ !!