隨機森林介紹
LevenYes
?
渣渣小本求職復習之路每天一博客系列——Unix&Linux入門(2)
前情回顧:在上一篇,我們開始了Unix系統的一些了解,另外,還介紹了一些學習方法和小貼士,希望對自己和對大家都有幫助。
將近一個月前,決定一天寫一篇博客,堅持三十天。說實在的,到現在應該是到尾聲了吧,回想起之前的大半個月,有點難以想象,沒想到自己還真的能堅持下來。
本來寫博客的目的是為了復習,為了更好地找工作,從我這一系列的標題就可以看出來。可是寫到這個地步,主要的原因已經不是因為那些東西了,更多的是自己寫得開心,在這個過程中享受到了樂趣和取得了成就感。特別謝謝那些給我評論留言的朋友,沒有你們,我堅持不到現在。
——————————————————————————閑聊結束———————————————————————————
第三章:用戶和組
在介紹用戶和組之前,我們先來了解一下,如何關閉系統。
第一節:關閉系統與使用幫助頁
Unix是一個多用戶、多任務操作系統,所以總是會有很多進程在運行。因為需要同步文件系統以及保存設置修改等,所以直接關閉電源會使文件系統出現問題并影響系統的穩定性,這樣不正常的關機往往會導致這樣或那樣的問題。
通過命令行正確關閉Unix系統最一致的方式就是用下列命令中的一個:
halt:理解關閉系統
init 0:使用預定義的腳本切斷系統的電源,以便在關機前同步數據并整理系統(不是在所有Unix系統上都可以使用這種方法)
init 6:通過將系統完全關閉,然后將它完全恢復來重新啟動系統(不通用)
poweroff:通過切斷電源來關閉系統
reboot:重新啟動系統
shutdown:關閉系統
首選的方法肯定是使用shutdown命令,所有Unix系統上都可以使用這種方法。它使用系統提供的腳本進行正確的關閉,并且具有其他命令的大部分功能。下面,我們來試試。我在Virtual Box上用裝的虛擬機,系統是Ubuntu,版本是12.04.
咦,怎么不開始關閉系統啊?提示說,需要時間。需要時間是什么意思?下面一句,試試shutdown --help指令獲取更多的信息。我來試試先!
果然,輸入了剛才提示的那條指令之后,就出現如上圖的幫助信息。建議大家去試試,一般我都是用shutdown now關機的。這個就不示范了,懶得等會又要重新啟動系統。
從剛才這條簡單的關閉系統命令就可以想到,Unix命令總是會有多個參數或選項,使得相同的命令具有各種各樣的功能。因為不大可能有人記住所有的Unix命令和相應的命令選項,所以從Unix的早期開始,就一直有聯機幫助。Unix的幫助文件稱為聯機幫助頁(man pages)。聯機幫助頁(manual page)用一種任何用戶都可讀的標準格式提供聯機文檔,并且以一種統一的、合理的方式進行安裝。可以簡單地按照下面的語法使用這條命令:
man command
如果想了解某條命令的更多信息,就可以用這條命令的名稱作為command參數。例如,我們現在要查看ls這條命令的聯機幫助頁,如下圖
看到上面的聯機幫助頁,明顯看出分為不同的部分。下面介紹一些比較常見的——
NAME:命令的名稱
SYNOPISIS:命令的常用參數
DESCRIPTION:命令的一般性描述以及它的作用
OPTIONS:描述命令所有的參數或選項
SEE ALSO:列出聯機幫助頁中與該命令直接相關或功能相近的其他命令
BUGS:解釋命令或它的輸出中存在任何已知的問題或缺陷
EXAMPLES(或TIPS):普通的用法示例,讓讀者知道如何使用這條命令
AUTHORS:聯機幫助頁/命令的作者
用戶有時候可能只記得某條命令名的一部分或者命令中所包含的的一個要點,我們可以利用-k選項在聯機幫助頁中搜索,該選項在聯機幫助頁中尋找關鍵字。例如,我們需要修改文件的權限,但是忘記了要使用什么命令,我們可以輸入man -k permission,效果如下圖:
當需要了解Linux系統中的命令或文件的相關信息時,聯機幫助頁是一個至關重要的資源和首要的研究手段,是我們play unix必須要掌握的東西。從今天開始,成為一個靠自己的人,不做伸手黨!
第二節:賬戶基礎知識
Unix系統上主要有三種類型的賬戶:根用戶(或超級用戶)賬戶、系統賬戶以及普通用戶賬戶。下面,我們會對三種賬戶簡單地一一說明。
根賬戶:根賬戶的用戶能夠完全地、不受約束地控制系統,以至于可以運行命令來完全破壞系統。根能夠在系統上進行任何操作,可以不受任何限制地訪問、 刪除和修改文件。因此,我們應該只用根用于最重要的任務,而且只在必要的時候才使用它,并且需要非常謹慎。
?
系統賬戶:系統賬戶是對系統特定組件進行操作所需的那類賬戶。例如,它們包括郵件賬戶(用于電子郵件功能)和sshd賬戶(用于ssh功能)。系統賬戶通常由操作系統在安裝過程中提供或者由軟件制造商(包括內部開發商)提供。他們通常協助用戶所需的服務或程序。
?
?用戶賬戶:用戶賬戶為用戶和用戶組提供對系統的交互式訪問。普通用戶通常都配以這類賬戶并且對關鍵系統文件和目錄的訪問權限是有限的。通常在一個賬戶名中希望使用8個或更少的字符,但是現在所有的Unix系統都不再有這個要求。然而,考慮到與其他Unix系統和服務的互操作性,最好還是限制賬戶名在8個字符以內。
?
組賬戶:組賬戶增加了一種功能,這種功能可以將其他賬戶集中在一起組成一個邏輯排列,從而簡化權限管理。Unix權限作用于文件和目錄上,并分別控制三類用戶的權限:文件的所有者,也稱為用戶;指派給文件的組,也簡稱為組;在系統上擁有合法注冊但既不是所有者也不屬于組的人,也稱為其他(others)。組的存在使得資源或文件的所有者能夠授予一類用戶訪問文件的權力。組的一個強大之處在于,基于訪問需求,一個賬戶可以屬于多個組。
?
第三節:管理用戶和組
管理用戶的信息,會記錄在系統上的用戶管理文件里,主要有以下三個:
/etc/passwd——保存了系統識別已授權的賬戶。
/etc/shadow——保存相應賬戶加密后的口令。大多數Unix系統都有這個文件。
/etc/group——存放組賬戶的信息。
首先,我們來看看/etc/passwd這個管理文件,該文件保存了Unix系統上與賬戶相關的大部分信息。幾乎在系統上擁有賬戶的任何人都可以查看這個文件,但是只有根用戶才能修改它。看看這個文件的內容:
每一條記錄的每一部分,都會用冒號分開。分別是用戶名、加密的口令或x、UID(用戶ID號)、默認UID(組ID)、GCOS(或注釋)、賬戶啟動的位置或主目錄(用于存儲個人文件)、用戶的登錄shell。對應上圖最后一條記錄,我們可以得知這些信息:用戶名是levenyes,由于使用隱式口令所以只含有一個x,UID和默認UID都是1000,注釋就只有levnyes(一般會添加一些聯系信息或職位等內容),賬戶啟動的位置是/home/levenyes,登錄shell為/bin/bash。
接下來,我們再簡單了解一下兩個文件的作用。
/etc/shadow——該文件包含已加密的本地用戶的口令記錄以及所有口令的期限(說明口令過期的時間)或限制。
/etc/group——該文件包含每個賬戶的組信息。
建議大家都打開這些文件看看,了解每個字段都是什么意思。這里就不一一介紹了。
第四節:管理賬戶和組
剛才了解了幾個賬戶管理文件,那么,如果我們要手動添加或刪除一個賬戶,大概很多人都會想到修改文件:
- 修改/etc/passwd以添加或刪除賬戶行
- 修改/etc/shadow以添加或刪除賬戶行
- 修改/etc/group以添加或刪除賬戶引用
- 添加或刪除賬戶的主目錄
可是,這樣一個一個文件去修改內容,很可能因為輸入錯誤或者其他誤操作而造成不可預料的后果。因此,我們應該盡量使用一些命令來進行管理賬戶和組的操作,當然啦,這些命令要想運行,必須以根用戶的身份登錄。
useradd:向系統中添加賬戶
usermod:修改賬戶屬性
userdel:向系統中刪除賬戶
groupadd:向系統中添加組
groupmod:修改組的屬性
groupdel:從系統中刪除組
具體的創建用戶的過程在這里也就不貼出來了,有興趣的童鞋還是自己動手實驗實驗比較好。這些指令的作用就是會幫助我們修改或創建相應的文件和目錄,免去我們一一操作的麻煩和誤操作的危險性。
最后介紹幾個命令——who:顯示當前登錄在系統上的用戶;whoami顯示當前作為哪一個用戶登錄,而who am i顯示最初作為哪一個用戶登錄到系統。
?
今天的內容就到這里,明天會跟大家一起了解Unix下的文件系統,可能還會有一些其他的內容,敬請期待。
?
——————————————————————————倒數第六天————————————————————————
今天發了條微博:有一種狀態,叫做看得進書。
?
1.最近找工作的事情,說順利也順利,說不順利也不順利。筆試面試偶爾會有而且表現還可以,不過還沒有確定的去向。
?
2.不過狀態是越來越好了,每天看東西寫博客,也越來越順暢。
?
3.港劇里面常常會有這么一句話:做人呢,最緊要的是開心。我深以為然。就像我昨天說的那樣,just for fun,just for play。學東西最好是要有趣,play database,play java programming,play linux。希望大家都能夠從學習中工作中多樂一點,少苦一些。
前面的一篇博客: 分類算法之決策樹 ? 介紹了決策樹算法,從介紹中可以發現,決策樹有些與生俱來的缺點:
1:分類規則復雜
決策樹算法在產生規則的時候采用局部貪婪法。每次都只選擇一個屬性進行分析構造決策樹,所以再產生的分類規則往往相當復雜。
2:收斂到非全局的局部最優解
ID3算法每次在樹的某個層次進行屬性選擇時,它不再回溯重新考慮這個選擇,所以它容易產生盲人登山中常見的風險,僅僅收斂到非全局的局部最優解。
3: 過度擬合
在決策樹學習中,由于分類器過于復雜,它可能會過于適應噪聲,從而導致過度擬合問題。
?
為了克服以上的缺點,引入了另外一個預測模型----- 隨機森林 。
?
一:森林思想
單個的決策樹可以按照一定的精度分類,為了提高精度,一種比較容易想到的方法就是種植一片 森林 ,并讓所有的樹都參加投票,選出 投票最多 的分類標簽。
下面舉例說明:
我們根據歷史數據建立起了一片由決策樹組成的森林,下面我們要根據某個用戶的特征來分析他是否會購買某件商品,分類標簽只有兩類:yes no。
假設100棵決策樹中有90棵樹給它貼的標簽為yes,10棵給它貼的標簽為no,那我們最后就選擇標簽yes.這樣就避免了一棵樹說了算的局面。
?
二:隨機思想
隨機森林的 隨機 體現在它的 每棵決策樹的構造過程 :
隨機森林的構造方法有很多,下面以 bagging 方法舉例:
1:假設原始樣本數為N,用 bootstrap 方法從N樣本中獲取構造每棵決策樹的訓練集。
bootstrap方法的實質就是一種自助法,一種非參數統計的方法:對觀察的信息(這里指原始的樣本)進行N次隨機的可重復的采樣,以此來獲取構造每棵決策樹的訓練集。Bootstrap充分利用了給定的觀測信息,不需要模型、其他假設和增加新的觀測,并有穩定性和效率高的特點。
2:如果樣本信息有M個屬性,每次隨機的從M個屬性中選擇m個屬性來進行建樹(建樹過程跟普通決策樹過程一樣),其中m<<M.
3:這樣每棵樹的葉子節點,要么是無法繼續分裂,要么里面的所有樣本都指向同一個分類標簽。
有了上面的隨機性,這樣建立起來的每一棵決策樹都不會出現過度擬合的現象,也不需要裁枝處理。
小結 :這樣每一棵決策樹就是一位精通某一領域(m個features)的專家,在隨機森林中就有了很多精通不同領域的專家,對一個新問題,可以從不同的角度來觀察,最終由各個專家,投票得到結果。
?
三:隨機森林的特征
1:在現有算法中,隨機森林算法的精度是無可比擬的。
2:隨機森林能夠高效處理大數據集。
3:隨機森林可以處理成千上萬的輸入屬性。
4:隨機森林在分類的應用中可以計算出不同變量屬性的重要性。
5:在構建隨機森林的過程中可以產生一個關于 泛化誤差 的內部無偏估計。
6:當大量數據缺失的時候,隨機森林有高效的方法來估計缺失的數據并保持著準確率。
7:在不平衡的數據集中,它含有平衡誤差的方法。
8:已經生成的隨機森林可以保存下來方便解決以后的問題。
9:Prototypes的計算可以給出屬性變量本身和分類的相關性。
10:計算樣本實例之間的Proximities,可以用來聚類分析、異常分析、或者數據的其他有趣的視圖。
上述能力可以拓展為無標簽類數據,導出無監督聚類方法及數據視圖和異常點檢測。
?
隨機森林在機器學習領域中的應用還是很多的,所以接下來得弄清楚,它背后的數學基礎和各個特征的具體實現并用一些數據來感覺下它的強大。
繼續記錄自己的學習過程,方便以后的復習~come on~
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
