利用Mahout實如今Hadoop上運行K-Means算法

K-Means算法是基於分劃分的最基本的聚類算法,是學習機器學習、數據挖掘等技術的最基本的 知識,因此掌握其運行原理是很重要的。 git

    轉載請註明出處: http://hanlaiming.freetzi.com/?p=144 github

    1、介紹Mahout

    Mahout是Apache下的開源機器學習軟件包,目前實現的機器學習算法主要包含有協同過濾/推薦引擎聚類分類三個部分。Mahout從設計開始就旨在創建可擴展的機器學習軟件包,用於處理大數據機器學習的問題,當你正在研究的數據量大到不能在一臺機器上運行時,就能夠選擇使用Mahout,讓你的數據在Hadoop集羣的進行分析。Mahout某些部分的實現直接建立在Hadoop之上,這就使得其具備進行大數據處理的能力,也是Mahout最大的優點所在。相比較於WekaRapidMiner等圖形化的機器學習軟件,Mahout只提供機器學習的程序包(library),不提供用戶圖形界面,而且Mahout並不包含全部的機器學習算法實現,這一點能夠算得上是她的一個劣勢,但前面提到過Mahout並非「又一個機器學習軟件」,而是要成爲一個「可擴展的用於處理大數據的機器學習軟件」,可是我相信會有愈來愈多的機器學習算法會在Mahout上面實現。[1] 算法

    2、介紹K-Means

    https://cwiki.apache.org/confluence/display/MAHOUT/K-Means+Clustering#,這是Apache官網上的算法描述,簡單來講就是基於劃分的聚類算法,把n個對象分爲k個簇,以使簇內具備較高的類似度。類似度的計算根據一個簇中對象的平均值來進行。[2] apache

    3、在Hadoop上實現運行

    1,實驗環境

        ①hadoop集羣環境:1.2.1 一個Master,兩個Slaves,在開始運行kmeans時啓動hadoop ubuntu

        ②操做系統:全部機器的系統均爲ubuntu12.04 api

        ③Mahout版本:採用的是0.5版 bash

    2,數據準備

        數據採用的是http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data,這是網上提供的一個比較不錯是數據源。而後用指令 hadoop fs -put /home/hadoop/Desktop/data testdata,將在我桌面的文件data上傳到HDFS的testdata目錄下,這裏爲何是testdata,我也正在思考,由於我原本是上傳到input裏,可是運行時提示could not find ....user/testdata之類的,因此現改成了testdata。 機器學習

    3,運行

        ①配置Mahout環境:在Apache官網下載Mahout的版本,我選擇的是0.5,下載地址:https://cwiki.apache.org/confluence/display/MAHOUT/Downloads。而後解壓到你指定的目錄,將此目錄路徑寫入/etc/profile,添加以下語句: 工具

  • export MAHOUT_HOME=/home/hadoop/hadoop-1.2.1/mahout-distribution-0.5
  • export HADOOP_CONF_DIR=/home/hadoop/hadoop-1.2.1/conf
  • export PATH=$PATH:/home/hadoop/hadoop-1.2.1/bin:$MAHOUT_HOME/bin

而後執行 source /etc/profile。在mahout目錄下執行bin/mahout命令,檢測系統是否安裝成功。如圖: oop

注:此處修改環境變量有些網上提示是/etc/bash.bashrc,我也試着修改過,可是發如今我這裏使環境變量生效的是profile。

        ②運行Mahout裏自帶的K-Means算法,bin/mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job,這裏啓動後遇到了一點問題,提示Could not find math.vector,後來參考這篇http://jerrylead.iteye.com/blog/1188929日誌解決。

    4,結果

       在個人環境下運行5分鐘左右,最後生成一個文件,如圖

    4、總結

        Mahout是一個很強大的數據挖掘工具,須要進行更深層的瞭解。

    5、參考文獻

        [1].Mahout與聚類分析    http://yoyzhou.github.io/blog/2013/05/26/clustering-with-mahout/
相關文章
相關標籤/搜索