Nikmati pembelajaran mesin dengan Mahout di Hadoop

"Mahout" adalah istilah Hindi untuk orang yang menunggang gajah. Gajah, dalam hal ini, adalah Hadoop - dan Mahout adalah salah satu daripada banyak projek yang boleh berada di atas Hadoop, walaupun anda tidak selalu memerlukan MapReduce untuk menjalankannya.

Mahout meletakkan alat matematik yang kuat di tangan pemaju yang hanya menulis Interweb. Ini adalah pakej pelaksanaan algoritma pembelajaran mesin yang paling popular dan penting, dengan sebilangan besar pelaksanaan yang dirancang khusus untuk menggunakan Hadoop untuk memungkinkan pemprosesan set data yang besar. Beberapa algoritma hanya tersedia dalam bentuk "bersiri" yang tidak dapat ditandingi kerana sifat algoritma, tetapi semua dapat memanfaatkan HDFS untuk kemudahan mengakses data dalam saluran pemprosesan Hadoop anda.

[Ketahui sekarang tentang Hadoop | Bekerja lebih bijak, bukan lebih sukar - muat turun Panduan Survival Pembangun untuk semua petua dan trend yang perlu diketahui oleh pengaturcara. | Cari yang baru dalam aplikasi perniagaan dengan Teknologi: Buletin Aplikasi. ]

Pembelajaran mesin mungkin merupakan subset kecerdasan buatan (AI) yang paling praktikal, dengan fokus pada teknik pembelajaran probabilistik dan statistik. Untuk semua geek AI anda, berikut adalah beberapa algoritma pembelajaran mesin yang disertakan dengan Mahout: pengelompokan K-berarti, pengelompokan K-bermaksud kabur, K-berarti, peruntukan Dirichlet laten, penguraian nilai tunggal, regresi logistik, Bayes naif, dan rawak hutan. Mahout juga menampilkan abstraksi tingkat tinggi untuk menghasilkan "cadangan" (laman e-dagang atau rangkaian sosial yang popular)

Saya tahu, ketika seseorang mula bercakap pekali pembelajaran mesin, AI, dan Tanimoto, anda mungkin membuat popcorn dan merangsang, bukan? Saya juga tidak. Anehnya, walaupun rumit dalam matematik, Mahout mempunyai API yang mudah digunakan. Inilah rasa:

//load our datafile somehow

DataModel model = new FileDataModel(new File("data.txt"));

ItemSimilarity sim = new LogLikelihoodSimilarity(model);

GenericItemBasedRecommender r = new GenericItemBasedRecommender(model, sim);

LongPrimitiveIterator items = dm.getItemIDs();

while(items.hasNext()) {

long itemId = items.nextLong();

List recommendations = r.mostSimilarItems(itemId, 10);

//do something with these recommendations

}

Apa yang akan dilakukan oleh pemotongan kecil ini ialah memuatkan fail data, mengutuk item, kemudian dapatkan 10 item yang disyorkan berdasarkan kesamaannya. Ini adalah tugas e-dagang yang biasa. Namun, hanya kerana dua item serupa, saya tidak mahu kedua-duanya sama. Sebenarnya, dalam banyak kes saya mungkin tidak mahu membeli dua barang serupa. Maksud saya, saya baru-baru ini membeli basikal - saya tidak mahu barang yang paling serupa, yang akan menjadi basikal lain. Namun, pengguna lain yang membeli basikal juga membeli pam tayar, jadi Mahout juga menawarkan pengesyor berasaskan pengguna.

Kedua-dua contoh tersebut adalah pengesyorkan yang sangat sederhana, dan Mahout menawarkan pengesyor yang lebih maju yang mengambil lebih daripada beberapa faktor dan dapat mengimbangkan selera pengguna dengan ciri produk. Tidak ada yang memerlukan pengkomputeran terdistribusi maju, tetapi Mahout mempunyai algoritma lain yang sesuai.

Di luar cadangan

Mahout jauh lebih daripada API e-dagang mewah. Sebenarnya, algoritma lain membuat ramalan, klasifikasi (seperti model Markov yang tersembunyi yang menggerakkan sebahagian besar pengucapan pertuturan dan bahasa di Internet). Ia bahkan dapat membantu anda mencari kumpulan atau, lebih tepatnya, mengumpulkan kumpulan, seperti sel ... orang atau sesuatu sehingga anda dapat menghantarnya .... bakul hadiah ke satu alamat.

Sudah tentu, syaitan ada dalam perinciannya dan saya telah membaca bahagian yang sangat penting, yang merupakan baris pertama:

DataModel model = new FileDataModel(new File("data.txt"));

Hei, jika anda dapat membuat beberapa ahli matematik untuk melakukan semua kerja dan mengurangkan semua pengkomputeran hingga ke garis 10 atau lebih yang membentuk algoritma, kita semua akan kehilangan pekerjaan. Namun, bagaimana data tersebut masuk dalam format yang kami perlukan untuk cadangan tersebut? Mampu merancang pelaksanaan algoritma itu adalah mengapa pembangun menghasilkan banyak keuntungan, dan walaupun Mahout tidak memerlukan Hadoop untuk melaksanakan banyak algoritma pembelajaran mesinnya, anda mungkin memerlukan Hadoop untuk memasukkan data ke dalam tiga lajur dengan mudah pengesyorkan diperlukan.

Mahout adalah kaedah terbaik untuk memanfaatkan sejumlah ciri dari mesin cadangan hingga pengecaman corak hingga perlombongan data. Setelah kita sebagai industri selesai dengan penggunaan Hadoop yang besar dan gemuk, minat dalam pembelajaran mesin dan kemungkinan AI secara umum akan meletup, seperti yang diperhatikan oleh seorang pengulas yang berwawasan terhadap artikel Hadoop saya. Mahout akan berada di sana untuk membantu.

Artikel ini, "Nikmati pembelajaran mesin dengan Mahout di Hadoop," awalnya diterbitkan di .com. Ikuti terus berita terkini dalam pengembangan aplikasi dan baca lebih banyak blog Andrew Oliver's Strategic Developer di .com. Untuk berita teknologi perniagaan terkini, ikuti .com di Twitter.