1 概念
2 安裝
3 RDD
RDD包含兩種基本的類型:Transformation和Action。RDD的執行是延遲執行,只有Action算子才會觸發任務的執行。
寬依賴和窄依賴用於切分任務,如果都是窄依賴,那么就可以最大化的利用並行。
常用操作:
- cache 緩存
- cartesian 笛卡爾積
- coalesce 重分區
- countByValue 分組統計
- distinct 去除重復
- filter 過濾
- flatMap
- map
- groupBy 分組
- keyBy 增加key
- reduce 拼接
- sortBy 排序
- zip 合並壓縮
4 基本概念
基本的數據結構
MLlib中提供幾種向量和矩陣的數據結構:
- Local vector,本地向量
- Labeld point,帶標簽的向量
- Local Matrix,本地矩陣
- Distributed matrix,分布式矩陣
一般向量或者矩陣都有兩個方法,dense表示密集版,sparse表示稀疏版,稀疏版是可以指定下標的。
基本的統計方法
- colStats 以列統計基本數據,count個數、max最大值、mean最小值、normL1歐幾里德距離、normL2曼哈頓距離、numNonzeros不為0的個數、variance標准差
- chiSqTest 皮爾遜距離計算,
Statistics.corr(rddx,rddy,"spearman")
- corr 數據集相關系數計算,
Statistics.corr(rddx,rddy)
- 分層抽樣
data.sampleByKey(withReplacement=false,fractions,0)
- 假設檢驗
自由度、統計量、P值、卡方檢驗
- 隨機數
RandomRDDs.normalRDD(sc,100)
5 協同過濾
協同過濾可以基於人也可以基於物品,不足之處在於:
- 基於人會對熱點物品不夠精確
- 基於物品,但是沒有什么多樣性
相似度度量
- 基於歐幾里德距離的計算
- 基於夾角余弦的相似度計算
他們的區別:
- 歐幾里德注重空間上的差異
- 夾角余弦注重趨勢
最小二乘法
最小二乘,就是基於均方誤差尋找最佳匹配函數的過程。在矩陣中就是把大矩陣拆分成連個小矩陣的計算。
實踐
new ALS()
rank 隱藏的因子數
iterations 迭代次數
lambda 正則項參數
implicitPref 顯示反饋還是隱式反饋
alpha 擬合修正的幅度
6 線性回歸
梯度下降
道士下山的例子,以及隨機梯度下降中 θ=θ-α*J'(θ)
公式的原理。
正則項
避免過擬合,可以使用正則項——lasso回歸(L1)和嶺回歸(L2)。關於嶺回歸可以參考下面兩篇:
- http://baike.baidu.com/link?url=Z51DHIIFnkdsYyx13q7qk24hB_-XUqW3e7IdHsz4gZbjbNx718tzMxVfWibdZOG7Y0Aa4HOZdqhsHDA1rEbW9z-8iNYAb4ykjU6kyhNakSoHQ9Yjk7EyAJnidhE3B_Gx
- http://www.ics.uci.edu/~welling/teaching/KernelsICS273B/Kernel-Ridge.pdf
7 分類
分類算法,包括 邏輯回歸、支持向量機SVM、貝葉斯等。
邏輯回歸
跟線性回歸差不多,多了一個sigmoid函數,輸出的內容也稍有變化。
另外,對於損失函數的推導也不同了,這里需要最大似然估計的知識!
基本的流程就是,確定1或者0的概率,然后推導出極大似然公式,然后取對數,求導...最終基於梯度下降,優化參數。
由於忘記最大似然估計,所以這里真是理解不上去.
支持向量機
求解的是划分邊界的最優解,他的名字聽起來像一種很高級的機器人,其實跟邏輯回歸差不多,就是選取一條最優的線把數據分作兩類。
這里有疑問的可以參考——邏輯回歸和SVM的區別是什么?各適合解決什么問題?
https://www.zhihu.com/question/24904422?sort=created
暫時不知道它的損失函數是怎么算出來的...慢慢研究吧
朴素貝葉斯
明明就是計算概率,非叫這么高大上的名字。