การค้นหาคุณสมบัติที่ดีที่สุดในรูปแบบการโต้ตอบ


13

ฉันมีรายการโปรตีนพร้อมค่าคุณลักษณะ ตารางตัวอย่างมีลักษณะดังนี้:

...............Feature1...Feature2...Feature3...Feature4  
Protein1  
Protein2  
Protein3  
Protein4  

แถวคือโปรตีนและคอลัมน์เป็นคุณสมบัติ

ฉันยังมีรายการโปรตีนที่มีปฏิสัมพันธ์เช่นกัน ตัวอย่างเช่น

Protein3, Protein4  
Protein1, Protein2  
Protein4, Protein1  

ปัญหา : สำหรับการวิเคราะห์เบื้องต้นฉันต้องการทราบว่าคุณลักษณะใดที่มีส่วนร่วมมากที่สุดสำหรับการโต้ตอบของโปรตีน

ความเข้าใจของฉันคือโดยปกติต้นไม้การตัดสินใจสามารถใช้เพื่อให้ได้คุณลักษณะที่สำคัญที่สุดตามเอนโทรปี แต่ฉันไม่แน่ใจว่าจะขยายไปยังคู่โปรตีนได้อย่างไร (เช่นปฏิกิริยา) มีวิธีการสำหรับวัตถุประสงค์ดังกล่าวหรือไม่?


บอกฉันว่าฉันเข้าใจคุณถูกต้องหรือไม่: คุณมีความแข็งแรงของการโต้ตอบสำหรับโปรตีนคู่ใด ๆ (ตัวอย่างเช่นเป็นศูนย์ถ้าโปรตีนไม่โต้ตอบ) จากนั้นคุณต้องการให้เวกเตอร์ของคุณลักษณะมีค่าที่มีความสัมพันธ์สูง ด้วยความแข็งแรงของการปฏิสัมพันธ์? หรือกล่าวอีกนัยหนึ่งซึ่งจะช่วยให้คุณคาดเดาความแข็งแรงของการปฏิสัมพันธ์ระหว่างโปรตีน
dsign

คำตอบ:


25

สูตรที่แท้จริงสำหรับการแก้ปัญหาที่นำเสนอ (วิธีแก้ปัญหาหนึ่งที่เป็นไปได้)

มันเป็นเรื่องตรงไปตรงมาที่จะแก้ปัญหานี้โดยใช้เครื่องมือการเรียนรู้เครื่องที่ฉันโปรดปรานvowpal wabbitซึ่งรองรับคุณสมบัติกำลังสอง (กากบาท) ผ่านทางตัวเลือก-q

พื้นหลัง vowpal wabbit

ก่อนที่เราจะกระโดดเข้าไปดูรายละเอียดการใช้งาน vowpal wabbit เป็นซอฟต์แวร์เรียนรู้เครื่องจักรออนไลน์ที่รวดเร็วและปรับขนาดได้สำหรับการจำแนกและการถดถอย ฉันได้รับอัตราการเรียนรู้ (ฝึกอบรม) ประมาณ 5 ล้านฟีเจอร์ต่อวินาทีบนเดสก์ท็อปของฉันโดยไม่ จำกัด ขนาดข้อมูล (จำนวนตัวอย่าง) เนื่องจากเป็นเครื่องมือการเรียนรู้ออนไลน์ไม่จำเป็นต้องโหลดข้อมูลทั้งหมดลงในหน่วยความจำ มันมีคุณสมบัติที่น่าสนใจอื่น ๆ อีกมากมาย: รองรับอัลกอริทึมการเรียนรู้ที่แตกต่างกัน, ฟังก์ชั่นการสูญเสียที่หลากหลาย, คุณลักษณะที่กระจัดกระจาย, ประเภทคุณลักษณะที่หลากหลายและอื่น ๆ ซึ่งอยู่นอกเหนือขอบเขตของคำถามนี้

นี่คือ 3 ขั้นตอนในการแก้ปัญหาด้วยคำอธิบาย:

ขั้นตอนที่ 0: ดาวน์โหลดและสร้างvowpal wabbit จาก github (ดูหมายเหตุที่ด้านล่างในสภาพแวดล้อมที่รองรับ)

ขั้นตอนที่ 1: เตรียมชุดฝึกอบรมที่แต่ละบรรทัดมีลักษณะดังนี้:

1.0 protein1/protein2|A p1_feature1 p1_feature2 ... |B p2_feature1 ...
...

คำอธิบายของรูปแบบชุดฝึกอบรม:

หมายเลขซ้ายสุด1.0คือป้ายกำกับ (ความแข็งแรงของการโต้ตอบซึ่งอาจเป็นค่าตัวเลขใด ๆ ) สตริงที่สอง ' protein1 / protein2 ' เป็นแท็กที่จะให้อัตลักษณ์ของบรรทัด IOW: "บรรทัดนี้แสดงถึงการมีปฏิสัมพันธ์ระหว่าง protein1 และ protein2" ; มันเป็นตัวเลือกและคุณอาจคิดว่ามันเป็นความคิดเห็น แท็กสตริงนี้ยังสะท้อนในการทำนายจากแบบจำลองเพื่อระบุว่าการทำนายใดเป็นตัวอย่างใด แต่เราไม่ได้คาดการณ์ไว้ที่นี่เราแค่สร้างแบบจำลองและศึกษาแบบจำลองของเรา ถัดไปมาถึงช่องว่างชื่อคุณสมบัติสำหรับ protein1 |A(เราจำเป็นต้องกำหนดชื่อช่องว่างเพื่อให้เราสามารถข้ามระหว่างช่องว่างชื่อที่แตกต่างกันมันไม่จำเป็นต้องเป็นAสามารถคำใด ๆ ในความเป็นจริง แต่ตัวอักษรตัวแรกที่มีการแตกต่างกันระหว่างช่องว่างที่ชื่อเพื่อให้เราสามารถข้ามพวกเขาในการเรียกคำสั่ง) ตามด้วยรายการของการป้อนข้อมูลที่ให้บริการสำหรับ p1_...protein1 สุดท้ายมาชื่อพื้นที่สำหรับโปรตีน 2: |Bตามด้วยคุณสมบัติชื่อของโปรตีนp2_...2

หนึ่งในความสวยงามของ vowpal wabbit คือคุณสามารถใช้สตริงตามอำเภอใจสำหรับชื่อฟีเจอร์ (มันจะแฮชมันภายใน แต่คุณไม่สนใจ) ตัวอักษรพิเศษเฉพาะในชุดการฝึกอบรมคือ:

  • ช่องว่าง (ชัด)
  • |เพื่อป้อนคำนำหน้าคุณสมบัติและชื่อช่องว่างและ
  • : เพื่อแยกคุณสมบัติชื่อจากค่าของพวกเขา

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

ตอนนี้คุณอาจทำงาน vowpal_wabbit (ชื่อปฏิบัติการvw) โดย-q ABอัตโนมัติสร้างคุณลักษณะข้าม (aka แง่ปฏิสัมพันธ์) ระหว่างทั้งคู่เป็นไปได้ของคุณลักษณะที่หนึ่งคุณลักษณะที่ถูกเลือกจากprotein1 (พื้นที่ชื่อเริ่มต้นด้วยA) และอื่น ๆ จากprotein2 ( ชื่อพื้นที่เริ่มต้นด้วยB) vowpal_wabbit จะอ่านข้อมูลเรียนรู้และสร้างแบบจำลองที่มีน้ำหนักสำหรับการรวมคุณลักษณะทุกอย่างที่ส่งผลให้เกิดปฏิกิริยาระหว่างคู่ของโปรตีน ที่นี่แทนการทำงานvwโดยตรงเราจะเรียกใช้ผ่านvw-varinfoโปรแกรมอรรถประโยชน์ wrapper ซึ่งมาพร้อมกับ vowpal wabbit เป็นขั้นตอนสุดท้ายของเรา vw-varinfoวิ่งvwเพื่อสร้างแบบจำลองและทิ้งโมเดลในรูปแบบที่มนุษย์อ่านได้

ขั้นตอนที่ 3:โทรvw-varinfoเช่นนี้:

vw-varinfo -q AB -c --passes 20 your_data_set_file

VW-varinfo จะผ่านตัวเลือกทั้งหมด ( -q ... -c --passes ...) vwตามที่เป็นไป เฉพาะการ-q ABข้ามช่องว่างของชื่อสถานที่สองคุณลักษณะเท่านั้นที่จำเป็น ฉันเพิ่มอีกหนึ่งตัวเลือกด้านบน (เรียกใช้การผ่านหลายครั้ง) ซึ่งฉันเชื่อว่าจะให้ผลลัพธ์ที่ดีกว่า

คำสั่งนี้จะเรียก vowpal wabbit ( vw) เพื่อฝึกอบรมเกี่ยวกับชุดข้อมูลและพิมพ์ผลลัพธ์ที่ฉันเชื่อว่าคุณกำลังมองหา: การโต้ตอบคุณสมบัติทั้งหมดตามลำดับความแข็งแรงและน้ำหนักสัมพัทธ์

ตัวอย่างอินพุตและเอาต์พุต

สมมติว่าอินพุตของคุณprot.datมีการโต้ตอบ 3 ทางระหว่าง 3 โปรตีน:

1.0 protein1/protein2|A a b |B k m
0.6 protein2/protein3|A k m |B b c d
2.2 protein1/protein3|A a b |B b c d

นี่เป็นตัวอย่างที่เรียบง่ายมาก vwไม่ควรมีปัญหาใด ๆ กับชุดข้อมูลที่มีขนาดใหญ่กว่า (เช่นหลายล้านแถว, คุณสมบัตินับร้อย), นอกจากนี้ฉันยังเปลี่ยนแปลงป้ายกำกับความแข็งแรงของการโต้ตอบในตัวอย่าง หากในกรณีที่การโต้ตอบของคุณเป็นบูลีน "ใช่" หรือ "ไม่" เพียงใช้0(ไม่มีการโต้ตอบ) หรือ1(มีปฏิสัมพันธ์อยู่) เป็นฟิลด์ที่ 1 ในแต่ละบรรทัด

วิ่ง:

vw-varinfo -q AB -c --passes 20 prot.dat

จะให้การโต้ตอบที่เป็นไปได้ทั้งหมด (ไม่สนใจชื่อช่องว่างAและBในเอาต์พุต) และน้ำหนักของมัน:

FeatureName        HashVal   MinVal   MaxVal    Weight   RelScore
A^k                 220268     0.00     1.00   +0.3804    100.00%
A^k^B^k             254241     0.00     0.00   +0.3804    100.00%
A^k^B^m              93047     0.00     0.00   +0.3804    100.00%
B^k                 178789     0.00     1.00   +0.1011     26.58%
B^m                  17595     0.00     1.00   +0.1011     26.58%
[... trimmed for brevity ...]
A^m^B^m             141879     0.00     0.00   +0.0000      0.00%
Constant            116060     0.00     0.00   +0.1515      0.00%
A^b                 139167     0.00     1.00   -0.0641    -16.86%
A^b^B^k             204424     0.00     0.00   -0.1233    -32.43%
A^b^B^m              43230     0.00     0.00   -0.1233    -32.43%

แสดงให้เห็นว่าในข้อมูลนี้ร่วมสมทบที่แข็งแกร่งให้กับการโต้ตอบใด ๆ โดยทั่วไปคือ 1) การปรากฏตัวเพียงของkคุณลักษณะ 2) kคุณลักษณะการโต้ตอบกับตัวเอง (สมมติว่าทั้งโปรตีนมี) และ 3) การมีปฏิสัมพันธ์กับk mในขณะที่จุดอ่อนที่สุด (มีส่วนร่วมในเชิงลบต่อการปฏิสัมพันธ์ของโปรตีน) เป็นbคุณสมบัติที่จับคู่กับmคุณลักษณะ

นี่คือหน้า HOWTO ใน vw-varinfo

vowpal wabbit สร้างจากซอร์สโค้ด (ดูลิงค์ด้านบน) และทำงานบน Linux (และยูนิกซ์อื่น ๆ ), Mac OS-X และ Windows

HTH


นั่นจะบอกเป็นนัยหรือไม่ว่าการตัดทอนปฏิกิริยาที่ไม่ดีออกไปจะช่วยเพิ่มความแม่นยำของโมเดล
แมตต์

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

1

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


กราฟอาจไม่เป็นเลขฐานสอง .. เนื่องจากโปรตีนสามารถโต้ตอบกับโปรตีนมากกว่าหนึ่ง มีส่วนขยายสำหรับขอบหลายอันหรือไม่?
Anish

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

อืม .. ฉันสมมติว่าเมื่อคุณขอให้ฉันสร้างเมทริกซ์จตุรัสสำหรับการปฏิสัมพันธ์โปรตีนค่าในเมทริกซ์แสดงถึงจำนวนปฏิสัมพันธ์ระหว่างโปรตีน แต่ฉันไม่เห็นว่าเรากำลังใช้ฟีเจอร์ที่นี่ คุณอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ได้ไหม?
Anish

eigenvectors เป็นการรวมกันเชิงเส้นของโปรตีนในพื้นที่คุณลักษณะ
เอ็ม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.