H2O - รันแอปพลิเคชันตัวอย่าง
คลิกที่ลิงค์ Airlines Delay Flow ในรายการตัวอย่างดังที่แสดงในภาพหน้าจอด้านล่าง -
หลังจากที่คุณยืนยันสมุดบันทึกใหม่จะถูกโหลด
การล้างผลลัพธ์ทั้งหมด
ก่อนที่เราจะอธิบายคำสั่งรหัสในสมุดบันทึกให้เราล้างผลลัพธ์ทั้งหมดแล้วเรียกใช้สมุดบันทึกค่อยๆ หากต้องการล้างผลลัพธ์ทั้งหมดให้เลือกตัวเลือกเมนูต่อไปนี้ -
Flow / Clear All Cell Contents
สิ่งนี้แสดงในภาพหน้าจอต่อไปนี้ -
เมื่อล้างเอาต์พุตทั้งหมดแล้วเราจะเรียกใช้แต่ละเซลล์ในโน้ตบุ๊กทีละเซลล์และตรวจสอบเอาต์พุต
เรียกใช้เซลล์แรก
คลิกเซลล์แรก ธงสีแดงปรากฏทางด้านซ้ายแสดงว่าเซลล์ถูกเลือก ดังที่แสดงในภาพหน้าจอด้านล่าง -
เนื้อหาของเซลล์นี้เป็นเพียงความคิดเห็นของโปรแกรมที่เขียนด้วยภาษา MarkDown (MD) เนื้อหาอธิบายว่าแอปพลิเคชันที่โหลดทำอะไร ในการเรียกใช้เซลล์ให้คลิกที่ไอคอน Run ตามที่แสดงในภาพหน้าจอด้านล่าง -
คุณจะไม่เห็นผลลัพธ์ใด ๆ ที่อยู่ใต้เซลล์เนื่องจากไม่มีโค้ดที่เรียกใช้งานได้ในเซลล์ปัจจุบัน ตอนนี้เคอร์เซอร์จะย้ายโดยอัตโนมัติไปยังเซลล์ถัดไปซึ่งพร้อมที่จะดำเนินการ
การนำเข้าข้อมูล
เซลล์ถัดไปประกอบด้วยคำสั่ง Python ต่อไปนี้ -
importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
คำสั่งนำเข้าไฟล์ allyears2k.csv จาก Amazon AWS เข้าสู่ระบบ เมื่อคุณเรียกใช้เซลล์จะนำเข้าไฟล์และให้ผลลัพธ์ต่อไปนี้แก่คุณ
การตั้งค่าตัวแยกวิเคราะห์ข้อมูล
ตอนนี้เราจำเป็นต้องแยกวิเคราะห์ข้อมูลและทำให้เหมาะสมกับอัลกอริทึม ML ของเรา ทำได้โดยใช้คำสั่งต่อไปนี้ -
setupParse paths: [ "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv" ]
เมื่อดำเนินการตามคำสั่งข้างต้นกล่องโต้ตอบการกำหนดค่าการตั้งค่าจะปรากฏขึ้น กล่องโต้ตอบช่วยให้คุณสามารถตั้งค่าต่างๆสำหรับการแยกวิเคราะห์ไฟล์ได้ ดังที่แสดงในภาพหน้าจอด้านล่าง -
ในกล่องโต้ตอบนี้คุณสามารถเลือกตัวแยกวิเคราะห์ที่ต้องการจากรายการดรอปดาวน์ที่กำหนดและตั้งค่าพารามิเตอร์อื่น ๆ เช่นตัวคั่นฟิลด์เป็นต้น
การแยกวิเคราะห์ข้อมูล
คำสั่งถัดไปซึ่งจะแยกวิเคราะห์ดาต้าไฟล์โดยใช้การกำหนดค่าข้างต้นเป็นคำสั่งที่ยาวและดังที่แสดงไว้ที่นี่ -
parseFiles
paths: ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
destination_frame: "allyears2k.hex"
parse_type: "CSV"
separator: 44
number_columns: 31
single_quotes: false
column_names: ["Year","Month","DayofMonth","DayOfWeek","DepTime","CRSDepTime",
"ArrTime","CRSArrTime","UniqueCarrier","FlightNum","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"Origin","Dest","Distance","TaxiIn","TaxiOut","Cancelled","CancellationCode",
"Diverted","CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
"LateAircraftDelay","IsArrDelayed","IsDepDelayed"]
column_types: ["Enum","Enum","Enum","Enum","Numeric","Numeric","Numeric"
,"Numeric","Enum","Enum","Enum","Numeric","Numeric","Numeric","Numeric",
"Numeric","Enum","Enum","Numeric","Numeric","Numeric","Enum","Enum",
"Numeric","Numeric","Numeric","Numeric","Numeric","Numeric","Enum","Enum"]
delete_on_done: true
check_header: 1
chunk_size: 4194304
สังเกตว่าพารามิเตอร์ที่คุณตั้งค่าไว้ในกล่องการกำหนดค่าแสดงอยู่ในโค้ดด้านบน ตอนนี้เรียกใช้เซลล์นี้ หลังจากนั้นสักครู่การแยกวิเคราะห์จะเสร็จสิ้นและคุณจะเห็นผลลัพธ์ต่อไปนี้ -
ตรวจสอบ Dataframe
หลังจากการประมวลผลจะสร้าง dataframe ซึ่งสามารถตรวจสอบได้โดยใช้คำสั่งต่อไปนี้ -
getFrameSummary "allyears2k.hex"
เมื่อดำเนินการตามคำสั่งข้างต้นคุณจะเห็นผลลัพธ์ต่อไปนี้ -
ตอนนี้ข้อมูลของคุณพร้อมที่จะป้อนเข้าสู่อัลกอริทึม Machine Learning แล้ว
คำสั่งต่อไปคือข้อคิดเห็นของโปรแกรมที่บอกว่าเราจะใช้แบบจำลองการถดถอยและระบุการกำหนดมาตรฐานที่ตั้งไว้ล่วงหน้าและค่าแลมบ์ดา
การสร้างแบบจำลอง
ต่อไปเป็นคำสั่งที่สำคัญที่สุดและนั่นคือการสร้างแบบจำลองเอง สิ่งนี้ระบุไว้ในคำสั่งต่อไปนี้ -
buildModel 'glm', {
"model_id":"glm_model","training_frame":"allyears2k.hex",
"ignored_columns":[
"DayofMonth","DepTime","CRSDepTime","ArrTime","CRSArrTime","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted","CarrierDelay",
"WeatherDelay","NASDelay","SecurityDelay","LateAircraftDelay","IsArrDelayed"],
"ignore_const_cols":true,"response_column":"IsDepDelayed","family":"binomial",
"solver":"IRLSM","alpha":[0.5],"lambda":[0.00001],"lambda_search":false,
"standardize":true,"non_negative":false,"score_each_iteration":false,
"max_iterations":-1,"link":"family_default","intercept":true,
"objective_epsilon":0.00001,"beta_epsilon":0.0001,"gradient_epsilon":0.0001,
"prior":-1,"max_active_predictors":-1
}
เราใช้ glm ซึ่งเป็นชุด Generalized Linear Model ที่มีการตั้งค่าประเภทครอบครัวเป็นทวินาม คุณสามารถดูไฮไลต์เหล่านี้ได้ในข้อความข้างต้น ในกรณีของเราผลลัพธ์ที่คาดหวังคือไบนารีและนั่นคือเหตุผลที่เราใช้ประเภททวินาม คุณสามารถตรวจสอบพารามิเตอร์อื่น ๆ ได้ด้วยตัวเอง ตัวอย่างเช่นดูอัลฟาและแลมด้าที่เราระบุไว้ก่อนหน้านี้ โปรดดูเอกสารรุ่น GLM สำหรับคำอธิบายของพารามิเตอร์ทั้งหมด
ตอนนี้เรียกใช้คำสั่งนี้ เมื่อดำเนินการผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้น -
แน่นอนว่าเวลาในการดำเนินการจะแตกต่างกันไปในเครื่องของคุณ ตอนนี้เป็นส่วนที่น่าสนใจที่สุดของโค้ดตัวอย่างนี้
การตรวจสอบผลลัพธ์
เราเพียงแค่ส่งออกโมเดลที่เราสร้างขึ้นโดยใช้คำสั่งต่อไปนี้ -
getModel "glm_model"
โปรดทราบว่า glm_model คือ ID โมเดลที่เราระบุเป็นพารามิเตอร์ model_id ในขณะที่สร้างโมเดลในคำสั่งก่อนหน้า สิ่งนี้ทำให้เราได้ผลลัพธ์ขนาดใหญ่ที่มีรายละเอียดผลลัพธ์พร้อมพารามิเตอร์ที่แตกต่างกัน ผลลัพธ์บางส่วนของรายงานจะแสดงในภาพหน้าจอด้านล่าง -
ดังที่คุณเห็นในผลลัพธ์มันบอกว่านี่เป็นผลมาจากการเรียกใช้อัลกอริทึมการสร้างแบบจำลองเชิงเส้นทั่วไปบนชุดข้อมูลของคุณ
เหนือประวัติการให้คะแนนคุณจะเห็นแท็ก MODEL PARAMETERS ขยายและคุณจะเห็นรายการพารามิเตอร์ทั้งหมดที่ใช้ในขณะสร้างโมเดล สิ่งนี้แสดงในภาพหน้าจอด้านล่าง
ในทำนองเดียวกันแต่ละแท็กจะแสดงผลลัพธ์โดยละเอียดของประเภทเฉพาะ ขยายแท็กต่างๆด้วยตัวคุณเองเพื่อศึกษาผลลัพธ์ของประเภทต่างๆ
การสร้างแบบจำลองอื่น
ต่อไปเราจะสร้างโมเดล Deep Learning บนดาต้าเฟรมของเรา คำสั่งถัดไปในโค้ดตัวอย่างเป็นเพียงข้อคิดเห็นของโปรแกรม คำสั่งต่อไปนี้เป็นคำสั่งสร้างโมเดล ดังที่แสดงไว้ที่นี่ -
buildModel 'deeplearning', {
"model_id":"deeplearning_model","training_frame":"allyear
s2k.hex","ignored_columns":[
"DepTime","CRSDepTime","ArrTime","CRSArrTime","FlightNum","TailNum",
"ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
"TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted",
"CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
"LateAircraftDelay","IsArrDelayed"],
"ignore_const_cols":true,"res ponse_column":"IsDepDelayed",
"activation":"Rectifier","hidden":[200,200],"epochs":"100",
"variable_importances":false,"balance_classes":false,
"checkpoint":"","use_all_factor_levels":true,
"train_samples_per_iteration":-2,"adaptive_rate":true,
"input_dropout_ratio":0,"l1":0,"l2":0,"loss":"Automatic","score_interval":5,
"score_training_samples":10000,"score_duty_cycle":0.1,"autoencoder":false,
"overwrite_with_best_model":true,"target_ratio_comm_to_comp":0.02,
"seed":6765686131094811000,"rho":0.99,"epsilon":1e-8,"max_w2":"Infinity",
"initial_weight_distribution":"UniformAdaptive","classification_stop":0,
"diagnostics":true,"fast_mode":true,"force_load_balance":true,
"single_node_mode":false,"shuffle_training_data":false,"missing_values_handling":
"MeanImputation","quiet_mode":false,"sparse":false,"col_major":false,
"average_activation":0,"sparsity_beta":0,"max_categorical_features":2147483647,
"reproducible":false,"export_weights_and_biases":false
}
ดังที่คุณเห็นในโค้ดด้านบนเราระบุ deeplearning สำหรับการสร้างโมเดลโดยมีพารามิเตอร์หลายตัวที่กำหนดเป็นค่าที่เหมาะสมตามที่ระบุไว้ในเอกสารของโมเดล deeplearning เมื่อคุณเรียกใช้คำสั่งนี้จะใช้เวลานานกว่าการสร้างแบบจำลอง GLM คุณจะเห็นผลลัพธ์ต่อไปนี้เมื่อการสร้างแบบจำลองเสร็จสมบูรณ์แม้ว่าจะมีการกำหนดเวลาที่แตกต่างกัน
การตรวจสอบผลลัพธ์ของโมเดลการเรียนรู้เชิงลึก
สิ่งนี้จะสร้างชนิดของเอาต์พุตซึ่งสามารถตรวจสอบได้โดยใช้คำสั่งต่อไปนี้เช่นเดียวกับในกรณีก่อนหน้านี้
getModel "deeplearning_model"
เราจะพิจารณาผลลัพธ์ของเส้นโค้ง ROC ดังที่แสดงด้านล่างเพื่อการอ้างอิงอย่างรวดเร็ว
เช่นเดียวกับในกรณีก่อนหน้านี้ให้ขยายแท็บต่างๆและศึกษาผลลัพธ์ที่แตกต่างกัน
กำลังบันทึกโมเดล
หลังจากที่คุณศึกษาผลลัพธ์ของโมเดลต่างๆแล้วคุณจะตัดสินใจใช้หนึ่งในโมเดลเหล่านั้นในสภาพแวดล้อมการผลิตของคุณ H20 อนุญาตให้คุณบันทึกโมเดลนี้เป็น POJO (Plain Old Java Object)
ขยายแท็กสุดท้าย PREVIEW POJO ในเอาต์พุตและคุณจะเห็นโค้ด Java สำหรับโมเดลที่ปรับแต่งแล้วของคุณ ใช้สิ่งนี้ในสภาพแวดล้อมการผลิตของคุณ
ต่อไปเราจะเรียนรู้เกี่ยวกับคุณสมบัติที่น่าตื่นเต้นของ H2O เราจะเรียนรู้วิธีใช้ AutoML เพื่อทดสอบและจัดอันดับอัลกอริทึมต่างๆตามประสิทธิภาพ