# Apache Mahout

Apache Mahout és un projecte de software de Apache Software Foundation que permet la creació gratuïta d’aplicacions de Machine learning a través de la implementació d’algoritmes d’aprenentatge computacional distribuïts i escalables. Mahout està desenvolupat amb llenguatge Java (llenguatge de programació) i implementat amb Apache Hadoop i el paradigma de programació MapReduce. El programa també inclou llibreries en Java pels algoritmes i operacions estadístiques i d’àlgebra lineal més habituals.

## Història

El programa va néixer el 2008 com a subprojecte de Apache Lucene, un altre projecte de The Apalache Software Foundation de codi obert dissenyat per a la implementació de tècniques de cerca web. Aquesta àrea està estretament lligada als algoritmes d’aprenentatge computacional, de manera que es va fer necessària la construcció d’una utilitat centrada en aquests processos. Conforme la Intel·ligència Artificial i l’Aprenentatge Automàtic van anar prenent importància, Mahout es va anar desvinculant de Lucene per convertir-se en la utilitat independent que és avui en dia; tot i que moltes de les tècniques encara es troben en fase de desenvolupament o fase experimental. Actualment, els temes principals i més madurs del projecte son el clustering, els motors de recomanació i la classificació.

## Aplicacions principals
### Motors de Recomanació

Els sistemes de recomanació són una de les eines d’aprenentatge computacional més utilitzades en l'actualitat, i les més conegudes pels usuaris d’internet. Es tracta d’algoritmes que permeten predir quins productes son de l’interès de cada usuari; intenten personalitzar al màxim el contingut mostrat a l’internauta utilitzant la gran quantitat d’informació que es pot recavar de l’usuari. Actualment, la gran majoria d’aplicacions i webs utilitzen aquests algoritmes per fer recomanacions de música o contingut audiovisual, per suggerir amistats o lectures, o per oferir productes i articles relacionats.

### Clustering

El clustering és una tècnica de Machine Learning que té per objectiu formar grups d’elements amb alguna característica en comú. El clustering té aplicacions en molts àmbits, però principalment en màrqueting, on s'utilitza en tasques de segmentació de mercat. També es fa servir en la identificació de patrons climàtics o sísmics i en l’agrupació de productes o espècies animals i vegetals. Alguns dels algoritmes per clustering que proporciona Mahout son K-means, Fuzzy K-Means, Dirichlet, Canopy, Mean-Shift o EigenCuts.

### Classificació

La classificació és un dels besants principals de l’aprenentatge computacional i es basa en l’assignació d’etiquetes a diferents elements donades algunes de les seves característiques. La classificació té aplicacions en molts àmbits, com per exemple en visió per computador, en la classificació de documents o en el reconeixement de veu o lletra escrita a mà. Naive Bayes, Arbre de decisió o regressió lineal són alguns dels algoritmes implementats per Mahout.

## Característiques
### Escalabilitat

L’objectiu principal de Mahout és facilitar la creació d’aplicacions d’aprenentatge computacional escalables. L'escalabilitat és la propietat que permet als programes ser el més ràpids i eficients possible aprofitant al màxim els recursos de hardware disponibles. Aquesta característica fa possible que una aplicació s'adapti als recursos dels quals disposa cada màquina i sistema operatiu, de manera que no és necessària la reprogramació dels algoritmes per fer ús de totes les prestacions del sistema.

### Distribució de processos

Mahout permet incrementar la velocitat dels algoritmes utilitzant acceleradors GPU i CPU, és a dir, paral·lelitzant l’execució del codi. El codi es pot processar utilitzant múltiples cores CPU o GPU, o amb cores GPU construïts sobre la llibreria ViennaCL, una llibreria en C++ implementada en OpenMP i OpenCL.

## Creadors i valors del projecte

Actualment, Mahout està mantingut per un equip de programadors voluntaris i sempre està obert a obtenir ajuda de contribuïdors anònims que ajudin, sobre tot, en la redacció de documentació. Els codis font de tot el projecte són públics i estan guardats en la pàgina oficial de la companya a GitHub.
Tal com s'explica a la pàgina web oficial del programa, Apache Mahout sempre ha tingut per objectiu permetre als desenvolupadors obtenir algoritmes d’aprenentatge computacional ràpids i escalables, de manera senzilla i gratuïta. A més a més, l’empresa es mostra a favor del moviment Open Source i col·labora en diferents programes de caràcter social. El projecte està col·labora amb Google Summer of Code, prestant mentoria als estudiants participants del programa.

## Referències

* ↑ «Apache Mahout». IBM. [Consulta: 23 desembre 2022].
* ↑ «Apache Mahout». Apache Mahout. [Consulta: 18 gener 2023].
* ↑ Owen, Sean Mahout in Action.
* ↑ «Aproximación pràctica a la ciendia de los datos y Big Data» (en castellà). [Consulta: 4 gener 2023].
* ↑ «Who Are We?». Apache Mahout. [Consulta: 23 desembre 2022].