第九周學習筆記

2021-08-28 17:37:43 字數 2786 閱讀 3358

主要內容:

1.文章解決了什麼問題?

svm訓練演算法在大規模問題上收斂很慢,且十分複雜、難以實現,運算過程中需要維持乙個n

2n^2

n2個元素的矩陣,當年(1998),問題規模超過4000個樣本時,就超過了當時的記憶體大小(128mb)。

曾經的訓練演算法之一的chunking使得演算法從維持n

2n^2

n2個元素的矩陣降低到維持乙個非0拉格朗日乘子數平方的元素數,但仍然無法解決大規模問題(記憶體不足)。

2023年osuna提出了乙個訓練方法,並證明了解二次規劃問題可以化歸為解決其子問題,只要每次向子問題中增加乙個違反kkt條件的樣本即可。另一方面,為了讓訓練方法適應到任意規模的二次規劃問題,osuna在每次加入乙個不滿足kkt條件的樣本同時,剔除乙個樣本以維持矩陣的大小恆定。存在的問題是每次為了乙個樣本執行整個二次規劃數值演算法,效率十分底下,而且會出現很多數值精度問題。

2.用了什麼方法?

序列最小優化演算法(smo),包括兩個部分

3.效果如何

4.存在什麼不足

需要更多的基準測試來使smo成為乙個標準的svm訓練方法。

5.其他

驗證演算法時需要注意的地方

4.k-means

5.( a )l(θ

(t+1

))≥∑

i∑z(

i)qi

(t)(

z(i)

)log

p(x(

i),z

(i);

θ(t+

1))q

i(t)

(z(i

))≥∑

i∑z(

i)qi

(t)(

z(i)

)log

p(x(

i),z

(i);

θ(t)

)qi(

t)(z

(i))

=l(θ

(t))

\begin l(\theta^) &\geq \sum_i\sum_}q^_i(z^)log\dfrac,z^;\theta^)}_i(z^)}\\ &\geq \sum_i\sum_}q^_i(z^)log\dfrac,z^;\theta^)}_i(z^)}\\ &=l(\theta^) \end

l(θ(t+

1))​

≥i∑​

z(i)

∑​qi

(t)​

(z(i

))lo

gqi(

t)​(

z(i)

)p(x

(i),

z(i)

;θ(t

+1))

​≥i∑

​z(i

)∑​q

i(t)

​(z(

i))l

ogqi

(t)​

(z(i

))p(

x(i)

,z(i

);θ(

t))​

=l(θ

(t))

​第乙個不等號根據琴生不等式成立,第二個不等號根據梯度下降成立

( b )因為琴生不等式等號條件滿足,所以二者的更新法則一致。

**在這

實驗題目smo演算法的實現

實驗目的深入理解smo

實驗過程

1.資料準備:kaggle titanic分類資料,891*6

2.smo

演算法流程圖如下所示

演算法一,主步驟

演算法二,選定第二個拉格朗日乘子的方法

實驗結果

取c=0.05(與**中一致),十次執行取平均

樣本數50

100150

200250

300350

400450

500耗時(s)

0.01.3

4.26.1

8.612.8

17.9

33.2

39.1

38.9

準確率79.2%

78.4%

79.3%

78.5%

77.8%

79.5%

79.3%

79.2%

78.7%

78.9%

支援向量

4.110.7

18.8

30.6

41.7

56.8

68.7

88.1

107.8

130.1

非支援向量

45.9

139.3

281.2

469.4

708.3

993.2

1331.3

1711.9

2142.2

2619.9

實驗結論

1.smo演算法相對而言易於實現。

2.支援向量只有一小部分

3.線性svm和logistic回歸的效果相差不大

python第九周學習筆記

準備工作 os常用命令 自建乙個資料夾,將當前目錄修改為當前資料夾 import os os.chdir d 4.23 os.getcwd d 4.23 os.mkdir file 1 在當前目錄建立子資料夾 os.mkdir file 2 os.rmdir file 2 刪除資料夾 os.list...

第九周學習總結

output 輸出 顯示關閉時才能確保資料儲存正常。上週部落格互評情況 書本上出現較少的例子一定要關注,比如這次引用字元變數使用equals而不是 來判斷是否一致。行數 新增 累積 部落格量 新增 累積 學習時間 新增 累積 重要成長 目標5000行 400小時 第一周150 150 1 14 4 ...

第九周學習進度

第九周學習進度如下 花時間 包括上課 4h上課 18程式設計 4h查資料 26h 量 行 326行 部落格量 篇 3了解到知識 1.自己定義自己需要的全域性變數,用來儲存自己需要的東西。2.團隊開發過程中,大家挨一起研究,學會了下拉列表的使用。class spinnerxmlselectedlist...