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 dari banyak proyek yang dapat berada di atas Hadoop, meskipun Anda tidak selalu membutuhkan MapReduce untuk menjalankannya.

Mahout memberikan alat matematika yang hebat ke tangan para pengembang fana yang menulis InterWebs. Ini adalah paket penerapan algoritme pembelajaran mesin yang paling populer dan penting, dengan sebagian besar penerapan yang dirancang khusus untuk menggunakan Hadoop guna memungkinkan pemrosesan kumpulan data besar yang dapat diskalakan. Beberapa algoritme hanya tersedia dalam bentuk "serial" yang tidak dapat diparalelkan karena sifat algoritme, tetapi semuanya dapat memanfaatkan HDFS untuk memudahkan akses ke data di pipeline pemrosesan Hadoop Anda.

[Ketahui ini sekarang tentang Hadoop | Bekerja lebih cerdas, bukan lebih keras - unduh Panduan Bertahan Hidup Pengembang untuk mengetahui semua tip dan tren yang perlu diketahui pemrogram. | Temukan apa yang baru dalam aplikasi bisnis dengan Teknologi: Buletin aplikasi. ]

Pembelajaran mesin mungkin merupakan bagian paling praktis dari kecerdasan buatan (AI), dengan fokus pada teknik pembelajaran probabilistik dan statistik. Untuk semua Anda ahli AI, berikut adalah beberapa algoritma pembelajaran mesin yang disertakan dengan Mahout: K-means clustering, fuzzy K-means clustering, K-means, alokasi Dirichlet laten, dekomposisi nilai singular, regresi logistik, naive Bayes, dan random hutan. Mahout juga menampilkan abstraksi tingkat tinggi untuk menghasilkan "rekomendasi" (à la situs e-niaga populer atau jejaring sosial).

Saya tahu, ketika seseorang mulai berbicara tentang pembelajaran mesin, AI, dan koefisien Tanimoto, Anda mungkin membuat popcorn dan bersemangat, bukan? Aku juga tidak. Anehnya, terlepas dari kerumitan matematikanya, Mahout memiliki API yang mudah digunakan. Berikut rasanya:

//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 dilakukan snip kecil ini adalah memuat file data, mengutuk item, lalu mendapatkan 10 item yang direkomendasikan berdasarkan kesamaannya. Ini adalah tugas e-niaga yang umum. Namun, hanya karena dua item serupa bukan berarti saya menginginkan keduanya. Nyatanya, dalam banyak kasus saya mungkin tidak ingin membeli dua barang serupa. Maksud saya, saya baru saja membeli sepeda - Saya tidak ingin barang yang paling mirip, yaitu sepeda lain. Namun, pengguna lain yang membeli sepeda juga membeli pompa ban, jadi Mahout juga menawarkan rekomendasi berbasis pengguna.

Kedua contoh tersebut merupakan pemberi rekomendasi yang sangat sederhana, dan Mahout menawarkan pemberi rekomendasi yang lebih canggih yang mempertimbangkan lebih dari beberapa faktor dan dapat menyeimbangkan selera pengguna terhadap fitur produk. Tak satu pun dari ini memerlukan komputasi terdistribusi tingkat lanjut, tetapi Mahout memiliki algoritme lain yang memerlukannya.

Di luar rekomendasi

Mahout lebih dari sekadar API e-niaga yang mewah. Faktanya, algoritme lain membuat prediksi, klasifikasi (seperti model Markov tersembunyi yang mendukung sebagian besar pengenalan ucapan dan bahasa di Internet). Ia bahkan dapat membantu Anda menemukan kelompok atau, lebih tepatnya, mengelompokkan hal-hal, seperti sel ... orang atau sesuatu sehingga Anda dapat mengirim mereka .... keranjang hadiah ke satu alamat.

Tentu saja, iblis ada dalam detailnya dan saya telah mengabaikan bagian yang sangat penting, yaitu baris pertama itu:

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

Hei, jika Anda bisa membuat beberapa ahli matematika melakukan semua pekerjaan dan mengurangi semua komputasi menjadi 10 atau lebih baris yang menyusun algoritme, kita semua akan kehilangan pekerjaan. Namun, bagaimana data tersebut mendapatkan format yang kami butuhkan untuk rekomendasi? Mampu merancang implementasi algoritme itu adalah alasan pengembang menghasilkan banyak uang, dan bahkan jika Mahout tidak membutuhkan Hadoop untuk menerapkan banyak algoritme pembelajaran mesinnya, Anda mungkin memerlukan Hadoop untuk memasukkan data ke dalam tiga kolom secara sederhana. pemberi rekomendasi diperlukan.

Mahout adalah cara terbaik untuk memanfaatkan sejumlah fitur dari mesin rekomendasi hingga pengenalan pola hingga penambangan data. Setelah kita sebagai sebuah industri selesai dengan penerapan Hadoop yang besar dan gemuk, minat dalam pembelajaran mesin dan mungkin AI secara umum akan meledak, seperti yang diamati oleh salah satu komentator berwawasan di artikel Hadoop saya. Mahout akan ada untuk membantu.

Artikel ini, "Nikmati pembelajaran mesin dengan Mahout di Hadoop", awalnya diterbitkan di .com. Ikuti terus berita terbaru dalam pengembangan aplikasi dan baca lebih lanjut blog Pengembang Strategis Andrew Oliver di .com. Untuk berita teknologi bisnis terbaru, ikuti .com di Twitter.