原创 【Scala】object、class、trait的區別

現象: 打開idea,構建scala文件時,會出現object、class、trait三個選項,怎麼選?有什麼區別?在回顧之前寫的一些代碼時,模仿別的工程建設相應的文件,但不知所以然,今天來總結總結。 簡單點說:執行入口用object,

原创 【LeetCode】乘積最大子數組(動態規劃)

LeetCode152. 乘積最大子數組。 題目: 給你一個整數數組 nums ,請你找出數組中乘積最大的連續子數組(該子數組中至少包含一個數字),並返回該子數組所對應的乘積。 例子: 輸入: [2,3,-2,4] 輸出: 6 解釋:

原创 【LeetCode】楊輝三角

LeetCode118. 楊輝三角 題目描述: 給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。 例子: 輸入: 5 輸出: [ [1], [1,1], [1,2,1], [1,3,3

原创 【LeetCode】島嶼數量(DFS深度優先搜索)--島嶼最大面積(DFS)

LeetCode第200題孤島數量,題目地址。 題目描述: 給你一個由 '1'(陸地)和 '0'(水)組成的的二維網格,請你計算網格中島嶼的數量。 島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連接形成。 此外,你可以

原创 【Spark】計算兩個文件中每一行的相似度,並返回top10

背景: 在向量大火的行情下,不管是召回還是精排,user和item的相似度計算,必不可少;很多情況下,爲了節省線上加載計算的時間,會將user和item的向量,離線計算好,放到存儲系統中,線上使用的時候,直接通過KV的形式讀取。(沒有AB

原创 【LeetCode】最大子數組和(動態規劃、分治法)

LeetCode第53題地址。 題目描述: 給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 例子: 輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連

原创 【LeetCode】最長遞增子序列(動態規劃、二分查找)

LeetCode第300題題目地址。 題目描述: 給定一個無序的整數數組,找到其中最長上升子序列的長度。 例子: 輸入: [10,9,2,5,3,7,101,18] 輸出: 4 解釋: 最長的上升子序列是 [2,3,7,101],它的

原创 【LeetCode】零錢兌換(動態規劃、回溯法)

LeetCode第322題鏈接。 題目描述: 給定不同面額的硬幣 coins 和一個總金額 amount。編寫一個函數來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。 例子: 輸入: coin

原创 【矩陣分解七】論文閱讀MATRIX FACTORIZATION TECHNIQUES FOR RECOMMENDER SYSTEMS

總結:該論文將構造rating矩陣的多中種方式都講述了一遍。主要講ALS在優化參數時,優於SGD的方面,體現在對預測rui的組成部分的逼近。 introduction引言 推薦系統的基於兩個策略content filtering ,比如,

原创 【矩陣分解三】BiasSVD

改進點(跟Funk-SVD比): 一句話總結:在矩陣分解模型中,加入偏置(Bias)部分,也就是衡量商品和用戶自身的因素。原因:經過觀測,評分數據大部分都是和用戶或物品無關的因素產生的效果,即有很大一部分因素是和用戶對物品的喜好無關而只取

原创 【矩陣分解】優化方法-交替最小二乘ALS(Alternating Least Squares)

需要清楚,這裏的ALS是求解的方法,類似SGD,前面的SVD、Funk-SVD等方法,是構造了不同的損失函數。那麼損失函數怎麼求解得到參數解?ALS可以達到這一目的。 主要思想 在實際應用中,交替最小二乘更常用一些,這也是社交巨頭 Fac

原创 【矩陣分解二】FunkSVD

改進點(跟SVD比): 一句話總結改進點和優化點:改進SVD的計算效率問題、數據稀疏問題;將矩陣R分解爲兩個低維矩陣,通過重構的低維矩陣預測用戶對物品的評分,目標函數中加入正則,控制模型方差。 FunkSVD是在傳統SVD面臨計算效率問題

原创 【矩陣分解四】SVD++

改進點(跟Funk-SVD比): 一句話總結:SVD++算法在Bias-SVD算法上進一步做了增強,考慮用戶的隱式反饋。也就是在Pu上,添加用戶的偏好信息。 主要思想: 引入了隱式反饋和用戶屬性的信息,相當於引入了額外的信息源,這樣可以從

原创 【矩陣分解一】奇異值分解SVD(Singular Value Decomposition)

推薦場景下,矩陣分解方法:SVD、FunkSVD、BiasSVD、SVD++、ALS。 本篇內容主要介紹SVD,包含:EVD、SVD、SVD在推薦中的應用demo; 1.基於矩陣分解推薦算法的背景 矩陣分解模型在推薦系統中有非常不錯的表現

原创 【矩陣分解八】矩陣分解的優缺點及其高級演化

矩陣分解推薦算法的優點 矩陣分解結合了隱語義和機器學習的特性,能夠挖掘更深層的用戶和物品間的聯繫,因此預測的精度比較高,預測準確率要高於基於鄰域的協同過濾以及基於內容的推薦算法; 比較容易編程實現,隨機梯度下降法和交替最小二乘法均可訓練出