pip install -r requirements.txt
python app.py --training training_data.csv --output submission.csv
- 台灣電力公司_過去電力供需資訊
- 改名為
training_data.csv
- 改名為
- 想要實作以下兩篇論文內容,應用在電力預測
- 實際情況
- 因為理解需要大量時間跟腦力,目前只做到使用 Alternating Optimization 做到用張量分解來「補值」,詳情參考下面「嘗試過程」,code 部分參考「test.ipynb」以及「MF.py」
- 只有先用簡單的例子來測試
- 對於完全沒有資訊的地方,傳統的矩陣分解會直接給出 trivial solution 也就是 0,所以不能拿來做預測(forcasting)
- 要做預測需要加上時間相關的 Regularization term,參考 TRMF-AR(Temporal Regularized Matrix Factorization for High-dimensional Time Series Prediction)
- 不過在實作的時候卡在一個點,來不及完成,所以這次的作業就先暫時用 Facebook 提供的 Prophet 模型完成,日後再來研究 TRMF 方法
- 如果想要討論這部分(TRMF)的 code 或是論文,歡迎在 Github issue 留言
- CP 分解因為特徵矩陣均不稀疏,所以就只能用 dense matrix 了
- 矩陣分解不穩定(就連 I 也都存在好幾種分解法)
- 矩陣分解沒有唯一性
- 不過可以看到 I 可以由 ATA 分解
- 不過能不能至少我的 feature 是正交的?
- 猜想:使用 SSD regularizer 會不會比較可以達到這點?
- 不同初始值影響極大
- 如果不是要求 SVD 那就可能不會轉換到那麼有特徵的空間了
- Funk-SVD 不是 SVD,而是用近似的矩陣,是用來補缺失值的(也就是說原來非零的部分可以不用動)
- 矩陣分解沒有唯一性
- 梯度下降非常容易收斂不了
- 因為是 non-convex
- 加上 regularization term
- penalty_weight 太高(1)效果不太好,但是小於 1e-2 效果不錯
- 但好像原本的(penalty_weight=0)比較好
- 在 I3x3 之下,1e-3
- 1e-4 以下沒作用
- 1 附近訓練最久,效果又是偏向 regularization term(四不像)
- 大於 1000 會 overflow
- 加了之後收斂會變慢,但是比較不會被困住
- penalty_weight 太高(1)效果不太好,但是小於 1e-2 效果不錯
- rank = min(X.shape) 要記得加在,不然就會是 low rank 的結果
- 補值的效果不好
- 因為忘記加遮罩(mask),加完後效果不錯
- ALS 加上遮罩之後要用加總有觀察到的東西來算
- 對於完全沒有資訊的地方,ALS 會直接給出 trivial solution 也就是 0,後面的東西也都會被洗掉
- ALS 比 SGD 稍慢!?
- 但迭代次數可以少十倍以上
- ALS
- GRALS
- Graph Regularized Alternating Least Squares
- 可以有不需要 vectorization 的計算方法
- TRMF
- 有點卡住,不太知道如何 Updating X,要如何和 GRALS 完全對應
- Matrix Factorization
- Matrix Factorization 矩陣分解
- [Paper] Wide & Deep Learning for Recommender Systems
- 以往認為deep learning有辦法完全取代feature engineering,Google在2016年寫下的這篇paper,指出在數據相對稀疏(sparse)的情況下feature engineering仍然有其重要性
- 或許可以融合 MF 和 DL 試試看
- 輕讀論文(二):DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
- 可以試試看,然後延伸到高階情況
- Accelerating Deep Neural Networks with Tensor Decompositions
- CNN 結合張量分解
- Autoregressive Tensor Factorization for Spatio-temporal Predictions
- ==超級無敵推!!!==
- 想要用這篇的方法做
- 可以針對不規律取樣的數據來做
- 看起來比下面的方法好
- LSTM 可能太複雜,運算效率不好
- 一種基於演化的新推薦系統
- 可以試試看,或延伸此方法(目前不推)
- MF + LSTM
- 基於RNN的序列化推薦系統總結
- Personalized LSTM Based Matrix Factorization for Online QoS Prediction
- 張量分解
- 矩陣分解
- Tensor Decompositions and Applications
- 很完整,各種運算、分解都有講到
- 有討論分解的唯一性(充分條件、必要條件)
- 有提供 ALS 演算法公式
- The ALS method is simple to understand and implement, but can take many iterations to converge. Moreover, it is not guaranteed to converge to a global minimum or even a stationary point of (3.7), only to a solution where the objective function of (3.7) ceases to decrease. The final solution can be heavily dependent on the starting guess as well.
- 裡面有提到其中之一的解決方式就是加上 Tikhonov regularization(ridge term)
- 特殊矩陣 (14):Gramian 矩陣
- ATA 本身就是半正定了,對角線大於等於零,所以對角線再一起加上一個 penalty 項就確定會變成正定,可以用 Cholesky 來解
- 浅谈张量分解(超級推)
- 张量分解浅谈(超級推)
- 张量学习
- 論文
- Autoregressive Tensor Factorization for Spatio-temporal Predictions
- ==超級無敵推!!!==
- 特徵分解
- 可以納入對於時間、空間的預測
- 可以針對不規律取樣的數據
- 自迴歸模型
- 向量自迴歸模型
- 高斯過程
- [11]:Temporal Regularized Matrix Factorization for High-dimensional Time Series Prediction
- 從這裡可以看到,原論文的 p.3 的 l2 norm term 應該要加上平方,寫錯了!
- p.4 It is not hard to see that the above optimization yields the trivial all-zero solution for w∗, meaning the objective function is minimized when no temporal dependencies exist!
- 這裡說到如果沒有好好設計權重,就會得出 trivial solution 也就是零,也就是說一般的 Matrix Factorization 完全沒有 forcasting 的功能,實驗的結果也是如此
- 论文笔记:Temporal Regularized Matrix Factorization forHigh-dimensional Time Series Prediction
- TRMF 辅助论文:最小二乘法复现TRMF
- [12]:Collaborative Filtering with Graph Information: Consistency and Scalable Methods
- GRALS(Graph Regularized Alternating Least Squares)演算法,適用於很多種狀況,其他論文也常用到
- [16]:Spatial Dependence in linear Regression Models with an Introduction to Spatial Econometrics
- p.19 講到 MLE 方法
- 第 (8) 式,應該為 uk(1)
- 方位是把 360 度分成 n 份
- Ep 是鄰域
- W 是 inverse distance between locations
- bk 可以用 Cholesky 解(gDAR 部分)
- gSAR 部分要用 MLE 解
- gDAR、gSAR 選一個用就好
- A Flexible and Efficient Algorithmic Framework for Constrained Matrix and Tensor Factorization
- AO-ADMM
- ==這篇 unfold 的方式跟其他篇不一樣,要注意!==
- 差一個 transpose,是以列為基準
- 跟 ALS 有差不多複雜度,ALS 又只是一特例,效果好
- 更泛化
- In many cases (5) is convex, but the uniqueness of the solution is very hard to guarantee.
- 用 block successive upper-bound minimization (BSUM) 來保證唯一收斂(加上 proximal regularization term)
- Cholesky 分解
- 對於對稱(Hermitian)、正定矩陣可用
- 常跟 (AAT + λI) 一起出現
- 對每一行
- 先根據前面幾行的對角線求現在對角線上的值
- 再推到這行上其他值
- An AO-ADMM approach to constraining PARAFAC2 on all modes
- Matrix Factorization Techniques for Recommender Systems
- 矩陣分解推薦系統開始紅的論文
- 可以加上 bias、 implicit feedback
- SGD 通常比 ALS 快,但是 ALS 比較可以平行處理、對付稀疏數據(implicit data)
- Netflix Update: Try This at Home
- Funk SVD 出處
- Improving performance of tensor-based context-aware recommenders using Bias Tensor Factorization with context feature auto-encoding
- 如何對張量元素的加上 bias
- Implicit Regularization in Tensor Factorization
- BPR: Bayesian Personalized Ranking from Implicit Feedback
- BPR 與推薦系統排名
- 用個人的對商品的評價來排名使用者會喜歡的商品
- 可以讓結合不同模型使其在排名上表現得更好
- BPR 與推薦系統排名
- Orthogonal Matrix Regularizer
- Can We Gain More from Orthogonality Regularizations in Training Deep CNNs?
- Constructing Orthogonal Latent Features for Arbitrary Loss
- Orthogonalized ALS: A Theoretically Principled Tensor Decomposition Algorithm for Practical Use
- ALS does not have any global convergence guarantees and can get stuck in local optima (Comon et al., 2009; Kolda & Bader, 2009)
- Truncation of tensors in the hierarchical format
- Autoregressive Tensor Factorization for Spatio-temporal Predictions
- Factorization Machines
- 因子分解机(FM,FFM,DeepFM,libfm,xlearn)
- 考虑了两个特征变量之间的交互影响
- 與 DNN 結合
- 初探Factorization Machine
- 輕讀論文(二):DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
- 論文
- Factorization Machines
- 始祖
- Factorization Machines with libFM
- geffy/tffm
- Higher-Order
- Higher-Order Factorization Machines
- Spatial Aggregation and Temporal Convolution Networks for Real-time Kriging
- 深度學習
- Wide & Deep Learning for Recommender Systems
- 結合特徵分解與深度學習效果會比較好
- 應該可以來試試看 ALS 和 SGD 混搭?
- 先用 ALS 找出初始值,再從這裡下去延伸
- Factorization Machines
- 因子分解机(FM,FFM,DeepFM,libfm,xlearn)
- 缺失值處理
- 程式技術
- TensorLy
- scikit-sparse - Sparse matrix extensions for SciPy
- transdim - transportation data imputation
- Non-negative Matrix Factorization
- 使用 AO-ADMM 的話可以參考的矩陣形式 Python code
- 对速度有洁癖?快来了解 Numpy 的 View 与 Copy
- 多用只有 view 的方法,沒必要不要用 copy
- numpy.tensordot
- 後來決定不用,但是這個函數很適合拿來理解張量積!
- 矩陣分解(Matrix Factorization): 交替最小平方法(Alternating least squares, ALS)和加權交替最小平方法(Alternating-least-squares with weighted-λ -regularization, ALS-WR)
- 交替最小二乘法(Alternating Least Squares, ALS)
- Matrix Factorization with Alternating Least Squares
- Matrix Completion via Alternating Least Square(ALS)
- 有說明在 ALS 的公式中如果加上遮罩要如何寫?
- ALS 要一個 row 一個 row 來算,就沒有像 SGD 有完整的矩陣表示法
- Conjugate gradient method(共軛梯度法)
- scipy.sparse.linalg.cg
- Krylov 子空間法──線性方程的數值解法 (三):共軛梯度法
- 重點:針對一個二次型(Quadratic-form)做最佳化
- 二次矩陣最好是正定實對稱矩陣
- 重點:針對一個二次型(Quadratic-form)做最佳化
- 共轭梯度法(一):线性共轭梯度
- [最佳化理論] Conjugate Direction Methods (2) - The Conjugate Gradient Algorithm for Quadratic Objective function
- Faster Implicit Matrix Factorization - Conjugate Gradient Method
- Conjugate gradient method