Machine learning (ML) in chemoinformatics - free lecture!
Ref: http://bigchem.eu/sites/default/files/17052017-grisoni.mp4
ทำไมต้องใช้ machine learning (ML) in chemoinformatics
เอาไปใช้ในการทำนาย biological activity
เอาไว้ใช้ทำนาย toxicity ของ substance
เอาไว้ใช้ในการหาคุณสมบัติทางเคมี-กายภาพ (physico-chemical)
เอาไว้ใช้ในการ optimize คุณสมบัติต่าง ๆ ของสารตัวหนึ่งเพื่อให้ได้ผลตามที่เราต้องการ
หรือแม้กระทั่งนำมาช่วยในการออกแบบตัวยา
ผลลัพธ์ที่ต้องการ = function (คุณสมบัติต่าง ๆ ของสารเคมี มีตั้งแต่ 1มิติ 2มิติ 3มิติ)
ML
-- มีข้อมูล ฟีดอินข้อมูลเข้าไป เพื่อให้คอมพิวเตอร์มันเรียนรู้ เพื่อที่จะได้ผลลัพธ์ออกมาจากตรงนั้น ซึ่งมันประกอบไปด้วย 3 องค์ประกอบ
ข้อมูลที่เราจะต้องฟีดอินเข้าไป (data, experience)
สิ่งที่เราต้องการจะให้คอมพิวเตอร์ทำ (task)
การประเมินผลของ task (performance measurement)
เช่น
data
1 chemical compound -- แปลงเป็น molecular descriptor (variables) ถ้าเป็นหลาย ๆ compounds ก็เอามาฟีดอินให้กับคอมพิวเตอร์ เพื่อหา pattern ที่มีความสัมพันธ์กับผลลัพธ์
GIGO -- garbage in garbage out
Data -- > model -- > result ถ้าข้อมูลที่ฟีดอินเข้าไปไม่น่าเชื่อถือ ผลลัพธ์ที่ได้ออกมาก็ไม่น่เชื่อถือเช่นกัน ดังน้ัน เป็นเรื่องที่สำคัญมากที่เราควรจะดูที่ข้อมูลตั้งต้นก่อนว่ามีความถูกต้องไหม โครงสร้างทางสารเคมีถูกตัวกับผลลัฑธ์ที่ได้จากการทดลองหรือเปล่า experimental responseds หรือ experimental approach มีผลอะไรไหมต่อผลลัพธ์ หรือมี noise เยอะไป คำว่า noise คือ มี facotor อื่นเข้ามา interfere กับ variable ทำให้ไม่สามารถไปใช้ร่วมกันกับข้อมูลตัวอื่น ๆ ได้
ML task
Unsupervised -- looking for clustering แค่หา pattern เพื่อแยกความแตกต่างก็พอ
Supervised -- looking for additional factor เพื่อบอกความแตกต่างระหว่างกลุ่ม คือ เหมือนเป็นการ label ให้กับกลุ่มของข้อมูล
หลังจากฟังหลาย ๆ รอบรู้สึกว่าภาพนี้เข้าใจได้ง่ายดี สำหรับ classification ก็มีหลายแบบ ขึ้นอยู่กับลักษณะของข้อมูล จะแยกเป็นแบบเส้นตรง หรือไม่ใช่เส้นตรง หรือแบบจำเพาะก็ได้ ทั้งนี้หลังจากการสร้าง model เสร็จแล้ว (การตีเส้นแบ่ง) -- เราสามารถประเมิน performance ของตัว model ก็ได้ว่ามีความแม่นยำขนาดไหน
Performance
เช่น confusion matrix
สิ่งที่ต้อง concern
ไม่มี ML อันไหนดีที่สุด สุดท้ายแล้วมันก็จะมีตัวใหม่ ๆ เข้ามาเรื่อย ๆ โพสต์นี้อธิบายได้ชัดเจนดี https://www.facebook.com/datasciencechill/posts/342635836121480/
Bias-Variance trade-off -- ถ้าเรายิ่งเพิ่ม variance เข้าไป ก็จะทำให้ model เกิดความโน้มเอียงที่จะทำนายกลุ่ม เทรนนิ่งถูกอย่างเดียว แต่เวลาเอาไปใช้จริง กลับทำนายได้แย่ (เหมือนกับเราไปเอา noise เข้ามาใส่ไว้เป็นตัวแปรหนึ่งของการสร้างโมเดล) -- เราต้องหาจุดตรงกลางระหว่าง overfitting and underfitting -- จะทำแบบนี้ได้ก็ต่อเมื่อเราต้องมาการ validate ตัว model ที่สร้างมาจากแต่ละตัวแปร
การ validate ก็เริ่มจากการนำข้อมูลที่เราได้มา เอามาแบ่งไว้สำหรับการสร้างโมเดลส่วนหนึ่ง กับอีกอันเก็บไว้สำหรับการ validate หรือ test จะแบ่งหนึ่งครั้งตามรูปข้างล่าง
หรือจะทำการ cross validate ก็ได้ตามภาพข้างล่าง
Applicability -- หมายความว่าโมเดลที่เราได้ออกมา 1 โมเดลจาก ML นั้น ไม่ได้หมายความว่า มันจะใช้ได้กับทุก ๆ สถานการณ์ ต้องไปดูด้วยว่า training data set เราเอาอะไรมาใช้ในการเทรนโมเดล เช่น ชนิดของ chemical structure หรือ physicochemical properties หรือ mechanism of action ของ compound ตัวนั้นเป็นแบบไหน ML models -- > reductionist -- การเบรคดาวน์ออกมาแล้วมาหา similarity เพื่อที่จะทำนาย output
Applicability domain -- คือ chemical space ที่คุณสมบัติแต่ละตัวนั้น สามารถที่จะถูกนำมาทำนายได้อย่างมีความน่าเชื่อถือ
เอาเฉพาะภาพแรก โมเลกุลน้ำเงินคิอ training data และกรอบก็คือ chemical space และ X1 and X2 คือ variable -- ดังนั้น ถ้ามีโมเลกุลตัวใหม่ ที่ variable ตกอยู่ใน bounding-box -- > ก็แสดงว่าโมเลกุลตัวนั้นสามารถนำมา predict และให้ผลลัพธ์ที่มีความน่าเชื่อถือ แต่ถ้า โมเลกุลตัวไหน ที่ไม่ได้ตกอยุ่ใน bounding box การที่เอาตัวนั้นมาทำนายด้วย model นี้ มันจะให้ผลลัพธ์ที่ไม่น่าเชื่อถือ
เป็น standard workflow ของ ML -- ถ้าโมเดลตัวไหนก็ตามที่ให้ค่า chemical space ที่ไม่แมตช์กับ test set ก็ exclude model นั้นออกก็ได้ -- ถ้าเราได้ค่า stat ตามที่เราต้องการแล้ว เราอาจจะทำได้สองอย่าง คือ 1. ใช้ model ตัวนี้ในการอธิบายลักษณะของ chemical compounds 2. เอาไปทำนายสารตัวใหม่ว่ามี output อย่างไร
ML methods (เอาเฉพาะที่สำคัญ ๆ)
Decision Tree-based learning
Decision Trees
Random forest
Local Methods
K-means algo
k-NN algo
Artificial neural network
Feed-forward NN
Kohonen Maps
Decision Tree-based learning
Root node -- คือ data 1 ตัว หรือ compound 1 compound -- สปลิตไปตาม features ของตัว compound ตัวนั้น (decision node) และออกมาเป็นผลลัพธ์ (leaves -- เช่น toxic หรือ non-toxic)
เขาบอกวิธีนี้ค่อนข้างมีข้อดีหลายอย่าง
ง่ายต่อการแปลผล -- เช่น ทำให้เรารู้ว่า ทำไม compound ตัวนี้ถึงถูกทำนายว่าน่าจะมี properties แบบนี้ ซึ่งเราดูได้จากตัว decision node
No data pretreatment -- เข้าใจว่าไม่จำเป็นต้อง transform data แต่เอาคุณสมบัติของตัวมันเองโดยตรงมาตั้งเป็น decision node ได้เลย
สามารถใช้ได้กับ numerical/categorical variables
ใช้ได้กับ regression/classification
ใช้ได้กับ non-parametric (ไม่รู้ว่ามีการ distribute ของข้อมูลยังไงบ้าง)
เลือก variable โดยอัตโนมัติตาม decision nodes
Random forest
เริ่มต้นจากการสร้างป่า จาก 1 tree -- create training set หลาย ๆ training set แล้วเอามาดูว่า tree ตัวไหนให้ค่าที่ดีที่สุด
Local approaches
K-mean -- ใช้ diameter ของแต่ละตัวในการหาความสัมพันธ์
Unsupervised -- เลือก k คือ จำนวนที่เราต้องการจะแยก จากนั้น คำนวนหาศูนย์กลางของการแยกแบบสุ่ม จนได้ค่าที่เหมาะสมต่อการแยกได้
สำหรับ local approach นั้น
Good for large training set with localized differences -- compound มีความ heterogeneity มาก
ยากต่อการแปลผล
Which k? -- จะแยกกี่กลุ่ม
Which distance measure?
Curse of dimensionality -- > variable selection
3-4 เป็นเรื่องที่ต้อง optimize ซึ่งไม่ง่าย
Neural model
ตัว f(x) -- จะอยู่ใน black box (hidden layer)
เส้นกลางเป็นเส้นที่เราจะเลือก model ออกมา เพราะเป็นจุดที่ดีที่สุดในการทำนายผล
เป็นการ convert dimensional ของ chemical compounds ออกมาเป็น 2 มิติ แล้วแยกเป็นชั้น ๆ
Which ML I should use?
ขึ้นอยู่กับว่าเราต้องการทำอะไร สร้างโมเดล ทำความเข้าใจดาต้า และดาต้าของเราเป็นแบบไหน มีจำนวนเท่าไหร่
ต้องพิจารณาด้วยว่า performance vs interpretability เราต้องการแบบไหนมากกว่ากัน เช่น ถ้าต้องการ performance อาจจะต้องใช้ NN
ครอบคลุม chemical space มากน้อยขนาดไหน
ชนิดของ variable ที่เราจะเอาเข้าไปใช้ เช่น molecular fingerprint, physico-chemical properties, 3D structures
และอื่น ๆ
Ref: https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
สรุปจาก ML
ML มันเรียนรู้จากข้อมูลของเรา ดังนั้นข้อมูลเราต้องดี
ไม่มี ML ตัวไหนดีที่สุด เพราะมันขึ้นอยู่กับลักษณะของข้อมูลที่เราเอาไว้เทรน และเอาไปเทส ถ้ามีข้อมูลใหม่ ๆ เข้ามาก็ต้องมาสร้าง model ใหม่
การ validate model และ การตรวจสอบ applicability domain มีความสำคัญมาก ถ้า domain แคบ แสดงว่าโมเดลของเราเอาไปทำนายได้ไม่ดี มันจะฟิตกับกลุ่มช้อมูลกลุ่มใดกลุ่มหนึ่งเท่านั้น ซึ่งไม่มีประโยชน์
ให้ความสำคัญกับ performance metrics เพราะจะมีผลต่อการเลือกโมเดลเอามาใช้ในการทำนาย
Comments
Post a Comment