Ngôn ngữ lập trình nào bạn đề xuất để tạo nguyên mẫu cho một vấn đề máy học?


12

Hiện đang làm việc tại Octave, nhưng do tài liệu kém nên tiến độ rất chậm.

Ngôn ngữ nào dễ học và sử dụng, và được ghi chép tốt để giải quyết các vấn đề về máy học? Tôi đang tìm kiếm nguyên mẫu trên một tập dữ liệu nhỏ (hàng ngàn ví dụ), vì vậy tốc độ không quan trọng.

EDIT: Tôi đang phát triển một công cụ đề xuất. Vì vậy, tôi quan tâm đến việc sử dụng Hồi quy tuyến tính thường xuyên, Mạng lưới thần kinh, SVN hoặc Lọc cộng tác.


1
Tôi cũng đã từng bắt đầu với Octave, vì prof của tôi đã vào matlab (uuh điều này rất thú vị trong quá trình học sử dụng thư viện prof, vì matlab và octave không chính xác cùng một cú pháp), nhưng sau đó tôi đã chuyển sang R và bị thổi bay đi bởi tài liệu cao cấp và nhiều thư viện.
steffen

9
Python tất nhiên là rất dễ học và dễ đọc, vì vậy tôi đoán đó là vấn đề của hương vị. Tôi đề nghị các liên kết này: python-stat-workbench , what-lập trình-ngôn ngữ-cho-thống kê-suy luận , máy học-sử dụng-python , clojure
steffen

1
Tôi muốn giới thiệu R, Python hoặc Matlab. Vì lý do quá rộng để giải quyết, tôi bỏ Matlab. Đối với một người thống kê, tôi sẽ đi với R, đối với một lập trình viên, tôi sẽ đi với Python. Đối với các vòng lặp bên trong, tôi sẽ sử dụng C / C ++. Ở quy mô đủ, chi phí của Matlab vượt quá bất kỳ lợi ích nào.
Lặp lại

1
hoặc, hãy xem julia ...
kjetil b halvorsen 19/2/2016

Câu trả lời:


7

Nếu bạn muốn sử dụng một cái gì đó vượt trội, Weka có thể là một điểm khởi đầu tuyệt vời. Không cần phải lập trình bất cứ điều gì. Bạn nhập dữ liệu của mình, trực quan hóa nó và chơi xung quanh với các mô hình khác nhau.

Tiếp theo trong chuỗi sẽ là R. Có một số đường cong học tập liên quan - đặc biệt là việc trộn dữ liệu của bạn để phù hợp với cấu trúc dữ liệu R nhưng một khi bạn vượt qua điều đó, bạn có hàng tấn thư viện cung cấp tất cả các khả năng học máy mà không cần nỗ lực nhiều.

Tiếp theo sẽ là lập trình tay các thuật toán học máy. Vì bạn đã sử dụng Octave và tìm kiếm các lựa chọn thay thế, có thể điều bạn muốn không phải là trao các thuật toán mã trong một số hệ thống khác mà chỉ sử dụng các thư viện được viết bởi người khác.

Nếu bạn đi xuống đường dẫn R, bạn có thể thấy cuốn sách của Luis Torgo (Khai thác dữ liệu với R: Học với nghiên cứu trường hợp) rất hữu ích (tiết lộ: không liên kết). Nó mô tả trong các nghiên cứu trường hợp chuyên sâu mà bạn có thể thích ứng với vấn đề của mình.


15

Bạn có thể nhận được câu trả lời tốt hơn nếu bạn chỉ định các thuật toán cụ thể mà bạn quan tâm. Tôi sử dụng R cho loại điều này (tuy nhiên, tôi làm kinh tế lượng theo chuỗi thời gian, không phải học máy); bạn có thể thấy các chức năng hiện có ở đây:

http://cran.r-project.org/web/view/MachineLearning.html

và có mã R để thực hiện phân tích trong các yếu tố học tập thống kê của Hastie, Tibshirani và Friedman :

http://www-stat.stanford.edu/~tibs/ElemStatLearn/

Hệ thống đóng gói của R khá tuyệt vời và thúc đẩy mọi người hướng tới việc ghi lại mã của họ và đó là nguồn mở để bạn luôn có thể xem xét việc triển khai. Tôi đã không sử dụng Matlab trong một vài năm và đã không sử dụng nó cho nhiều máy học - các hộp công cụ của họ thường được ghi chép tốt nhưng có thể tốn kém, nhưng mã do người dùng đóng góp sẽ bị ghi chép kém như bất kỳ loại nào khác.


11

Trong khóa học trực tuyến về máy học của mình, Andrew Ng gợi ý sử dụng Octave / Matlab.

Tôi khuyên bạn nên đăng ký vào phiên bản tiếp theo của khóa học này: nó thực sự hữu ích và bạn sẽ học được nhiều điều về Octave và về các thuật toán học máy khác nhau.

EDIT 1 : Tôi đồng ý với những người khác thích làm việc ở R. Tuy nhiên, trong việc giải quyết các vấn đề về học máy, hầu hết các tính toán của bạn sẽ ở dạng ma trận và như được chỉ ra bởi các ngôn ngữ @Wayne, Matlab hoặc Octave rất phổ biến vì sức mạnh của họ Bạn có thể muốn xem xét các giải pháp cho các bài tập khóa học máy được đề xuất bởi các sinh viên khác; chắc chắn bạn có thể học được một số điều từ họ:

Github Github

Github Merwan


1
Tôi đang ghi danh vào phiên bản này của khóa học! Vấn đề là làm những việc đơn giản nhất ngoài khóa học không hiệu quả! Tài liệu là vô dụng.
B Bảy

3
Tôi phải nói rằng Matlab (do đó là Octave) là một ngôn ngữ lập trình khủng khiếp. Nó rất phổ biến trong các lĩnh vực kỹ thuật và máy học, nhưng đó là do sức mạnh của nó, và được sử dụng trong các trường học, không phải vì nó là ngôn ngữ lập trình hiện đại. Điều đó nói rằng, bạn sẽ có nhiều khả năng bắt gặp các văn bản học máy sử dụng nó hơn là bạn sẽ sử dụng R hoặc Python.
Wayne

1
Tôi làm tất cả công việc của mình trong MATLAB, nó không phải là ngôn ngữ lập trình tốt nhất trên thế giới (tôi nói R thậm chí còn tệ hơn; o), nhưng nó đáng để kiên trì vì nó rất tốt cho nghiên cứu máy học. Đối với các mạng thần kinh, hãy tìm thư viện NETLAB và cũng điều tra Quy trình Gaussian với thư viện GPML, cả hai đều là các bit tuyệt vời của bộ công cụ và IIRC đều hoạt động với quãng tám. Đối với hồi quy tuyến tính chính quy, nó chỉ là một dòng MATLAB, đối với các mô hình phi tuyến tính, có hộp công cụ GKM, theoval.cmp.uea.ac.uk/projects/gkm (xin lỗi chưa có mnual).
Dikran Marsupial

1
Tính toán ma trận cũng có thể được thực hiện trong R, mặc dù ký hiệu, ví dụ, t(A) %*% Bít trực quan hơn trong Matlab.
Itamar

1
Không có thư viện ma trận tốt cho mọi ngôn ngữ cấp cao như C #, Java, Python và Perl?
B Bảy

10

Các scikit-LEARN (bây giờ sklearn) phải đáp ứng một số tiêu chí bạn mô tả (tốc độ, các lớp học được thiết kế để xử lý dữ liệu, mô hình, và kết quả), bao gồm các ứng dụng nhắm mục tiêu (L1 / L2 phạt hồi quy, SVM, vv). Nó đi kèm với một bộ tài liệu phong phú và rất nhiều ví dụ . Xem thêm mô tả của nó trong một bài báo được xuất bản trong JMLR.

Một khung thay thế trong Python là Orange , có thể được sử dụng thông qua GUI nhẹ hoặc trực tiếp trên dòng lệnh. Để lọc cộng tác, pyrsvd có thể thú vị nhưng tôi chưa bao giờ thử. Tuy nhiên, Apache Mahout chắc chắn có thể được sử dụng để lọc cộng tác .


1

Nếu bạn đề cập đến một nguyên mẫu công nghiệp (nghĩa là thứ gì đó được thực hiện để sử dụng bởi người thật chứ không phải cho nghiên cứu thuần túy) thì trăn là cách duy nhất để đi.

Nếu bạn sử dụng Matlab, Octave hoặc R, bạn sẽ có một môi trường dễ sử dụng cho nghiên cứu ML nhưng sẽ là một cơn ác mộng khi đưa mô hình hoạt động với giao diện người dùng hoặc với dịch vụ web.

Trong python, chúng tôi may mắn có cả một hệ sinh thái khoa học rộng lớn ( sklearn cho ML, gấu trúc cho dữ liệu lộn xộn, matplotlib / seaborn để trực quan hóa) và một hệ sinh thái ứng dụng (nghĩ về django và khung nghỉ ngơi của nó ).

Python là một ngôn ngữ dễ học. Trong tương lai, tôi hy vọng hệ sinh thái Javascript sẽ trở nên khoa học như con trăn, nhưng mặc dù có một số dự án tuyệt vời tôi không thấy điều đó sẽ đến sớm.

Đừng bao bọc bản thân trong một cái hộp, hãy sử dụng ngôn ngữ chung!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.