<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 機器學習矩陣分解的溫和介紹 > 原文: [https://machinelearningmastery.com/introduction-to-matrix-decompositions-for-machine-learning/](https://machinelearningmastery.com/introduction-to-matrix-decompositions-for-machine-learning/) 使用有限的計算機精度無法有效地或穩定地解決許多復雜的矩陣運算。 矩陣分解是將矩陣簡化為組成部分的方法,使得更容易計算更復雜的矩陣運算。矩陣分解方法,也稱為矩陣分解方法,是計算機中線性代數的基礎,甚至用于基本操作,如求解線性方程組,計算逆矩陣和計算矩陣的行列式。 在本教程中,您將發現矩陣分解以及如何在 Python 中計算它們。 完成本教程后,您將了解: * 什么是矩陣分解以及為什么這些類型的操作很重要。 * 如何在 Python 中計算 LU 和 QR 矩陣分解。 * 如何在 Python 中計算 Cholesky 矩陣分解。 讓我們開始吧。 * **Update Mar / 2018** :修正了 QR 分解描述中的小錯字。 ![A Gentle Introduction to Matrix Decompositions for Machine Learning](img/8fe573b3dc23c056885105cf983a9dd7.jpg) 機器學習矩陣分解的溫和介紹 [mickey](https://www.flickr.com/photos/mc-pictures/7870241912/) 的照片,保留一些權利。 ## 教程概述 本教程分為 4 個部分;他們是: 1. 什么是矩陣分解? 2. LU 矩陣分解 3. QR 矩陣分解 4. Cholesky 分解 ## 什么是矩陣分解? 矩陣分解是一種將矩陣簡化為其組成部分的方法。 這種方法可以簡化更復雜的矩陣運算,這些運算可以在分解的矩陣上執行,而不是在原始矩陣本身上執行。 矩陣分解的一個常見類比是數字因式分解,例如將因子分解為 2×5。因此,矩陣分解也稱為矩陣分解。與分解實數值一樣,有許多方法可以分解矩陣,因此存在一系列不同的矩陣分解技術。 兩種簡單且廣泛使用的矩陣分解方法是 LU 矩陣分解和 QR 矩陣分解。 接下來,我們將仔細研究這些方法。 ## LU 矩陣分解 LU 分解用于方形矩陣,并將矩陣分解為 L 和 U 分量。 ``` A = L . U ``` 或者,沒有點符號。 ``` A = LU ``` 其中 A 是我們希望分解的方陣,L 是下三角矩陣,U 是上三角矩陣。 > 因子 L 和 U 是三角矩陣。消除產生的因子分解是 A = LU。 - 第 97 頁,[線性代數導論](http://amzn.to/2AZ7R8j),第五版,2016 年。 LU 分解是使用迭代數值過程找到的,并且對于那些不易分解或分解的矩陣可能會失敗。 在實踐中數值上更穩定的這種分解的變化稱為 LUP 分解,或具有部分樞轉的 LU 分解。 ``` A = P . L . U ``` 重新排序父矩陣的行以簡化分解過程,并且附加的 P 矩陣指定用于置換結果或將結果返回到原始順序的方式。 LU 還有其他變體。 LU 分解通常用于簡化線性方程組的求解,例如在線性回歸中找到系數,以及計算矩陣的行列式和逆。 LU 分解可以使用 lu()函數在 Python 中實現。更具體地說,該函數計算 LPU 分解。 以下示例首先定義 3×3 方陣。計算 LU 分解,然后從組件重建原始矩陣。 ``` # LU decomposition from numpy import array from scipy.linalg import lu # define a square matrix A = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(A) # LU decomposition P, L, U = lu(A) print(P) print(L) print(U) # reconstruct B = P.dot(L).dot(U) print(B) ``` 首先運行該示例打印定義的 3×3 矩陣,然后打印分解的 P,L 和 U 分量,最后重建原始矩陣。 ``` [[1 2 3] [4 5 6] [7 8 9]] [[ 0\. 1\. 0.] [ 0\. 0\. 1.] [ 1\. 0\. 0.]] [[ 1\. 0\. 0\. ] [ 0.14285714 1\. 0\. ] [ 0.57142857 0.5 1\. ]] [[ 7.00000000e+00 8.00000000e+00 9.00000000e+00] [ 0.00000000e+00 8.57142857e-01 1.71428571e+00] [ 0.00000000e+00 0.00000000e+00 -1.58603289e-16]] [[ 1\. 2\. 3.] [ 4\. 5\. 6.] [ 7\. 8\. 9.]] ``` ## QR 矩陣分解 QR 分解用于 m×n 矩陣(不限于方形矩陣)并將矩陣分解為 Q 和 R 分量。 ``` A = Q . R ``` Or, without the dot notation. ``` A = QR ``` 其中 A 是我們希望分解的矩陣,Q 是尺寸為 m×m 的矩陣,R 是尺寸為 m×n 的上三角矩陣。 使用迭代數值方法找到 QR 分解,該方法對于那些不能分解或易于分解的矩陣可能失敗。 與 LU 分解一樣,QR 分解通常用于求解線性方程組,但不限于方形矩陣。 可以使用 qr()函數在 NumPy 中實現 QR 分解。默認情況下,該函數返回具有更小或“減小”維度的 Q 和 R 矩陣,這更經濟。我們可以通過將 mode 參數指定為'complete'來更改此值以返回 Q 的 m x m 和 R 的預期大小,盡管大多數應用程序都不需要這樣做。 下面的示例定義了 3×2 矩陣,計算 QR 分解,然后從分解的元素重建原始矩陣。 ``` # QR decomposition from numpy import array from numpy.linalg import qr # define a 3x2 matrix A = array([[1, 2], [3, 4], [5, 6]]) print(A) # QR decomposition Q, R = qr(A, 'complete') print(Q) print(R) # reconstruct B = Q.dot(R) print(B) ``` 運行該示例首先打印定義的 3×2 矩陣,然后打印 Q 和 R 元素,最后打印與我們開始時匹配的重建矩陣。 ``` [[1 2] [3 4] [5 6]] [[-0.16903085 0.89708523 0.40824829] [-0.50709255 0.27602622 -0.81649658] [-0.84515425 -0.34503278 0.40824829]] [[-5.91607978 -7.43735744] [ 0\. 0.82807867] [ 0\. 0\. ]] [[ 1\. 2.] [ 3\. 4.] [ 5\. 6.]] ``` ## Cholesky 分解 Cholesky 分解用于方形對稱矩陣,其中所有值都大于零,即所謂的正定矩陣。 為了我們對機器學習的興趣,我們將重點關注實值矩陣的 Cholesky 分解,并忽略處理復數時的情況。 分解定義如下: ``` A = L . L^T ``` 或者沒有點符號: ``` A = LL^T ``` 其中 A 是被分解的矩陣,L 是下三角矩陣,L ^ T 是 L 的轉置。 分解也可以寫成上三角矩陣的乘積,例如: ``` A = U^T . U ``` 其中 U 是上三角矩陣。 Cholesky 分解用于求解線性回歸的線性最小二乘,以及模擬和優化方法。 當分解對稱矩陣時,Cholesky 分解的效率幾乎是 LU 分解的兩倍,在這些情況下應該是首選。 > 雖然對稱的正定矩陣相當特殊,但它們在某些應用中經常出現,因此它們的特殊分解(稱為 Cholesky 分解)很容易理解。當你可以使用它時,Cholesky 分解比用于求解線性方程的替代方法快兩倍。 - 第 100 頁,[數字秘籍:科學計算的藝術](http://amzn.to/2BezVEE),第三版,2007 年。 可以通過調用 cholesky()函數在 NumPy 中實現 Cholesky 分解。該函數僅返回 L,因為我們可以根據需要輕松訪問 L 轉置。 下面的例子定義了一個 3×3 對稱和正定矩陣并計算 Cholesky 分解,然后重建原始矩陣。 ``` # Cholesky decomposition from numpy import array from numpy.linalg import cholesky # define a 3x3 matrix A = array([[2, 1, 1], [1, 2, 1], [1, 1, 2]]) print(A) # Cholesky decomposition L = cholesky(A) print(L) # reconstruct B = L.dot(L.T) print(B) ``` 首先運行該示例打印對稱矩陣,然后打印分解后的下三角矩陣,然后是重建矩陣。 ``` [[2 1 1] [1 2 1] [1 1 2]] [[ 1.41421356 0\. 0\. ] [ 0.70710678 1.22474487 0\. ] [ 0.70710678 0.40824829 1.15470054]] [[ 2\. 1\. 1.] [ 1\. 2\. 1.] [ 1\. 1\. 2.]] ``` ## 擴展 本節列出了一些擴展您可能希望探索的教程的想法。 * 使用您自己的數據使用每個操作創建 5 個示例。 * 搜索機器學習論文并找到每個正在使用的操作的示例。 如果你探索任何這些擴展,我很想知道。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 圖書 * 第 6.6 節矩陣分解。 [線性代數無廢話指南](http://amzn.to/2k76D4),2017 年。 * 第 7 講 QR 分解,[數值線性代數](http://amzn.to/2BI9kRH),1997。 * 第 2.3 節 LU 分解及其應用,[數字秘籍:科學計算的藝術,第三版](http://amzn.to/2BezVEE),2007。 * 第 2.10 節 QR 分解,[數字秘籍:科學計算的藝術](http://amzn.to/2BezVEE),第三版,2007。 * 第 2.9 節 Cholesky 分解,[數字秘籍:科學計算的藝術](http://amzn.to/2BezVEE),第三版,2007。 * 第 23 講,Cholesky 分解,[數值線性代數](http://amzn.to/2BI9kRH),1997。 ### API * [scipy.linalg.lu()API](https://docs.scipy.org/doc/scipy-1.0.0/reference/generated/scipy.linalg.lu.html) * [numpy.linalg.qr()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.qr.html) * [numpy.linalg.cholesky()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.cholesky.html) ### 用品 * 維基百科上的[矩陣分解](https://en.wikipedia.org/wiki/Matrix_decomposition) * 維基百科上的 [LU 分解](https://en.wikipedia.org/wiki/LU_decomposition) * 維基百科上的 [QR 分解](https://en.wikipedia.org/wiki/QR_decomposition) * [維基百科上的 Cholesky 分解](https://en.wikipedia.org/wiki/Cholesky_decomposition) ## 摘要 在本教程中,您發現了矩陣分解以及如何在 Python 中計算它們。 具體來說,你學到了: * 什么是矩陣分解以及為什么這些類型的操作很重要。 * 如何在 Python 中計算 LU 和 QR 矩陣分解。 * 如何在 Python 中計算 Cholesky 矩陣分解。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看