ข้อมูลวิทยาศาสตร์ใน C (หรือ C ++)


40

ฉันเป็นRโปรแกรมเมอร์ภาษา ฉันยังอยู่ในกลุ่มคนที่ถือว่าเป็นนักวิทยาศาสตร์ด้านข้อมูล แต่มาจากสาขาวิชาการที่ไม่ใช่ CS

สิ่งนี้ทำงานได้ดีในบทบาทของฉันในฐานะนักวิทยาศาสตร์ข้อมูล แต่ด้วยการเริ่มต้นอาชีพของฉันRและมีความรู้พื้นฐานเกี่ยวกับภาษาสคริปต์ / เว็บภาษาอื่น ๆ ฉันรู้สึกไม่เพียงพอใน 2 ประเด็นสำคัญ:

  1. ขาดความรู้ที่เป็นของแข็งเกี่ยวกับทฤษฎีการเขียนโปรแกรม
  2. ขาดระดับการแข่งขันของทักษะในภาษาได้เร็วขึ้นและกว้างขวางมากขึ้นมาใช้เช่นC, C++และJavaซึ่งสามารถนำมาใช้ในการเพิ่มความเร็วของท่อและข้อมูลขนาดใหญ่การคำนวณเช่นเดียวกับการสร้าง DS / ผลิตภัณฑ์ข้อมูลซึ่งสามารถได้รับการพัฒนามากขึ้นอย่างรวดเร็วเข้าไปอย่างรวดเร็ว สคริปต์แบ็คเอนด์หรือแอพพลิเคชันแบบสแตนด์อโลน

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

อย่างไรก็ตามตอนนี้ฉันเริ่มที่จะแก้ไขปัญหาที่ # 1 และ # 2 ข้างต้นแล้วฉันก็ถามตัวเองว่า " ภาษาเป็นอย่างไรCและC++วิทยาศาสตร์ข้อมูลเป็นอย่างไร? "

ตัวอย่างเช่นฉันสามารถย้ายข้อมูลไปมาอย่างรวดเร็วและโต้ตอบกับผู้ใช้ได้ดี แต่สิ่งที่เกี่ยวกับการถดถอยขั้นสูงการเรียนรู้ของเครื่องการทำเหมืองข้อความและการดำเนินการทางสถิติขั้นสูงอื่น ๆ

ดังนั้น. สามารถCทำงานได้ - มีเครื่องมืออะไรบ้างสำหรับสถิติขั้นสูง ML, AI และสาขาอื่น ๆ ของ Data Science หรือฉันต้องหลวมประสิทธิภาพส่วนใหญ่ที่ได้จากการเขียนโปรแกรมCด้วยการโทรหาRสคริปต์หรือภาษาอื่น ๆ ?

ทรัพยากรที่ดีที่สุดที่ฉันได้พบป่านนี้ใน C เป็นห้องสมุดที่เรียกว่าปลาฉลามซึ่งจะช่วยให้C/ C++ความสามารถในการใช้สนับสนุนเวกเตอร์เครื่องถดถอยเชิงเส้น (ไม่ใช่ไม่เชิงเส้นและการถดถอยขั้นสูงอื่น ๆ เช่นพหุนาม probit, ฯลฯ ) และตัวเลือกของอื่น ๆ ฟังก์ชั่นทางสถิติที่ยอดเยี่ยม แต่เยี่ยมยอด


5
คำถามนี้ดูเหมือนจะเป็นไปตามหลักความเห็น โปรดพิจารณาการใช้ถ้อยคำใหม่ อาจถามว่าเครื่องมือวิทยาศาสตร์ข้อมูลชนิดใดที่มีให้บริการสำหรับ C / C ++ หรือแอปพลิเคชันประเภทใดที่ใช้ภาษาเหล่านี้
sheldonkreger

1
@sheldonkreger นั่นคือสิ่งที่ฉันถามฉันจะทำให้ชัดเจนยิ่งขึ้นขอบคุณ
Hack-R

1
ฉันใช้ Waffles (C ++) เพื่อรวมการเรียนรู้ของเครื่องเป็นเครื่องมือ C ++ ที่มีอยู่
Pete

@Pete ถ้าคุณสามารถรวมคำตอบนั้นฉันมีแนวโน้มที่จะทำเครื่องหมายว่าเป็นวิธีแก้ปัญหา
Hack-R

1
เครื่องมือ Meta สามารถใช้ได้ใน C ++: meta-toolkit.github.io/meta มีหลักสูตรเกี่ยวกับ Coursera ที่ใช้มันยังอยู่ในสัปดาห์ที่ 1 ดังนั้นคุณอาจต้องการดู หลักสูตรนี้เรียกว่า "การดึงข้อความและเครื่องมือค้นหา"
LauriK

คำตอบ:


35

หรือฉันต้องหลวมประสิทธิภาพส่วนใหญ่ที่ได้จากการโปรแกรมใน C โดยการเรียกใช้สคริปต์ R หรือภาษาอื่น ๆ ?

ทำสิ่งที่ตรงกันข้าม: เรียนรู้ C / C ++ เพื่อเขียนส่วนขยาย R ใช้ C / C ++ เฉพาะสำหรับส่วนที่สำคัญต่อประสิทธิภาพของอัลกอริทึมใหม่ของคุณใช้ R เพื่อสร้างการวิเคราะห์ของคุณนำเข้าข้อมูลสร้างแปลงเป็นต้น

หากคุณต้องการไปไกลกว่า R ฉันขอแนะนำให้เรียนรู้ python มีห้องสมุดมากมายเช่นscikit การเรียนรู้สำหรับขั้นตอนวิธีการเรียนรู้ของเครื่องหรือPyBrainสำหรับการสร้างโครงข่ายประสาท ฯลฯ (และใช้ pylab / matplotlibสำหรับพล็อตและโน๊ตบุ๊ค IPythonในการพัฒนาการวิเคราะห์ของคุณ) อีกครั้ง C / C ++ มีประโยชน์ในการใช้อัลกอริทึมวิกฤตเวลาเป็นส่วนขยายหลาม


1
ขอบคุณ Andre ฉันใช้ Pybrain เป็นจำนวนมาก สำหรับฉัน Python เป็นจุดศูนย์กลางระหว่าง R และ C แต่ฉันยังต้องการเรียนรู้ C สำหรับทั้งความเร็วและการใช้งานโค้ดที่กว้างขึ้น ฉันเลือกสิ่งนี้เป็นวิธีแก้ปัญหาเพราะฉันไม่เคยคิดที่จะใช้ C / C ++ เพื่อเขียนส่วนขยาย R ซึ่งเป็นแนวคิดที่ยอดเยี่ยมจริงๆที่ฉันจะต้องทำอย่างแน่นอน ขอบคุณ !!
Hack-R

1
ฉันสองความคิดของการเรียนรู้ Python ฉันทำงานกับชุดข้อมูลขนาดใหญ่และนักวิทยาศาสตร์ข้อมูลที่ใช้ R เพื่อวิเคราะห์ชุดข้อมูลเหล่านั้น แม้ว่าฉันจะเรียน C ตั้งแต่อายุยังน้อยมาก แต่ Python เป็นภาษาเดียวที่ให้คุณค่ากับฉันอย่างแท้จริงในฐานะโปรแกรมเมอร์และช่วยเหลือนักวิทยาศาสตร์ด้านข้อมูลเหล่านี้ ดังนั้นมองไปที่ทีมที่ไม่ใช่คำชมเชย
Glen Swan

1
python ในทำนองเดียวกันจะถูกเร่งโดยการเขียนใน cython (อีกครั้งโดยทั่วไป C) ฉันต้องบอกว่าฉันยังไม่ได้ใช้มันเอง มีน้อยมากที่ไม่สามารถทำได้โดยใช้ห้องสมุดที่มีอยู่ (เช่น scikit-learn, pandas ใน python [ซึ่งเขียนด้วย cython ดังนั้นคุณไม่ต้องทำ!])
seanv507

ห้องสมุดไพ ธ อนที่มีประโยชน์อื่น ๆ ได้แก่ pandas, numpy, scipy และอื่น ๆ การเพิ่มสิ่งนี้เพื่อสนับสนุนการเรียนรู้ของ python :)
Shagun Sodhani

นี่คือจุดที่ ฉันจะทราบว่าถ้าคุณไม่มีพื้นหลัง CS โอกาสที่คุณจะเขียนโค้ดได้อย่างมีประสิทธิภาพมากกว่าฟังก์ชั่นพื้นฐานสำหรับ python หรือแพ็คเกจสำหรับ R นั้นค่อนข้างห่างไกล ฉันตั้งโปรแกรมใน C ++ เป็นเวลา 13 ปีและยังคงคิดว่ามีแง่มุมของการจัดการหน่วยความจำและการเพิ่มประสิทธิภาพที่ฉันทำได้ไม่ดี นอกจากนี้ไพ ธ อน & อาร์มีนักวิทยาศาสตร์คอมพิวเตอร์ที่ฉลาดมาก ๆ ปรับแก้ปัญหาการกระจายดังนั้นภาษา C จะถูกส่งไปยังระบบเวลาแฝงที่ต่ำมาก
jagartner

10

ดังที่ Andre Holzner ได้กล่าวไว้การขยาย R ด้วยส่วนขยาย C / C ++ เป็นวิธีที่ดีมากในการใช้ประโยชน์จากสิ่งที่ดีที่สุดของทั้งสองฝ่าย นอกจากนี้คุณสามารถลองผกผันการทำงานกับ C ++ และฟังก์ชั่นการโทรตามโอกาสของ R พร้อมแพ็คเกจ RInside o R. ที่นี่คุณสามารถค้นหาวิธี

http://cran.r-project.org/web/packages/RInside/index.html http://dirk.eddelbuettel.com/code/rinside.html

เมื่อคุณทำงานใน C ++ คุณจะมีห้องสมุดหลายแห่งห้องสมุดหลายแห่งสร้างขึ้นสำหรับปัญหาเฉพาะและอื่น ๆ

http://www.shogun-toolbox.org/page/features/ http://image.diku.dk/shark/sphinx_pages/build/html/index.html

http://mlpack.org/


9

ฉันยอมรับว่าแนวโน้มปัจจุบันคือการใช้ Python / R และผูกเข้ากับส่วนขยาย C / C ++ สำหรับงานที่มีราคาแพง

อย่างไรก็ตามหากคุณต้องการอยู่ใน C / C ++ คุณอาจต้องการดู Dlib :

Dlib เป็นไลบรารี C ++ ข้ามแพลตฟอร์มที่ออกแบบโดยใช้สัญญาการเขียนโปรแกรมและเทคนิค C ++ ที่ทันสมัย เป็นซอฟต์แวร์โอเพ่นซอร์สและได้รับอนุญาตภายใต้ Boost Software License

ป้อนคำอธิบายรูปภาพที่นี่


อีกคำตอบที่มีประโยชน์อย่างมาก คุณรู้หรือไม่ว่าเราได้รับอนุญาตให้ทำซ้ำภาพนั้นได้อย่างอิสระ (ในกรณีที่ฉันต้องการนำเสนอในการนำเสนอหรือบล็อก ฯลฯ ) นอกจากนี้เมื่อมันพูดถึงสิ่งต่าง ๆ เช่น "> 20k ตัวอย่าง" ฉันสงสัยว่ามันหมายถึง "ตัวอย่าง" หรือ "การสังเกตในตัวอย่างของคุณ" หรือไม่?
Hack-R

2
ฉันเป็นผู้เขียน dlib อย่าลังเลที่จะโพสต์ภาพทุกที่ที่คุณต้องการ :) นอกจากนี้ตัวอย่าง> 20k หมายความว่าคุณมีเวกเตอร์ 20k หรืออะไรก็ตาม จำนวนตัวแปรที่อยู่ในแต่ละตัวอย่างเป็นปัญหาที่แยกจากกัน
Davis King

@ Hack-R "Sample" เป็นหนึ่งในคำศัพท์ที่มากเกินไปในสถิติ / การเรียนรู้ของเครื่องจักรซึ่งบางครั้งมันหมายถึงชุดของอินสแตนซ์ที่ดึงมาจากประชากร (เช่นใน "ขนาดตัวอย่าง", "ตัวอย่างเฉลี่ย" เป็นต้น) และบางครั้ง หมายถึงแต่ละอินสแตนซ์ (เช่นใน "ฝึกฝนตัวจําแนกบนตัวอย่าง 10K")
ทิมกู๊ดแมน

6

ในความคิดของความนึกคิดที่จะเป็นมากขึ้นรอบรู้มืออาชีพก็จะดีจะรู้ว่าอย่างน้อยการเขียนโปรแกรมภาษาหนึ่งที่เป็นที่นิยมมากที่สุดในกระบวนทัศน์การเขียนโปรแกรม ( ขั้นตอน , object-oriented , การทำงาน ) แน่นอนฉันคิดว่าRและPythonเป็นภาษาการเขียนโปรแกรมและสภาพแวดล้อมที่เป็นที่นิยมที่สุดสำหรับวิทยาศาสตร์ข้อมูลและดังนั้นเครื่องมือวิทยาศาสตร์ข้อมูลหลัก

จูเลียนั้นน่าประทับใจในบางแง่มุม แต่มันพยายามที่จะไล่ตามทั้งสองนั้นและสร้างตัวมันเองเป็นเครื่องมือวิทยาศาสตร์ข้อมูลที่สำคัญ อย่างไรก็ตามฉันไม่เห็นสิ่งนี้เกิดขึ้นเร็ว ๆ นี้เพียงเพราะความนิยมของR / Python ชุมชนที่มีขนาดใหญ่มากรวมถึงระบบนิเวศขนาดใหญ่ของแพ็คเกจ / ไลบรารีที่มีอยู่และที่พัฒนาขึ้นใหม่ครอบคลุมโดเมน / ฟิลด์ต่างๆ ศึกษา.

ต้องบอกว่าหลายแพ็กเกจและห้องสมุดที่มุ่งเน้นวิทยาศาสตร์ข้อมูล ML และ AI พื้นที่ที่มีการดำเนินการและ / หรือให้APIsในภาษาอื่น ๆ กว่า R หรืองูหลาม (เพื่อพิสูจน์ให้ดูรายการนี้มีการดูแลจัดการและรายการ curated นี้ซึ่งทั้งสองอย่าง ยอดเยี่ยมและให้มุมมองที่มั่นคงเกี่ยวกับความหลากหลายในสนาม) นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งสำหรับซอฟต์แวร์ที่เน้นประสิทธิภาพหรือเฉพาะ สำหรับซอฟต์แวร์ที่ฉันได้เห็นโครงการที่มีการดำเนินงานและ / หรือ APIs ส่วนใหญ่ใน Java, C และ C ++ (Java เป็นที่นิยมโดยเฉพาะอย่างยิ่งในข้อมูลขนาดใหญ่ส่วนของข้อมูลวิทยาศาสตร์ - เนื่องจากความใกล้ชิดในการHadoopและระบบนิเวศของ - และในNLPเซกเมนต์) แต่มีตัวเลือกอื่นให้ใช้แม้ว่าจะมีขอบเขต จำกัด ตามโดเมน ภาษาเหล่านี้ไม่เสียเวลา แต่คุณต้องจัดลำดับความสำคัญของการเรียนรู้ใด ๆ หรือทั้งหมดกับสถานการณ์การทำงานโครงการและความสนใจในปัจจุบันของคุณ ดังนั้นเพื่อตอบคำถามของคุณเกี่ยวกับชีวิตของ C / C ++ (และ Java) ผมจะบอกว่าพวกเขาทั้งหมดทำงานได้แต่ไม่เป็นหลักเครื่องมือวิทยาศาสตร์ข้อมูล แต่ในฐานะรองคน

ตอบคำถามของคุณใน 1) Cเป็นเครื่องมือวิทยาศาสตร์ข้อมูลที่มีศักยภาพและ 2) ประสิทธิภาพของมันฉันจะบอกว่า: 1) ในขณะที่เป็นไปได้ที่จะใช้Cสำหรับวิทยาศาสตร์ข้อมูลฉันจะแนะนำไม่ให้ทำเพราะคุณมี การหาไลบรารีที่สอดคล้องกันหรือยากกว่านั้นคือพยายามใช้อัลกอริทึมที่เกี่ยวข้องด้วยตัวเอง 2) คุณไม่ควรกังวลเกี่ยวกับประสิทธิภาพเนื่องจากมีการใช้งานเซ็กเมนต์ที่สำคัญเกี่ยวกับประสิทธิภาพในภาษาระดับต่ำเช่น C และมีตัวเลือกในการเชื่อมต่อภาษาวิทยาศาสตร์ข้อมูลที่เป็นที่นิยมด้วยพูด C (ตัวอย่างเช่นRcppแพคเกจสำหรับ การรวม R กับ C / C ++: http://dirk.eddelbuettel.com/code/rcpp.html) นี่เป็นวิธีที่ง่ายกว่า แต่มักจะค่อนข้างมีประสิทธิภาพเช่นการใช้ vectorization ใน R อย่างสม่ำเสมอรวมถึงการใช้เฟรมเวิร์กการเขียนโปรแกรมแบบขนานแพ็คเกจและไลบรารีที่หลากหลาย สำหรับตัวอย่าง R ระบบนิเวศดูCRAN งานมุมมอง "ประสิทธิภาพสูงและ Parallel Computing กับ R"

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


5

R เป็นหนึ่งในเครื่องมือสำคัญสำหรับนักวิทยาศาสตร์ด้านข้อมูลสิ่งที่คุณไม่เคยหยุดใช้

ตอนนี้พูดถึง C, C ++ หรือ Java เป็นภาษายอดนิยม ไม่ว่าคุณจะต้องการหรือจะต้องขึ้นอยู่กับประเภทของงานหรือโครงการที่คุณมี จากประสบการณ์ส่วนตัวมีเครื่องมือมากมายสำหรับนักวิทยาศาสตร์ด้านข้อมูลที่คุณจะรู้สึกเหมือนคุณต้องเรียนรู้อยู่ตลอดเวลา

คุณสามารถเพิ่ม Python หรือ Matlab ไปยังสิ่งต่าง ๆ เพื่อเรียนรู้หากคุณต้องการและเพิ่มต่อไป วิธีที่ดีที่สุดในการเรียนรู้คือการทำโครงงานโดยใช้เครื่องมืออื่น ๆ ที่คุณไม่คุ้นเคย ถ้าฉันเป็นคุณฉันจะเรียนรู้ Python ก่อน C. มันถูกใช้ในชุมชนมากกว่า C แต่การเรียน C ไม่ใช่การเสียเวลาของคุณ


ฉันรู้ว่าคุณหมายถึงอะไรเกี่ยวกับเครื่องมือจำนวนมาก! ฉันบอกผู้ฝึกงานว่าอย่าให้ฟุ้งซ่านและให้ความสนใจกับสิ่งต่าง ๆ เพียง 1 หรือ 2 แต่ก็ยากที่จะรับคำแนะนำของตัวเอง
Hack-R

5

ในฐานะนักวิทยาศาสตร์ด้านข้อมูลภาษาอื่น ๆ (C ++ / Java) มีประโยชน์เมื่อคุณต้องการรวมการเรียนรู้ของเครื่องเข้ากับกลไกการผลิตที่มีอยู่

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

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

ปรับปรุง

สำหรับแอปพลิเคชันเชิงพาณิชย์ที่มีชุดข้อมูลขนาดใหญ่ Apache Spark - MLLib เป็นสิ่งสำคัญ ที่นี่คุณสามารถใช้ Scala, Java หรือ Python


2

ฉันอยากรู้ว่าทำไมคุณต้องใช้ภาษาอื่น (นอกเหนือจาก Python แบบฟอร์ม) หากเป้าหมายของคุณคือ "แต่สิ่งที่เกี่ยวกับการถดถอยขั้นสูงการเรียนรู้ของเครื่องการทำข้อความและการดำเนินการทางสถิติขั้นสูงอื่น ๆ "
สำหรับสิ่งนั้น C คือเสียเวลา มันเป็นเครื่องมือที่ดีที่จะมี แต่ใน ~ 20 ปีนับตั้งแต่ Java ออกมาฉันไม่ค่อยเขียน C
ถ้าคุณชอบด้านการเขียนโปรแกรมที่ใช้งานได้มากกว่าของ R เรียนรู้สกาล่าก่อนที่คุณจะเขียนนิสัยที่ไม่ดีของขั้นตอนการเข้ารหัสด้วย C .
สุดท้ายเรียนรู้การใช้ห้องสมุด Hadley Wickham ของ - พวกเขาจะช่วยให้คุณประหยัดเวลาได้มากทำจัดการข้อมูล


เนื่องจากภาษาอย่าง R และ Python ช้า / ไม่มีประสิทธิภาพมากเมื่อเทียบกับภาษาอย่าง C ดังนั้นเมื่อต้องจัดการกับข้อมูลและการคำนวณจำนวนมากถ้าคุณสามารถทำอะไรใน C มันจะเร็วกว่าถ้าคุณสามารถทำได้ใน R ฉันรักและใช้งาน แพ็คเกจของ Hadley สรรพสินค้าใหญ่!
Hack-R

2

มีเครื่องมือ C ++ สำหรับสถิติและวิทยาศาสตร์ข้อมูลเช่น ROOT https://root.cern.ch/drupal/ , BAT https://www.mppmu.mpg.de/bat/ , boost หรือ OpenCV


! น่ากลัว ขอขอบคุณ. ฉันแค่หวังว่าพวกเขาจะธรรมดา C เช่นกัน แต่ก็ยังมีประโยชน์
Hack-R

1

ไม่แน่ใจว่ามันถูกกล่าวถึง แต่ยังมีvowpal wabbitแต่อาจเฉพาะเจาะจงกับปัญหาบางประเภทเท่านั้น


1
ดูน่าสนใจ ฉันเหลือบมองไปที่ลิงค์เท่านั้น แต่รุ่นของรุ่นที่กล่าวถึงจะมีประโยชน์ เป็นไลบรารี C ปกติที่คุณสามารถใช้ในโปรแกรมได้หรือไม่? ฉันจะต้องตรวจสอบเพิ่มเติม
Hack-R

0

ดูIntel DAALซึ่งกำลังดำเนินการอยู่ เหมาะอย่างยิ่งสำหรับสถาปัตยกรรม CPU ของ Intel และรองรับการคำนวณแบบกระจาย


0

โซลูชันการเรียนรู้ของเครื่องที่ปรับขนาดได้สำหรับ Big Data:

ฉันจะเพิ่ม $ .02 ของฉันเพราะมีพื้นที่สำคัญที่ดูเหมือนว่าจะไม่ได้รับการแก้ไขในโพสต์ก่อนหน้าทั้งหมด - การเรียนรู้ของเครื่องกับข้อมูลขนาดใหญ่ !

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

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

นอกจากนี้เรายังใช้ C และ C ++ ทุกที่ภายในผลิตภัณฑ์ฐานข้อมูลที่เป็นกรรมสิทธิ์ ทุกสิ่งในระดับสูงของเราได้รับการจัดการใน C ++ และ MPI แต่สิ่งที่อยู่ในระดับต่ำที่สัมผัสกับข้อมูลนั้นมีความยาวและอาเรย์ตัวอักษรสไตล์ C ทั้งหมดเพื่อให้ผลิตภัณฑ์มีความรวดเร็วมาก ความสะดวกสบายของสตริง std นั้นไม่คุ้มกับต้นทุนการคำนวณ

มีไม่มาก c ++ ไลบรารีที่มีอยู่ซึ่งมีการกระจายความสามารถในการเรียนรู้ของเครื่องที่ปรับขนาดได้ - MLPACK

อย่างไรก็ตามมีโซลูชันอื่น ๆ ที่ปรับขนาดได้ด้วย API:

Apache Spark มีไลบรารีการเรียนรู้ของเครื่องที่ปรับขนาดได้ที่เรียกว่าMLibที่คุณสามารถเชื่อมต่อได้

นอกจากนี้ยังTensorflowขณะนี้มีการกระจาย tensorflowและมีc ++ API

หวังว่านี่จะช่วยได้!

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