วิทยาศาสตร์ข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านข้อมูลวิทยาศาสตร์ผู้เชี่ยวชาญด้านการเรียนรู้ของเครื่องจักรและผู้ที่สนใจเรียนรู้เพิ่มเติมเกี่ยวกับสาขานี้

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

1
Keras LSTM พร้อมอนุกรมเวลา 1D
ฉันเรียนรู้วิธีการใช้ Keras และผมเคยประสบความสำเร็จที่เหมาะสมกับชุดที่มีป้ายกำกับของฉันโดยใช้ตัวอย่างใน Chollet ของการเรียนรู้ลึกหลาม ชุดข้อมูลคือ ~ 1000 Time Series ที่มีความยาว 3125 กับ 3 คลาสที่อาจเกิดขึ้น ฉันต้องการไปไกลกว่าเลเยอร์หนาแน่นพื้นฐานซึ่งให้อัตราการคาดคะเนประมาณ 70% และหนังสือเล่มนี้จะพูดถึงเลเยอร์ LSTM และ RNN ตัวอย่างทั้งหมดดูเหมือนจะใช้ชุดข้อมูลที่มีคุณสมบัติหลายอย่างสำหรับแต่ละชุดเวลาและฉันพยายามหาวิธีนำข้อมูลมาใช้ให้เกิดประโยชน์ ตัวอย่างเช่นฉันมี 1000x3125 Time Series ฉันจะป้อนสิ่งนั้นลงในเลเยอร์ SimpleRNN หรือ LSTM ได้อย่างไร ฉันขาดความรู้พื้นฐานเกี่ยวกับเลเยอร์เหล่านี้หรือไม่? รหัสปัจจุบัน: import pandas as pd import numpy as np import os from keras.models import Sequential from keras.layers import …

1
"อัลกอริทึมการเรียนรู้การเสริมแรงแบบใหม่" ใน AlphaGo Zero คืออะไร?
ด้วยเหตุผลบางอย่าง AlphaGo Zero ไม่ได้รับการเผยแพร่มากเท่ากับ AlphaGo ดั้งเดิมแม้ว่าจะได้ผลลัพธ์ที่น่าเหลือเชื่อ เริ่มต้นจากศูนย์แล้วมันก็เอาชนะ AlphaGo Master ได้และผ่านเกณฑ์มาตรฐานอื่น ๆ อีกมากมาย ยิ่งไปกว่านั้นมันทำอย่างนี้ใน 40 วัน ชื่อของ Google เป็น"เนื้อหาที่ผู้เล่นไปที่ดีที่สุดในโลก" DeepMind อ้างว่านี่เป็น "รูปแบบใหม่ของการเรียนรู้การเสริมแรง" - นี่เป็นเทคนิคที่แปลกใหม่จริงหรือ หรือมีเวลาอื่นเมื่อใช้เทคนิคนี้ - และถ้าเป็นเช่นนั้นผลลัพธ์ของพวกเขาคืออะไร ฉันคิดว่าข้อกำหนดที่ฉันพูดถึงคือ 1) ไม่มีการแทรกแซงของมนุษย์และ 2) ไม่มีการเล่นเชิงประวัติศาสตร์ แต่สิ่งเหล่านี้มีความยืดหยุ่น สิ่งนี้ดูเหมือนจะเป็นคำถามที่คล้ายกัน แต่คำตอบทั้งหมดดูเหมือนจะเริ่มจากสมมติฐานที่ว่า AlphaGo Zero เป็นคำถามแรก

2
ทำไมการฝึกอบรมใช้เวลานานมากกับ GPU ของฉัน
รายละเอียด: GPU : GTX 1080 การฝึกอบรม : ~ 1.1 ล้านภาพเป็นของ 10 คลาส การตรวจสอบความถูกต้อง : ~ 150 ภาพที่เป็นของ 10 คลาส เวลาต่อยุค : ~ 10 ชั่วโมง ฉันตั้งค่า CUDA, cuDNN และ Tensorflow (Tensorflow GPU ด้วย) ฉันไม่คิดว่าแบบจำลองของฉันมีความซับซ้อนซึ่งใช้เวลา 10 ชั่วโมงต่อยุค ฉันยังตรวจสอบว่า GPU ของฉันเป็นปัญหาหรือไม่ เป็นเวลาการฝึกอบรมเนื่องจากเลเยอร์ที่เชื่อมต่อเต็มที่หรือไม่ โมเดลของฉัน: model = Sequential() model.add() model.add(Conv2D(64, (3, 3), padding="same", strides=2)) model.add(Activation('relu')) …

2
พยายามใช้ TensorFlow เพื่อทำนายข้อมูลอนุกรมเวลาทางการเงิน
ฉันใหม่สำหรับ ML และ TensorFlow (ฉันเริ่มประมาณสองสามชั่วโมงที่ผ่านมา) และฉันพยายามใช้เพื่อทำนายจุดข้อมูลสองสามอันถัดไปในอนุกรมเวลา ฉันรับข้อมูลของฉันและทำสิ่งนี้กับมัน: /----------- x ------------\ .-------------------------------. | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | '-------------------------------' \----------- y ------------/ สิ่งที่ฉันคิดว่าฉันกำลังทำคือการใช้xเป็นข้อมูลอินพุตและyเป็นผลลัพธ์ที่ต้องการสำหรับอินพุตนั้นเพื่อให้ 0-6 ฉันจะได้รับ 1-7 (โดยเฉพาะ 7) แต่เมื่อผมทำงานกราฟของฉันกับxเป็น input ในสิ่งที่ฉันได้รับคือการทำนายที่มีลักษณะเหมือนxกว่าปี นี่คือรหัส (ตามโพสต์นี้และโพสต์นี้ ): import tensorflow as tf import numpy …

3
โมเดล Recurrent (CNN) บนข้อมูล EEG
ฉันสงสัยว่าจะตีความสถาปัตยกรรมที่เกิดขึ้นซ้ำในบริบท EEG ได้อย่างไร โดยเฉพาะฉันคิดว่านี่เป็น CNN กำเริบ (ตรงข้ามกับสถาปัตยกรรมเช่น LSTM) แต่บางทีมันอาจใช้กับเครือข่ายกำเริบประเภทอื่นเช่นกัน เมื่อฉันอ่านเกี่ยวกับ R-CNNs พวกเขามักจะอธิบายในบริบทการจำแนกภาพ พวกเขามักจะอธิบายว่า "การเรียนรู้เมื่อเวลาผ่านไป" หรือ "รวมถึงผลกระทบของเวลา -1 ในอินพุตปัจจุบัน" การตีความ / คำอธิบายนี้ทำให้เกิดความสับสนเมื่อทำงานกับข้อมูล EEG ตัวอย่างของ R-CNN ที่ใช้กับข้อมูล EEG สามารถดูได้ที่นี่ ลองนึกภาพฉันมีตัวอย่างการฝึกอบรมแต่ละชุดประกอบด้วยอาร์เรย์ 1x512 อาร์เรย์นี้จับการอ่านค่าแรงดันไฟฟ้าสำหรับอิเล็กโทรด 1 ตัวที่จุดเวลาต่อเนื่องกัน 512 จุด ถ้าฉันใช้สิ่งนี้เป็นอินพุตไปยัง CNN ที่เกิดขึ้นอีก (โดยใช้การโน้มน้าวใจ 1D) ส่วนที่เกิดขึ้นอีกของโมเดลไม่ได้จับ "เวลา" จริงไหม (ตามที่ระบุไว้โดยนัยโดยคำอธิบาย / คำอธิบายที่กล่าวถึงก่อนหน้านี้) เพราะในบริบทนี้เวลาจะถูกจับโดยมิติที่สองของอาร์เรย์ ดังนั้นเมื่อมีการตั้งค่าเช่นนี้ส่วนที่เกิดขึ้นอีกของเครือข่ายจะอนุญาตให้เราสร้างแบบจำลองที่ซีเอ็นเอ็นปกติไม่สามารถทำได้ (ถ้าไม่ใช่เวลา) สำหรับฉันแล้วดูเหมือนว่าการกำเริบหมายถึงการทำข้อตกลงการเพิ่มผลลัพธ์ลงในอินพุตต้นฉบับและการโน้มน้าวอีกครั้ง สิ่งนี้ได้รับการทำซ้ำสำหรับ …

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

3
เครือข่ายเซลล์ประสาทเทียม (ANN) ที่มีอินพุตและเอาต์พุตจำนวนเท่าใดก็ได้
ฉันต้องการใช้ ANN สำหรับปัญหาของฉัน แต่ปัญหาคืออินพุตและเอาต์พุตหมายเลขโหนดของฉันไม่ได้รับการแก้ไข ฉันทำการค้นหาด้วยกูเกิลก่อนถามคำถามของฉันและพบว่า RNN อาจช่วยฉันแก้ปัญหาได้ แต่ตัวอย่างทั้งหมดที่ฉันได้พบมีจำนวนกำหนดโหนดเข้าและออก ดังนั้นฉันกำลังมองหากลยุทธ์วิธีทำให้เป็นจริงหรืออย่างน้อยตัวอย่างเป็นที่นิยมใน Keras หรือ PyTorch รายละเอียดเพิ่มเติมเกี่ยวกับปัญหาของฉัน: ฉันมีสองรายการอินพุตซึ่งความยาวของรายการแรกได้รับการแก้ไขและเท่ากับสอง fe: in_1 = [2,2] แต่ความยาวของรายการที่สองมีความยืดหยุ่นความยาวได้จากสามถึง inf, fe: in_2 = [1,1,2,2] หรือ in_2 = [1,1,1,2,2,2,3,3,3] นอกจากนี้รายการอินพุตยังต้องพึ่งพาซึ่งกันและกัน รายการแรกแสดงมิติของรายการเอาท์พุท ดังนั้นถ้า in_1 = [2,2] หมายถึงผลลัพธ์ที่จะต้องมีความเป็นไปได้ที่จะก่อร่างใหม่ในรูปแบบ [2,2] ขณะนี้ฉันกำลังคิดที่จะรวมสองรายการอินพุตเป็นหนึ่ง: in = in_1 + in_2 = [2, 2, 1, 1, 2, 2] นอกจากนี้เอาต์พุตมีความยาวเท่ากับรายการin_2 …

4
จะเปรียบเทียบประสิทธิภาพของวิธีการเลือกคุณสมบัติได้อย่างไร
มีวิธีการเลือกคุณสมบัติ / วิธีเลือกตัวแปรหลายวิธี (ดูตัวอย่างGuyon & Elisseeff, 2003 ; Liu et al., 2010 ): วิธีการกรอง (เช่นความสัมพันธ์, อิงตามเอนโทรปี, อิงตามความสำคัญของป่าแบบสุ่ม), วิธีการ wrapper (เช่นการค้นหาไปข้างหน้าการค้นหาการปีนเขา) และ วิธีการฝังตัวที่การเลือกคุณสมบัติเป็นส่วนหนึ่งของการเรียนรู้รูปแบบ อัลกอริทึมที่เผยแพร่จำนวนมากถูกนำไปใช้ในเครื่องมือการเรียนรู้ของเครื่องเช่น R, Python และอื่น ๆ อะไรจะเป็นวิธีที่เหมาะสมในการเปรียบเทียบอัลกอริธึมการเลือกคุณลักษณะที่แตกต่างกันและเพื่อเลือกวิธีที่ดีที่สุดสำหรับปัญหา / ชุดข้อมูลที่กำหนด จะมีคำถามเพิ่มเติมอีกหรือไม่ว่ามีตัวชี้วัดใดบ้างที่ทราบประสิทธิภาพของอัลกอริธึมการเลือกคุณลักษณะหรือไม่

1
DropOut ทำงานกับเลเยอร์ convolutional ได้อย่างไร
ดรอปเอาท์( กระดาษคำอธิบาย ) ตั้งค่าเอาต์พุตของเซลล์ประสาทบางตัวให้เป็นศูนย์ ดังนั้นสำหรับ MLP คุณอาจมีสถาปัตยกรรมต่อไปนี้สำหรับชุดข้อมูล Iris flower : 4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax) มันจะทำงานเช่นนี้: s o fทีเอ็มx ( W3⋅ tanh( ว2⋅ mask ( D , tanh)( ว1⋅ ฉันn พียูที_ วีอีคT o R ) ) )sโอฉเสื้อม.ax(W3⋅tanh⁡(W2⋅หน้ากาก(D,tanh⁡(W1⋅ผมnพียูเสื้อ_โวลต์อีคเสื้อโอR)))softmax(W_3 \cdot \tanh(W_2 \cdot \text{mask}(D, \tanh(W_1 …
10 dropout 

1
Spark ALS: แนะนำสำหรับผู้ใช้ใหม่
คำถาม ฉันจะทำนายอันดับสำหรับผู้ใช้ใหม่ในรุ่น ALS ที่ผ่านการฝึกอบรมใน Spark ได้อย่างไร (ใหม่ = ไม่เห็นในช่วงเวลาการฝึกอบรม) ปัญหา ฉันกำลังติดตามกวดวิชา Spark ALS อย่างเป็นทางการที่นี่: http://ampcamp.berkeley.edu/big-data-mini-course/movie-recommendation-with-mllib.html ฉันสามารถสร้างผู้แนะนำที่ดีด้วย MSE ที่เหมาะสม แต่ฉันกำลังดิ้นรนกับวิธีการป้อนข้อมูลใหม่ให้กับโมเดล บทช่วยสอนจะเปลี่ยนการให้คะแนนของผู้ใช้คนแรกก่อนการฝึกอบรม แต่นี่เป็นการแฮ็คจริงๆ พวกเขาให้คำแนะนำต่อไปนี้: 9.2 ปัจจัยเมทริกซ์การขยาย: ในบทช่วยสอนนี้เราเพิ่มคะแนนของคุณในชุดการฝึกอบรม วิธีที่ดีกว่าในการรับคำแนะนำสำหรับคุณคือการฝึกอบรมแบบจำลองการแยกตัวประกอบเมทริกซ์ก่อนจากนั้นจึงขยายแบบจำลองโดยใช้การจัดอันดับของคุณ หากสิ่งนี้ฟังดูน่าสนใจสำหรับคุณคุณสามารถดูการใช้งาน MatrixFactorizationModel และดูวิธีการอัพเดตโมเดลสำหรับผู้ใช้ใหม่และภาพยนตร์ใหม่ การใช้งานไม่ได้ช่วยฉันเลย เป็นการดีที่ฉันกำลังมองหาสิ่งที่ชอบ: predictions = model.predictAllNew(newinput) แต่ไม่มีวิธีการดังกล่าวอยู่ ฉันสามารถไปและดัดแปลง RDD ดั้งเดิมได้ แต่ฉันคิดว่านั่นจะทำให้ฉันต้องสั่งสอนแบบจำลองใหม่ แน่นอนว่าต้องมีวิธีที่สวยงามกว่านี้อีกไหม? ตอนนี้ฉันอยู่ไหน: ฉันคิดว่าฉันต้องหาตัวแทนแฝงของเวกเตอร์ใหม่ ตามกระดาษต้นฉบับเราสามารถคำนวณได้ดังนี้: Xยู= ( YTคยูY+ λ ฉัน)- 1YTคยูp ( …

4
การเลือกคุณสมบัติและความแม่นยำในการจำแนกประเภท
หนึ่งในวิธีการในการเลือกชุดย่อยของคุณสมบัติที่มีอยู่สำหรับตัวจําแนกของคุณคือการจัดอันดับตามเกณฑ์ (เช่นการรับข้อมูล) แล้วคำนวณความถูกต้องโดยใช้ตัวจําแนกและชุดย่อยของคุณลักษณะที่จัดอันดับ ตัวอย่างเช่นหากคุณลักษณะของคุณคือA, B, C, D, Eและหากมีการจัดอันดับดังต่อไปD,B,C,E,Aนี้คุณจะคำนวณความถูกต้องโดยใช้DจากD, Bนั้นD, B, Cจากนั้นจึงD, B, C, E... ... จนกว่าความแม่นยำของคุณจะเริ่มลดลง เมื่อมันเริ่มลดลงคุณจะหยุดเพิ่มคุณสมบัติ ในตัวอย่างที่ 1 (ด้านบน) คุณจะต้องเลือกคุณสมบัติF, C, D, Aและวางคุณสมบัติอื่น ๆ เพื่อลดความแม่นยำของคุณ วิธีการดังกล่าวถือว่าการเพิ่มคุณสมบัติเพิ่มเติมให้กับโมเดลของคุณเพิ่มความแม่นยำของลักษณนามของคุณจนกว่าจะถึงจุดหนึ่งหลังจากนั้นการเพิ่มคุณสมบัติเพิ่มเติมจะช่วยลดความแม่นยำ (ดังที่เห็นในตัวอย่างที่ 1) อย่างไรก็ตามสถานการณ์ของฉันแตกต่างกัน ฉันใช้วิธีการที่อธิบายไว้ข้างต้นและพบว่าการเพิ่มคุณสมบัติอื่น ๆ ลดความแม่นยำจนถึงจุดหนึ่งหลังจากนั้นจะเพิ่มขึ้น ในสถานการณ์เช่นนี้คุณจะเลือกคุณสมบัติของคุณได้อย่างไร คุณเลือกFและวางที่เหลือเท่านั้น? คุณมีความคิดว่าทำไมความแม่นยำจะลดลงและเพิ่มขึ้น?

1
การรวมตัวแบบใน Keras มีความสำคัญอย่างไร
ฉันได้เรียนรู้ว่า Keras มีฟังก์ชั่น "ผสาน" สองรุ่นตามต่อไปนี้: from keras.layers import Merge left_branch = Sequential() left_branch.add(Dense(32, input_dim=784)) right_branch = Sequential() right_branch.add(Dense(32, input_dim=784)) merged = Merge([left_branch, right_branch], mode='concat') ประเด็นในการผสาน NN คืออะไร, สถานการณ์ใดมีประโยชน์? มันเป็นแบบจำลองวงดนตรีหรือไม่? อะไรคือความแตกต่างระหว่าง "โหมด" (concat, avg, dot ฯลฯ ... ) ในแง่ของประสิทธิภาพ?
10 keras 

4
แสดงรายการที่ซื้อบ่อยด้วยกัน
ฉันมีชุดข้อมูลในโครงสร้างต่อไปนี้แทรกอยู่ในไฟล์ CSV: Banana Water Rice Rice Water Bread Banana Juice แต่ละแถวบ่งชี้ชุดของรายการที่ซื้อด้วยกัน ตัวอย่างเช่นแถวแรกหมายถึงว่ารายการBanana, WaterและRiceกำลังซื้อด้วยกัน ฉันต้องการสร้างภาพข้อมูลดังนี้: นี่เป็นแผนภูมิกริดโดยทั่วไป แต่ฉันต้องการเครื่องมือบางอย่าง (อาจเป็น Python หรือ R) ที่สามารถอ่านโครงสร้างอินพุตและสร้างแผนภูมิเช่นด้านบนเป็นเอาต์พุต

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

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