Ice's Blog

努力 coding! 認真Playing!

Browsing Posts published by IceMaster

國 際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 2006年12月評選出了數據挖掘領域的十大經典演算法:C4.5, k-Means, SVM,Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.

不僅僅是選中的十大演算法,其實參加評選的18種演算法,實際上隨便拿出一種來都可以稱得上是經典演算法,它們在數據挖掘領域都產生了極為深遠的影響。

1. C4.5

C4.5演算法是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3演算法. C4.5演算法繼承了ID3演算法的優點,並在以下幾方面對ID3演算法進行了改進:

1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;

2) 在樹構造過程中進行剪枝;

3) 能夠完成對連續屬性的離散化處理;

4) 能夠對不完整數據進行處理。

C4.5演算法有如下優點:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致演算法的低效。

2. The k-means algorithm 即K-Means演算法

k-means algorithm演算法是一個聚類演算法,把n的對象根據他們的屬性分為k個分割,k< n。它與處理混合正態分佈的最大期望演算法很相似,因為他們都試圖找到數據中自然聚類的中心。它假設對象屬性來自於空間向量,並且目標是使各個群組內部的 均方誤差總和最小。

3. Support vector machines

支 持向量機,英文為Support Vector Machine,簡稱SV機(論文中一般簡稱SVM)。它是一種監督式學習的方法,它廣泛的應用於統計分類以及回歸分析中。支持向量機將向量映射到一個更 高維的空間里,在這個空間里建立有一個最大間隔超平面。在分開數據的超平面的兩邊建有兩個互相平行的超平面。分隔超平面使兩個平行超平面的距離最大化。假 定平行超平面間的距離或差距越大,分類器的總誤差越小。一個極好的指南是C.J.C Burges的《模式識別支持向量機指南》。van der Walt 和 Barnard 將支持向量機和其他分類器進行了比較。

4. The Apriori algorithm

Apriori演算法是一種最有影響的挖掘布爾關聯規則頻繁項集的演算法。其核心是基於兩階段頻集思想的遞推演算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這裡,所有支持度大於最小支持度的項集稱為頻繁項集,簡稱頻集。

5. 最大期望(EM)演算法

在 統計計算中,最大期望(EM,Expectation–Maximization)演算法是在概率(probabilistic)模型中尋找參數最大似然 估計的演算法,其中概率模型依賴於無法觀測的隱藏變數(Latent Variabl)。最大期望經常用在機器學習和電腦視覺的數據集聚(DataClustering)領域。

6. PageRank

PageRank是Google演算法的重要內容。2001年9月被授予美國專利,專利人是Google創始人之一拉里·佩奇(Larry Page)。因此,PageRank里的page不是指網頁,而是指佩奇,即這個等級方法是以佩奇來命名的。

PageRank 根據網站的外部鏈接和內部鏈接的數量和質量倆衡量網站的價值。PageRank背後的概念是,每個到頁面的鏈接都是對該頁面的一次投票,被鏈接的越多,就 意味著被其他網站投票越多。這個就是所謂的「鏈接流行度」——衡量多少人願意將他們的網站和你的網站掛鉤。PageRank這個概念引自學術中一篇論文的 被引述的頻度——即被別人引述的次數越多,一般判斷這篇論文的權威性就越高。

7. AdaBoost

Adaboost 是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器 (強分類器)。其演算法本身是通過改變數據分佈來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權 值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。

8. kNN: k-nearest neighbor classification

K最近鄰(k-NearestNeighbor,KNN)分類演算法,是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。

9. Naive Bayes

在 眾多的分類模型中,應用最為廣泛的兩種分類模型是決策樹模型(Decision Tree Model)和樸素貝葉斯模型(Naive BayesianModel,NBC)。 樸素貝葉斯模型發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。同時,NBC模型所需估計的參數很少,對缺失數據不太敏感,演算法也比較簡 單。理論上,NBC模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,這給NBC模型的正確分類帶來了一定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最為良好。

10. CART: 分類與回歸樹

CART, Classification and Regression Trees。 在分類樹下面有兩個關鍵的思想。第一個是關於遞歸地劃分自變數空間的想法;第二個想法是用驗證數據進行剪枝。

 

sudo rm -Rf /Applications/Navicat\ Premium.app
sudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.NavicatPremium.playlist
sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexFile/com.prect.NavicatPremium.help
sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/zh_CN/HelpSDMIndexFile/com.prect.NavicatPremium.help
sudo rm -Rf ~/Library/Preferences/com.prect.NavicatPremium.plist
sudo rm -Rf ~/Library/Application\ Support/CrashReporter/Navicat\ Premium_54EDA2E9-528D-5778-A528-BBF9A4CE8BDC.plist
sudo rm -Rf ~/Library/Application\ Support/PremiumSoft\ CyberTech

http://www.broadleafcommerce.com/

Based on Java, Spring, Hibernate 結構完整清楚,並且有文件可以參考

remove Navicat files

No comments

rm -Rf ~/Library/Application\ Support/PremiumSoft\ CyberTech/Navicat*

rm -Rf ~/Library/Caches/com.prect.NavicatPremium 。

rm -Rf ~/Library/Preferences/com.prect.NavicatPremium.plist。

sudo rm -Rf /Applications/Navicat\ Premium.app/

find / -daystart -mtime +41 -mtime -408 \
  -printf "%M %n %u %g %10s %TY-%Tm-%Td %Ta %TH:%TM:%TS %h/%f\n" |
awk '($7=="Fri"){print}'


Adjust the -printf as required, I've made it look close to ls -l here. %T (and %A %C) let you usestrftime() formatting for timestamps, %Ta being the day of the week. (You may need to adjust the day ranges 41 - 408, but that's really just an optimisation, you can just grep 2012, or adjust -printfto make it easier to grep.)

cd /usr/share
brew install maven
sudo unlink /usr/share/maven
cd /usr/share/
sudo ln -s /usr/local/Cellar/maven/3.1.0 maven

3.1.0 is the version you want to use.

電腦升級紀錄

No comments

CPU Q8400(775腳位)沿用,更換全新ASUS P5P41T LE 主機板、USB 3.0Card   (SilverStone SST-EC04-P)、USB 3.0前置面板,另外加上之前就已經購買的SSD以及DDR3 8G RAM。

從事資訊業以來,一直都有一個問題,通常老闆或高階主管知道我們有哪些專案,但除非主管剛好也是資訊業出身,否則通常不知道公司花了這麼多資源與金錢,請這麼多工程師開發出來的產品,到底品質如何? 如果問每個人『自己的產品品質重不重要?』,答案一定是肯定的,如果產品不穩定、不好用、很多臭蟲,我想神也救不了你,客戶馬上就會離開。 所以大家都覺得品質重要,可是誰會替自己的產品把關呢? 尤其今天講的是軟體內部的品質,工程師都希望有好的架構,畢竟現在唯一不變的事情就是『客戶的需求一直都在改變』,可是我接過很多案子,許多的工程師都自以為自己開發出來的東西品質超好,是的,相當自以為,其實殊不知,這產品只是外觀能動,裡面卻是一堆違章建築,很好的分辨方式就是:

1.新接手的工程師要花多久才能看的懂系統的程式碼?

2.這個系統會不會修好一個bug,另外就有bug跑出來?

所以工程師都不喜歡接別人的專案,原因很多:風格不同、架構難以理解、寫法老舊…等等,而通常唯一的解法就是『重寫』,當然重寫後的品質又是另外一個故事了….

我想軟體跟建築其實有點相似,沒有設計師能不能蓋房子(寫程式)? 有設計師設計過的房子(架構)一定比較好?未必,誰知道外觀看似華麗的房子裡面的耐用程度如何? 那我們該依賴什麼去判斷房子的好壞? 總是有些規格,防震程度、水管保用時間、鋼筋軟硬度等等,我想軟體世界裡面應該也是一樣的,應該有很多ISO去評斷,雖然不是唯一,但是可以當做一個參考,下次就來找找看有哪些ISO好了。

PS: 我最害怕的其實是工程師不覺得自己寫的code有問題,寫程式是需要考慮各種狀況,不是這個能動就行了,能用跟好用差的可遠了。我現在判斷工程師的程式碼好壞是用code review的時間,看看他們的code有沒有修改過,修改過幾次,如果只寫一次就交卷了,通常大有問題,因為寫程式的過程中一定會遇到有更好的解決方式或是更有效率的寫法,沒經過多次思考的程式碼,一定只有一個commit,看個幾分鐘,通常就一堆問題了….

http://www.freeformatter.com/

Formatters
Validators
Encoders & Decoders
etc…

明年共有3個連續假日:
1、 農曆春節(2月9日至2月17日),放假9天。
2、 清明節(4月4日至4月7日),連放4天假。
3、 中秋節(9月19日至9月22日),連放4天假。

明年元旦適逢周二,連同周休二日及今年12月31日(周一),也有4天跨年的連續假期。

其他放假的紀念日與節日,包括和平紀念日(2月28日)、端午節(6月12日)和國慶日(10月10日),都於當天放假一天。