線形代数は、本質から開始決定1--

 

線形代数は基本を機械学習の分野の中で非常に重要ですが、少数の人々がその重要性を認識することができ、実際のエントリの前に、それがエントリーした後、固体を学び、その後、あなたはまた、クラスを作りたいということを理解するであろう、ということは残念です簡単ではありません。

 

私は大学の時に表面を傷つける、このコースでは、テストの点数をすることができますが、多くはないが、コンテンツの後に覚えて、また同じです。これは、後に多くの論文につながったとの情報を見て、それは読み取りも忘れることは非常に容易であったとしても、式の多くは理解することは困難である、非常に困難です。

 

線形代数、多くの内容が、多くの非常に深いが、ここで我々は唯一の最も重要な知識のポイントを抽出します。学んだことがない学生が簡単に学んだ学生がレビューとしても使用することができ、本質的に得ることができます。

 

 

  行列式の定義  

 

 

ウィキペディアは決定基は、N×N行列をスカラーへマッピングされるの関数で定義されます。これは、線形行列を表し変更した後、この変更はスカラーを表し、空間内で発生したマトリックス「ボリューム」。

 

すなわち、入力は、N * N、特定の番号が出力されるの正方行列の行列です。我々は、Aであるつのn * n列の行列と仮定し、発現の決定基DETを使用し、次いでDET(A)即ち、行列の行列。

 

 

  決定計算  

 

 

二次決定

メイク

まあ、

製品の対角の違いです。

三次の状況で見てみましょう:

メイク

それから

 

 

私たちが赤い線で、製品のすべての正の項を接続した場合だけで、非常に複雑な式を見て、青い線に接続された負用語の結果は、我々は以下のこの絵を得ることができます。

 

 

実際には、本質的に、それはすなわち、(右に左から)、対角差の積であり、すべての正の対角の積マイナス(右から隣に左に)逆に、斜めの製品。

 

私たちは、2と3行列式は、当然、我々は書きますn個の項目の以下の決定を計算リスト。逆数 - しかし、その前に、私たちは別の関連概念を導入する必要があります。

 

リバース番号

 

リバース数自体は、主にそれらの行列の計算に使用されるが、そうでない場合は、多くの場合、逆の順序で書かれた質問や口頭計算アルゴリズムの数に直面するだろう、多くの求職者の間で顔の質問に表示されています。この時点では、アルゴリズムは、それらの後、別の列に説明します。

 

我々はそれがn個の異なる要素を持つ配列Aを、持っていると仮定します。理想的なケースでは、すべての注文されなければならない要素A。例えば、彼らは昇順であるが、理想的な状況はめったに起こりません。ほとんどの場合、アレイの要素が乱れています。

 

假如我们想要知道,数组当前的排序距离理想情况的升序究竟有多大的差距。很正常地可以想到,我们可以遍历这个数组当中所有Ai和Aj的组合,看看究竟有多少数的次序有误。在这个序列所有两两元素的组合当中,有误的次序的组合总数就叫做逆序数。

 

光看概念有些拗口,但是直接看代码的话其实非常简单:

 

reverse = 0
for i in range(n):
    for j in range(i):
   if A[i] < A[j]:
     reverse += 1

 

也就是说我们对于数组当中的每一个元素,都计算出了排在它前面并且比它大的元素个数。考虑一般情况,假设A数组的排列为p1,p2,p3,...,pn,对于每一个pi我们都求出它前面比较大的元素个数,定义为ti,那么全体的逆序数之和:

 

n阶行列式

 

我们再回到n阶行列式来,理解了逆序数的概念之后,我们就很方便地可以写出n阶行列式的公式了。首先,先定义出矩阵D,是一个n阶的方阵:

 

 

假设自然数1,2,3...n的一个排列为p1,p2,p3,...,pn,这个排列的逆序数为t。那么我们可以写出D的行列式:

由于长度为n的序列的全排列一共有n!种,所以n阶方阵的行列式一共含有n!项。

 

除此之外,行列式还有另外一种计算方法。

 

在n阶行列式当中,把(i,j)元素所在的行和列的所有元素全部去除之后,剩下的新的n-1阶的行列式称为(i,j)元的代数余子式,记为Mij列入4阶行列式:

 

 

其中(2,2)元的代数余子式为:

 

 

代数余子式可以用来表示行列式。

 

A矩阵的行列式可以写成

 

 

证明也很简单,其实这只不过是行列式表达式的一个变形。我们用三阶行列式举例:

 

 

我们把这些值用代数余子式表示出来:

 

 

化简一下,显然就是上面公式的结果。

 

克拉默法则


行列式的定义和计算都不太直观,那么这么一个相对比较复杂的概念究竟有什么作用呢?除了用在机器学习的模型当中之外,另一个非常经典的用途就是判断线性方程组是否有解。
对于一个含有n个未知数的n个线性方程组

它的解可以用n阶行列式表示。如果这个n阶的行列式不等于0,即:

那么这个n阶方程组有唯一解,并且它的解为:

其中Dj(j=1,2,...n)是把D中第j列替换成方程常数项得到的新的行列式:

 

行列式除了上面提到的内容之外,还有很多很好用的性质以及一些变种的计算方法。不过,对于算法领域的帮助不多,所以这里不多枚举,感兴趣的同学可以自己查阅相关资料。
  行列式几何意义  
行列式除了代数上的作用之外,也是有它的几何意义的。以二阶行列式举例,假设我们有A,B两个向量,其中A向量写作(a1,b1),B向量写作(b1,b2),AB两个向量组合成的矩阵写作:

如果我们将它画出来,它其实表示这两个向量的平行四边形面积。

 

所以,当我们把行列式当中的某一行或者是某一列同时乘上一个系数k之后,它的行列式增大了k倍。



  代码实现  
从上文行列式的定义很容易得出结论,行列式的计算比较复杂,如果我们自己实现,需要的代码至少在100行以上。不过好在Python的Numpy库当中为我们提供了非常丰富的矩阵相关操作,包括行列式的计算在内,因此,我们可以非常简单的实现行列式的计算。
如果没有装过Numpy的,可以通过pip很方便地安装:

pip install numpy

 

通过调用numpy.linalg中的det函数,我们可以直接求出矩阵行列式的值。如果觉得本文有所收获,就转发或者点击右下角的“在看”吧。你们的支持是作者最好的动力


参考资料
维基百科
线性代数第五版(上海交大出版社)
https://www.cnblogs.com/andyjee/p/3491487.html

おすすめ

転載: www.cnblogs.com/techflow/p/12090520.html