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 องค์ประกอบ

  1. ข้อมูลที่เราจะต้องฟีดอินเข้าไป (data, experience)

  2. สิ่งที่เราต้องการจะให้คอมพิวเตอร์ทำ (task)

  3. การประเมินผลของ 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

  1. ไม่มี ML อันไหนดีที่สุด สุดท้ายแล้วมันก็จะมีตัวใหม่ ๆ เข้ามาเรื่อย ๆ โพสต์นี้อธิบายได้ชัดเจนดี https://www.facebook.com/datasciencechill/posts/342635836121480/

  2. Bias-Variance trade-off -- ถ้าเรายิ่งเพิ่ม variance เข้าไป ก็จะทำให้ model เกิดความโน้มเอียงที่จะทำนายกลุ่ม เทรนนิ่งถูกอย่างเดียว แต่เวลาเอาไปใช้จริง กลับทำนายได้แย่ (เหมือนกับเราไปเอา noise เข้ามาใส่ไว้เป็นตัวแปรหนึ่งของการสร้างโมเดล) -- เราต้องหาจุดตรงกลางระหว่าง overfitting and underfitting -- จะทำแบบนี้ได้ก็ต่อเมื่อเราต้องมาการ validate ตัว model ที่สร้างมาจากแต่ละตัวแปร


































  1. การ validate ก็เริ่มจากการนำข้อมูลที่เราได้มา เอามาแบ่งไว้สำหรับการสร้างโมเดลส่วนหนึ่ง กับอีกอันเก็บไว้สำหรับการ validate หรือ test จะแบ่งหนึ่งครั้งตามรูปข้างล่าง

หรือจะทำการ cross validate ก็ได้ตามภาพข้างล่าง



  1. 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 (เอาเฉพาะที่สำคัญ ๆ)

  1. Decision Tree-based learning

    1. Decision Trees

    2. Random forest

  2. Local Methods 

    1. K-means algo

    2. k-NN algo

  3. Artificial neural network

    1. Feed-forward NN

    2. Kohonen Maps


Decision Tree-based learning


Root node -- คือ data 1 ตัว หรือ compound 1 compound -- สปลิตไปตาม features ของตัว compound ตัวนั้น (decision node) และออกมาเป็นผลลัพธ์ (leaves -- เช่น toxic หรือ non-toxic)


เขาบอกวิธีนี้ค่อนข้างมีข้อดีหลายอย่าง

  1. ง่ายต่อการแปลผล -- เช่น ทำให้เรารู้ว่า ทำไม compound ตัวนี้ถึงถูกทำนายว่าน่าจะมี properties แบบนี้ ซึ่งเราดูได้จากตัว decision node

  2. No data pretreatment  --  เข้าใจว่าไม่จำเป็นต้อง transform data แต่เอาคุณสมบัติของตัวมันเองโดยตรงมาตั้งเป็น decision node ได้เลย

  3. สามารถใช้ได้กับ numerical/categorical variables

  4. ใช้ได้กับ regression/classification

  5. ใช้ได้กับ non-parametric (ไม่รู้ว่ามีการ distribute ของข้อมูลยังไงบ้าง)

  6. เลือก variable โดยอัตโนมัติตาม decision nodes


Random forest



เริ่มต้นจากการสร้างป่า จาก 1 tree -- create training set หลาย ๆ training set แล้วเอามาดูว่า tree ตัวไหนให้ค่าที่ดีที่สุด


Local approaches

K-mean -- ใช้ diameter ของแต่ละตัวในการหาความสัมพันธ์

Unsupervised -- เลือก k คือ จำนวนที่เราต้องการจะแยก จากนั้น คำนวนหาศูนย์กลางของการแยกแบบสุ่ม จนได้ค่าที่เหมาะสมต่อการแยกได้





สำหรับ local approach นั้น

  1. Good for large training set with localized differences -- compound มีความ heterogeneity มาก

  2. ยากต่อการแปลผล

  3. Which k? -- จะแยกกี่กลุ่ม

  4. Which distance measure?

  5. 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

Popular posts from this blog

Useful links (updated: 2024-12-13)

Odd ratio - อัตราส่วนของความต่าง

Note: A Road to Real World Impact (new MU-President and Team) - update 12 Sep 2024