Apache PredictionIO เป็นแพลตฟอร์มแมชชีนเลิร์นนิงแบบโอเพ่นซอร์สซึ่งสนับสนุนให้กับ Apache Software Foundation โดย Salesforce

PredictionIO ครอบคลุมกระบวนการทั้งหมดของเวิร์กโฟลว์แมชชีนเลิร์นนิง และคุณสมบัติที่สำคัญที่สุดคือระบบเทมเพลตกลไก ทำให้สามารถเปิดใช้ Predict Web API ได้อย่างง่ายดายตามเทมเพลตกลไก มีเทมเพลตกลไกที่พร้อมใช้งานมากมาย ดังนั้นเราจึงสามารถเลือกเทมเพลตที่ดีที่สุดสำหรับวัตถุประสงค์ของเราได้ อย่างไรก็ตาม เทมเพลตกลไกเป็นเพียงจุดเริ่มต้นเท่านั้น เรายังจำเป็นต้องปรับแต่งเทมเพลตโดยการเขียนโค้ด Scala/Java

TransmogrifAI เป็นไลบรารีแมชชีนเลิร์นนิงที่ทำงานบน Apache Spark และนำเสนอความสามารถ AutoML ที่พัฒนาโดย Salesforce ช่วยให้เราสามารถค้นหาโมเดลที่ดีที่สุดโดยอัตโนมัติโดยไม่ต้องเขียนโค้ดใดๆ ดังนั้นฉันจึงคิดว่าฉันสามารถสร้างเทมเพลตแมชชีนเลิร์นนิงแบบไม่ต้องเขียนโค้ดสำหรับ PredictionIO โดยใช้ TransmogrifAI ได้ จริงๆ แล้วตอนนี้มีวางจำหน่ายแล้วที่นี่



เรียกใช้ตัวอย่างไททานิค

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

อย่างไรก็ตาม ให้สร้างแอปพลิเคชันโดยใช้คำสั่ง pio

$ pio app new MyAutoMLApp1
[INFO] [App$] Initialized Event Store for this app ID: 4.
[INFO] [Pio$] Created a new app:
[INFO] [Pio$]       Name: MyAutoMLApp1
[INFO] [Pio$]         ID: 1
[INFO] [Pio$] Access Key: xxxxxxxxxxxxxxxx

ตั้งค่าคีย์การเข้าถึงเป็นตัวแปรสภาพแวดล้อม

$ export ACCESS_KEY=xxxxxxxxxxxxxxxx

รันเซิร์ฟเวอร์เหตุการณ์

$ pio eventserver &

นำเข้าข้อมูลไปยังเซิร์ฟเวอร์เหตุการณ์ รันคำสั่งต่อไปนี้ในไดเร็กทอรีรากของเทมเพลต

$ python ./data/import_titanic.py --file ./data/titanic.csv --access_key $ACCESS_KEY

ฝึกโมเดล การค้นหาโมเดลที่ดีที่สุดอาจใช้เวลานาน จากนั้นสรุปผลการฝึกอบรมจะปรากฏขึ้น

$ pio train

หากฝึกฝนสำเร็จ ขั้นตอนต่อไปคือการปรับใช้โมเดลเป็น Web API จะเปิดตัวบนพอร์ต 8080 เป็นค่าเริ่มต้น

$ pio deploy

สุดท้ายนี้ เราสามารถทดสอบ Web API ได้ดังนี้:

$ curl -H "Content-Type: application/json" -d '{ "pClass": "2", "name": "Wheadon, Mr. Edward H", "sex": "male", "age": 66, "sibSp": 0, "parCh": 0, "ticket": "C.A 24579", "fare", 10.5, "cabin": "", "embarked": "S" }' http://localhost:8000/queries.json
{"survived":0.0}
$ curl -H "Content-Type: application/json" -d '{ "pClass": "2", "name": "Nicola-Yarred, Miss. Jamila", "sex": "female", "age": 14, "sibSp": 1, "parCh": 0, "ticket": "2651", "fare", 11.2417, "cabin": "", "embarked": "C" }' http://localhost:8000/queries.json
{"survived":1.0}

ปรับแต่งข้อมูลของคุณ

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

"algorithms": [
  {
    "name": "algo",
    "params": {
      "target" : "survived",
      "schema" : [
        {
          "field": "survived",
          "type": "double",
          "nullable": false
        },
        {
          "field": "pClass",
          "type": "string",
          "nullable": true
        },
        ...
      ]
    }
  }
]

คุณต้องกำหนด schema ตามข้อมูลของคุณ และระบุ target ซึ่งจะเป็นการตอบสนองของ Web API สำหรับการคาดการณ์ โปรดทราบว่าประเภทฟิลด์เป้าหมายต้องเป็น double ในตอนนี้

Apache PredictionIO และ TransmogrifAI เป็นทั้งโอเพ่นซอร์สโดย Salesforce และทำงานร่วมกับ Apache Spark ฉันคิดว่ามันไม่ใช่เรื่องบังเอิญ เราสามารถใช้สิ่งเหล่านี้ร่วมกันเพื่อทำให้เวิร์กโฟลว์แมชชีนเลิร์นนิงทั้งหมดเป็นอัตโนมัติ แน่นอนว่ายังมีอีกหลายสิ่งที่ต้องปรับปรุง ตัวอย่างเช่น จำเป็นต้องรองรับอัลกอริธึมและประเภทข้อมูลที่กว้างขึ้น แต่ฉันเชื่อว่าพวกเขาเป็นส่วนผสมที่ดี

ในระหว่างที่ฉันสร้างเทมเพลต AutoML นี้ ฉันได้รับคำแนะนำเกี่ยวกับ TransmogrifAI บน Twitter จาก Matthew Tovbin ซึ่งเป็นหนึ่งในนักพัฒนาหลักของ TransmogrifAI ขอบคุณมากสำหรับคำแนะนำของเขา!

ยังไงก็ลองเทมเพลตนี้ดูครับ ข้อเสนอแนะใด ๆ ยินดีต้อนรับ!