동나비엔 - 회사탐방 (2018.07) Kyung Dong Navien, Company explorative visit




IR

KOR: 동사는 보일러 전문 제조업으로, 국내 140 만대의 보일러시장에서 Market share 1위 (30%)을 차지하는 기업이다. 최근 국내의 평 이한 성장률에 따라, 국내보다는 해외사업에 초점을 두고 있다. 1993년도는 북경, 2006년도는 상해와 미 국, 2008년도는 미국과 러시아, 그리고2014년도는 유럽지역까지 해외진출 로를 확보해나고 있다. 2006년도 상해는 석탄으로만 발전하기 시 기인 당시 진출하였고, 미국 경우 보일러가 아닌 ‘온수기 시장’으로 진출하였다. 당시 미국은 저가형, 저탕식 온수기가 주 시장이었 기 때문에, 계속해서 가열해야하는 불필요함 이 있었다. 따라서 동사에서 순간식 온수기 를 통해 미국시장의 활로를 트였다. 미국의 MS에서는 콘덴싱에서는 1위(전체 마켓비율 에서는 10%)이다. 러시아의 경우 2012년 현 지법인을 설립하여 영업중이다. 2014년은 유럽지역을 개입하여 런던에 현지 법일을 설립 하여 운영하고 있다.

(The company is a specialized manufacturer of boilers. It is the largest market share (30%) as 1400K units per year in the domestic boiler market (in Korea). In recent years, they have focused on overseas business rather than domestic ones, which is based on the average domestic growth rate. They entered the following markets each year. (Beijing, Shanghai, the United States and Russia in 2008, and in the year 2014 and Europe). In 2006, they entered the Shanghai market at the time of their development with coal only. In the US,  entered the water heater market, not the gas boiler. At the time, there was need to continue heating water when American use the heater in the United States and the heater is low-cost, reservoir-water tank heaters in the U.S. As a result, the company turned to the US market with an impulsive water heater. In the United States, they are the No. 1 in condensing market share(10% in the overall market ratio). In the case of Russia, we have established a branch office in 2012 and are operating. In 2014, the local law was established and operated in London through the European region. )

산업분석 -중국: 메이가이치(煤改氣)와 PNG 라인 구축

한국정부만큼이나 중국정부 또한 미세먼지 에 대해 고심하고 있다. 특히 봄철에 발생하 는 미세먼지의 약 40%정도가 가정발전으로 인한 요인이라는 보고가 있을 정도로, 가정 발전으로 인한 미세먼지 감축에 초점을 두고 있다. 메이지가치(석탄개조사업)는 대기오염 이 심한 '2+26'개의 도시의 석탄발전을 가스 발전이나 전기발전으로 하여 대기오염을 줄 이려고 하는 사업이다. 이 사업에 따라, 중 환차익으로 인한 영업 이익율 증가 예상 중국 공장의 CAPA 증가로 수익발생 기대 2Q 계절적 비수기보단 3Q, 4Q에 기대. 중국적부는 일부 가스보일러에 설치에 대한 보조금을 지급하거나, 일부 도시에 새롭게 건 축되는 아파트에 한해 에너지 효율 2등급 이 하의 보일러는 설치가 금지되어있다. 한편 가스보일러발전에는 가스 파이프 인 프라가 필요한데, 중국이 이에 대해서도 호의적이다. PNG1) 라인을 구축하고 있고 AIIB 에서도 상당한 규모의 자금을 투자받아 사업 을 진행하고 있다.

(As much as the Korean government, the Chinese government is also struggling with fine dust. It is reported that about 40% of the fine dust generated in spring is the cause of home power generation, so the Chinese government is focusing on the fine dust reduction due to home power generation. Maigaichi (coal generation escape project) is a project to reduce air pollution by gas power generation and electric power generation in coal generation of 2 + 26 'cities with severe air pollution. According to this project, the operating profit margin of Kyung Dong Navien is expected to increase. I expected to increase in CAPA in China plant and expected high profits to be in 3Q and 4Q rather than seasonally low in 2Q. The national government of China will provide subsidies for installation in some gas boilers or, in some newly built apartments in cities, Boiler installation is prohibited. The Chinese government are subsidizing the installation of some gas boilers or, in some newly built apartments in some cities, they prohibited to install boilers below the energy efficiency level 2. On the other hand, gas boiler generation requires gas pipes, which is also favorable for China. AIIB has invested a considerable amount of money in the business.)



중국'2+26개 도시의 메이지가치사업(석탄개 조사업'은 2019년까지 지속된다. 석탄발전으 로부터 탈피하여 가스발전 등 고효율 에너지 발전으로 바뀌어간다는 것이다. 최근 이 사 업이 진행중이지만, 시진핑 정부의 정치적 이슈(2기 출범)으로 인사이동이 이루어졌고, 인프라구축에 대한 입찰공고가 지연되었기 때문에 1분기의 비수기영향과 더불어 매출이 둔화되었다. 2018년 7월 현재 입찰공고가 어려건 진행되고있고, 이에 따른 경동나비엔 의 매출이 증가될 예상이다. 그리고 중국 전 체적인 보일러 시장의 크기는 그대로지만, 동사가 차지할 MS비율면에서는 조금 이점이 있을 것이라고 관계자는 말하였다. 또한 최 근 시진핑주석이 이 사업에 대한 컨퍼런스에 참여하였는데, 메이지가치 사업에 대해 긍정 적으로 평가하였고, 계속 이어져야할 사업이 라고 코멘트 했다는 점에서도 주목할 만하 다. 중국정부는 ‘2+26개’의 도시에 5년내 가스 보일러 보급률을 50%로 목표로 하고 있다.

(China's Maigaichi Project in 2 + 26 Cities (Coal Replacement Project) will continue until 2019. It is going to change from coal power generation to high-efficiency energy generation such as gas power generation. Although this business is in progress, sales have slowed in 1Q due to weak seasonality due to the personnel shift to the political issues of the Si Jinping government (the launch of the second phase) and delayed bid announcement for infrastructure construction. As of July 2018, bidding announcements are being made on a small scale and sales of Kyungdong Navien will increase. And the size of the overall Chinese boiler market remains the same, but the company said it will have some advantages in terms of the percentage of MS that the company will occupy. It is also noteworthy that recently, the commenter of SijingPing participated in the conference on this project, positively evaluated the value of the Maigaichi , and commented that it is a project to be continued. The Chinese government has set a goal of 50% gas boiler penetration in '2 + 26' cities within five years.)




한국

미세먼지 수혜 정책.. 과연 수혜?

2016년 6월에 미세먼지 관리 특별대책이 발표되었다. 그 다음해 역시, 2017년 미세먼지종합대책이 발표되었는데, 전년도에 비해 대동소이하지만 골자는 아래와 같다. 두 정책 모두 미세먼지 감축을 목표로 하고있지만, 차이라면 새로이 발표된 대책에는 1) 민감층 보호, 2) 2020년까지의 기간을 2022년까지, 3)기존 예산을 약 5.5조원에서 7.2조원으로 확대, 4)전국단위 확대+취약계층이다. 그러나, ‘보일러와의 연계성’ 측면에서 확인 되지는 언급되지 않았고, 직접적인 수혜는 없어 보인다. 그럼에도 보일러 업계에서 참고할만한 정책은 ‘저녹스 (NOx)보일러 교체사업’이다. 저녹스(NOx)에서 NOx는 미세먼지의 2차 생성물질이고, 서울을 기준으로 가정발전할 때 많이 발생되는 것으로 보고되어지고 있다. 이에 지자체와 중앙정부가 1:1비율로 기존 보일러에서 ‘친환경 콘덴싱/저녹스보일러’로 교체시에 보조금을 지원하고 있다. 참고로 저녹스보일러는 일반 보일러에 비해 단가가 15~20만원정도 비싸지만, 이 갭을 보조금이 충당해주고 있다. 서울시의 기준으로 저녹스보일러 교체사업에 대한 목표 교체수를 2020년까지 증가시키고 있고, 2018년기준으로는 이미 교체 목표량을 충족했다.

안타깝게도, 서울시와 경기부의 수도권 지역에서 시행하는 보조금사업이며, 보조금 규모가 약 20억정도 추산이 되기에, 매출액에 큰
영향을 주지는 않지만, 전국단위로 활성화될 수 있다는 가능성을 열어두고, 주목해볼만 한 정책이다. 참고로 저녹스보일러/친환경보일러 기준에해당하는 동사의 모델은 ‘한국환경산업기술원’에서 확인 가능하다.2)
(Korea - Do fine dust measurment benefit Kyung Dong Navien?
In June 2016, special measures for fine dust management were announced. In the following year, too, the fine dust comprehensive measures were announced in 2017, and it is compared to the previous year, but the main points are as follows. Both policies aim to reduce micro dust (fine dust), but there are small difference between them, the newly announced measures will include 1) protection of sensitive floors, 2) the period until 2020 until 2022, 3) expansion of existing budget from about 5.5 trillion won to 7.2 trillion won, 4) expansion of the national unit + vulnerable class. It is reported that NOx is a second generation material of fine dust in the term of NOx, and it is reported that it is generated when home power generation is based on Seoul. Therefore, local governments and the central government are subsidizing the existing boilers at a ratio of 1: 1 when they are replaced with "environment-friendly condensing or low-NOx boilers".
For reference, the low price of the low-NOx boiler is about 15 ~ 200 thousand won higher than a general boiler, but the subsidy covers this gap. As of Seoul, the goal is to increase the number of replacement targets for the low-NOx boiler replacement business by 2
By 2018, the replacement target has already been met. Unfortunately, this is a subsidy project implemented in the Seoul metropolitan area and Kyonggi province, and the amount of subsidy is estimated at about 2 billion won. It does not affect actually, but it is a policy worthy of notice, opening the possibility that it can be activated nationwide. For reference, the company's model, which corresponds to the low-NOx boiler / eco-friendly boiler standard, can be confirmed at the Korea Environmental Industry & Technology Institute. (URL: http://www.keiti.re.kr/site/keiti/main.do))


회사 분석
-국내 시장 분석
국내의 경우 매출액은 신규아파트의 공급의 한계로 향후 성장 가능성은 보수적이다. 한국은 약 140만대의 보일러시장이 있는데, 이중의 80%는 교체로 인한, 20%는 신규 공급물량이다. 신규 공급물량에 대해서는 영업 마진이 좋지 않지만, 교체로 인한 영업마진은 기대가 되는 정도이다. 국내 보일러업계제품들의 보일러 평균수명은 약 8~10년정도이다. 1기 신도시계획으로 아파트 붐이있던 2000년 전후로 2번째 교체수요가 타나날 수 도있다. 동사는 신규 공급물량은 줄어들 것으로 예상하지만, 교체수요가 증가할 것으로 예상하여 영업마진에 수혜를 볼 것으로 예상했다.
(Company analysis
- Domestic market analysis
Domestic sales are conservative due to the limited supply of new apartments. There is about 1.4 million boiler market in Korea, 80% of which is replaced and 20% is it. Although the operating margin is not good for new supply volume, the replacement margin is slightly expected. The average life span of domestic boiler industry boilers is about 8 ~ 10 years. With the first new city plan in Korea, there may be a replacement demand around the 2000s when the apartment boom was in place. The company expects new supply volume to decline but expects replacement demand to increase, benefiting from the operating margin.)


-중국시장 분석
중국에서의 보일러 업계는 약 200업체가있다. 큰 파이를 다 같이 작게 나눠먹는 형태인데, 1~3위는 자국 브렌드이며 4위는 유럽브렌드, 5위는 린나이, 동사는 10위정도된다(MS 2%) . 2018년 1Q 중국 가스인프라지연과 관계없이 동사는 MS에 변화는 크게 없을 것이라 예상된다. 아주 소폭 상승하는 정도이겠지만, 향후 전체 보일러시장이 커짐에 따라 수혜가 예상된다. 관계자는 중국매출에 대해 작년 매출보다 자신있다고 하였고, 순차적으로 유의미한 매출이 나올 것이라고 예상하였다. 동사의 중국 관련 비즈니스 유통망은 2가지이다. 하나는 직접입찰 방식이고, 다른 하나는 다른 회사의 입찰해서 간접적으로 수주를 받는다. 2018년도도 2017년도와 마찬가지로 위와 같은 방법으로 입찰한다. 최근, 중국 지역 내 가스회사들이 가스보일러를 직접 설치하기도 하였는데, 이 부분에 대해서도 동사는 물량을 확보하려고 노력하고있다고 밝혔다. 예를들어 차이나 가스라는 가스회사가 있는데 이 회사의 지분을 SK가 가지고 있어 SK를 통하여 입찰을 노력하는 모습을 보인다. 2Q의 영업이익율은 1Q나 2Q나 별로 다를바가 없을 것이라는 것이 시사되었다. 하지만 환이익이 올라가면서 하반기 실적에 영업이익율이 증가할 것으로 예상한다.
- China Market Analysis
There are about 200 boiler companies in China. The big pie is divided into smaller portions. The first to third is the domestic brands, the fourth is the European brand, the fifth is the Rinnai, and the tenth is Kyung Dong Navien (MS 2%). Regardless of the delay in the Chinese gas infrastructure in 1Q 2018, the company is unlikely to change significantly. The boiler market is expected to increase slightly, but it is expected to benefit as the entire boiler market grows. The official of KDN said that China sales were more confident than last year's sales and that sales would come out sequentially. 
There are two types of business distribution networks in China. One is direct bidding and the other is indirectly bidded by another company. As in the case of 2017, we will bid in 2018 as above. In recent years, gas companies in China have installed gas boilers directly. And, the company official said it is trying to secure the volume through it.  For example, there is a gas company called China Gas, SK group owns a stake in the company.  The 2Q operating margin should not be much different from 1Q or 2Q. However, we expect the operating profit margin to rise in 3Q  /4Q 2018 as the profits increase.

-북미시장 분석: 이익율이 증가할 것으로 예상한다. 

북미는 온수기로 약 15%정도 매출을 성장시키고 있다. 2018년 1Q의 경우 14%정도 성장하였는데, 2Q의 경우 비수기이지만, 환이익(달러강세)로 5%정도 가산하여 20%의성장률을 보일 것이라 예상된다. 지역별 영업이익 따지면, (기준일을 못들었지만..) 국내 영업이익은 국내가 3040, 북미가 2400, 러시아 350, 중국 777, 기타 130억이었다. 북미에서도 2018년 2Q부터 나타났던 달러 강세로 동사의 영업이익율은 더좋을 것으로 예상된다.

-North American market Profitability is expected to increase.

North America is growing its sales by about 15% with a water heater. In 1Q 2018, the company's 1Q growth was about 14%. In 2Q 2018, it is in the offseason, but it is expected to grow 20% YoY by adding 5% to the won (strong dollar). Domestic operating profits were 3040 billion in Korea, 2400 billion in North America, 350 billion in Russia, 777 in China, and 13 billion in other operating profits. In North America, the operating profit margin is expected to be even better due to the strength of the dollar from 2Q08.


 -유럽의 경우

자국브렌드 선호, 진입이 어려움

- In Europe

European prefer a domestic brand. The company is difficult to enter the EU's market



투자판단의 도움을 주는 참고자료일 뿐, 매수/매도에 대한 의견은 없습니다. 작성자는 2018년 7월 8일 현재 경동나비엔 종목의 발행주식을 유통주기준 1% 이상 보유하고있지 않습니다.

This report has been prepared for informational purposes only and is not offered as advice on strategy. As of July 8, 2018, the author does not own more than 1% of the issued shares of Kyong-dong Navien as of the end of the reporting period.





반응형




파이썬에서 데이터프레임은 자체적으로 지원하지 않기 때문에, 데이터를 분석하는 분석가 입장에서는 판다스 객체를 따로 배워야한다. 판다스 객체를 핸들링하는 방법이 여러가지 있는데, 어떤 메소드들이 있고, R과 SQL에 익숙한 사용자들이 비교하기 쉽게 이해하는게 기억에 쉬울 것 같아 아래의 컨텐츠를 작성했다.



Pandas Series 객체

Pandas Series는 인덱싱된 1차원의 배열이다. 

리스트나 배열로 부터 만들 수 있다. 앞에 인덱싱이 있기 때문에, 데이터프레임처럼 생겼는데 사실은 1차원이다. 


1
2
3
4
5
6
7
8
9
10
import pandas as pd
data = pd.Series([1,5,4,3,2])
data

--출력결과--
0    1
1    5
2    4
3    3
4    2
dtype: int64
cs


pd.Series.values : 이 시리즈에서 인덱싱을 제외하고 value값만 찾고싶으면 pd.Series.values 함수를 사용한다.

pd.Series.index : 마찬가지로, 시리즈에서 인덱싱을 출력하고 싶으면 pd.Series.index을 이용한다.

Indexing and Slicing: NumPy 배열, 리스트처럼 인덱싱이 가능하다.




판다스 데이터프레임 조작을 위한 코드 정리 (SQL과 R과의 비교)


SELECT

Dataframe.column :시리즈로 출력

Dataframe['columns']

Dataframe[['columns']]: 출력하고자 하는 컬럼이 2개 이상일 때는, 2개 이상의 컬럼을 리스트로 묶어줘서 파라미터로 넣어주어야한다. 이는 데이터프레임 형식으로 출력된다.


select 문에서의 출력컬럼의 정의

예를 들어, SELECT Age, Multiple, Age * Multiple as Age_Multi FROM Demographic 이라는 SQL식이 있다고하자. 이런것과 마찬가지로 파이썬에서 바로 연산이 가능하다. 즉, 행별로 곱한 출력한 값이 나타난다

1
2
3
dataset['Age*Class'= dataset.Age * dataset.Pclass
 
 
cs




WHERE (equiv 조건)

df[df['찾는칼럼명']== 찾고자하는 변수]

2개 이상의 조건절

df[(df['찾는 칼럼명'] == 찾고자하는 변수) & or | (df['찾는 칼럼명'] == 찾고자하는 변수)) 


위의 조건절을 non-equivalent하게 찾고자한다면, ==대신에 ><등 의 부등식을 사용하면된다


pd.where(condition, other, inplace)

inplace: 매개변수를 True을 설정하면 호출된 데이터프레임 자체를 수정하고, 아무런 값도 반환하지 않는다.



loc을 이용한 데이터 조건활용

df.loc[데이터 조건절, '출력하고자하는 데이터 컬럼명']



GROUP BY

df.groupby('칼럼명', as_index=False)

as_index: 그룹으로 출력된 행들을 인덱스를 붙이고자할 때, as_index = False 인경우는, SQL style 처럼 그룹화된 결과를 출력하고자 할 때


GROUP BY value count

month_users.groupby(['serviceId']).size()


ORDER BY

df.sort_values(by='정렬할 칼럼명', ascending = True/False)



Pandas describe function


example

df.describe()

include = 'all' : 결과내 낼 수 있는 모든 변수들을 출력


Count(distinct): 

pd['column'].value_counts() : 카테고리 변수의 각 변수값이 몇 개가 있는지 확인할 수 있음


WHERE 

ex)

df[df.컬럼 == '벨류']


Delete

df.drop('삭제하고자하는 칼럼명, axis=1)

axis=0으로 지정하면 인덱스를 날리는거고, axis는 컬럼을 날리는 것






R과 비교

1. R: colnames(df)

Python: print(df.columns.values)


2. R: head(df)

Python: df.head(숫자)

숫자: head출력시, 앞에서부터 출력되는 행의 수


3. 데이터 구조 

데이터프레임의 구조, 데이터타입을 볼 때

R: str(df)

Python: df.info()


4. 데이터 요약 (통계량의 요약)

R: summary(df)

Python: df.describe(parameter)

1) include= All

2) include = ['O'] : 카테고리 변수에대한 빈도를 포함해서 보여줌


5. 히스토그램

R: hist(칼럼명, breaks=나눌 조각수)


Python


import seaborn as sns

graph = sns.FacetGrid(dataframe, col = '컬럼명') : 여러개의 플롯을 동시에 표현할 때 사용, col = 컬럼별 데이터를 서브셋하여 나눠서 플로팅할 경우

2) Map

graph.map(function, *'플롯할 데이터의 컬럼명', bins= '숫자)

3) add_legend()

graph.add_leggend(): 레전드 추가


참고로 '*' asterisk은 인자를 입력할 때, 임의의 숫자대로 입력이 가능한 상태이다. 예를 들어 def save_rank(*arg): print(args)에 인자를 save_rank('a','b','c')이렇게 넣으면 하나씩 맞춰서 출력한다. 이 기능을 unpacking이라고 한다. 리스트에 있는 값들을 하나씩, 두개씩, 또는 임의의 개수 대로 입력하고자할 때 사용한다.






Pandas 기타 함수

pd.cut() : 정렬된 데이터들을 X개의 구간으로 나누고자할 때 해당함수를 사용한다. 데이터가 연속형 데이터일 때, 사용하기 좋다. 순서일 때도 사용할수는 있기는 하다. 사용을 pd.cut(array-like data, bins=자르고자 하는 구간 수)


Pandas_series.mode(): 범주형 변수인 경우에 시리즈로 나타낸다음, '.mode()' 속성을 입력하면, 해당 리턴은 범주형 변수의 카테고리가 리턴이 된다.

반응형

'Data science' 카테고리의 다른 글

Reshape and Pivot table  (0) 2019.03.08
SVM (Support Vector machine)  (0) 2019.02.23
Decision Tree (의사결정나무)  (2) 2019.02.15
Category data handling  (0) 2019.02.14
kNN model (k-Nearest neighbor model)  (0) 2019.02.13





대부분 우리가 알고있는 데이터의 형태는 Label encoding이다. 예를 들어서, 나라이름과 같이 나라이름이 명시적으로 기록되어있는 경우가 Label encoding이다. 그러나 이는 분석 단계에서는 Label encoding은 String dtype으로 분석 단계에서 계산하기에는 어렵다. 계산가능한 타입으로 만들어야 분석에서 사용할 수 있기 때문이다.


결과변수가 array 형태를 원한다면 sklearn.preprocessing 을 이용한다.


카테고리의 개수만큼 만들지말고 ,N-1개 만큼 만드는것을 추천한다. 추후에 선형회귀 등을 돌릴 때 변수를 N개로 만들면, 

n개에 대한 식이 생겨서 다중공선성이 생깄다. 예를 들어 3변수를 만들면,  x1+x2+x3 = 1이라는 식이 있기에 공선성이 생길수밖에 없다.



Mapping


이 방식의 문제는 각 카테고리변수를 서열척도로 변경하여 각각 1,2,3,4에 매핑한다는 것이다. 그렇기에 1에 매핑된 범주형변수는 2에 매핑한 변수보다 1/2이 크기가 작다고 머신러닝이 계산할 수 있다. 그렇기에 원 -핫인코딩을 하는 것이 권장된다.

1
2
3
4
housing_cat = housing["ocean_proximity"]
housing_cat_encode, housing_categories = housing_cat.factorize()
housing_cat_encode # array([0, 0, 1, ..., 2, 0, 3])
housing_categories  # Index(['<1H OCEAN', 'NEAR OCEAN', 'INLAND', 'NEAR BAY', 'ISLAND'], dtype='object')
cs






Pandas 내부의 함수를 이용한 변환



컬럼수준에서 One-hot encoding을 원한다면, Pandas의 get_dummies 을 이용한다.


get_dummies(data)

data는 array, series, dataframe모두 가능하다.

return 값도 데이터 프레임의 형식을 갖는다.



Example)

1
2
3
4
5
6
7
8
# 성별(SEX)컬럼을 one hot encoding한다
one_hot = pd.get_dummies(df['sex'])
 
# 원래 있던 칼럼을 삭제한다.
df = df.drop('sex',axis = 1)
 
# 원래 잇던 테이블에 새로만든 one_hot 데이터프레임을 조인한다. (SQL 조인과 관계없이 순차적으로 column bind)하는 것
df = df.join(one_hot)

cs


여러개 컬럼을 동시에 one-hot encoding

1
2
3
4
onehot_df = pd.get_dummies(df, columns=['nation''genre','limited_age'], drop_first=True)
len(onehot_df.columns) # 컬럼의 개수가 늘어난 것을 알 수 있다.
 
 
cs


반응형

'Data science' 카테고리의 다른 글

Reshape and Pivot table  (0) 2019.03.08
SVM (Support Vector machine)  (0) 2019.02.23
Decision Tree (의사결정나무)  (2) 2019.02.15
Pandas Dataframe Manipulation  (0) 2019.02.14
kNN model (k-Nearest neighbor model)  (0) 2019.02.13

KNN

:비선형 기법. 지도학습기법. 

결정 분계선(Decision boundary)을 정의하기위해서, 이 결정분계선이 피쳐들의 선형결합이어야 한다는 가정을 필요로 하지 않는다.  또한, 인스턴스 기반 학습(instance-based learning, memory-based learning)이기 때문에, 모수가 없다(주석 참고). 그렇기 때문에, 이전에는 아무런 학습 작업이 없고, 모형에 대한 아무런 파라미터가 없어서 게으른 학습(Lazy learning)이라고도 불린다. 따로 모집단을 추론하지 않고, 필요도 없으니 비모수적(non-parameteric) 인 방법이며 분류와, 회귀(regression)을 위한 방법이다. 또한 레이블이 있는 상태에서 분류를 하기 때문에, 지도학습모델이다. 레이블이 있는 상태에서, 모델에대한 평가를 할 수 있다. 가령, 원래 클레스가 3개가 있다고 했을 때, 새로운 unseen data가 들어왔을 때, 이 새로운 데이터가 어느 그룹으로 결정될지 알 수 있기 때문에, 지도학습이다. 


어떤 도서에서는 기계학습의 정의는 '어떤 Task을 반복적으로 시행되었을 때, 퍼포먼스가 증가하는 학습 방식'이라고 정의해 놓는 책도있지만, KNN 은 이러한 점진적인 개선이 이루어지 않는 모델로 보인다. [알고리즘으로 배우는 인공지능, 머신러닝, 딥러닝 입문]



kNN은 새로운 데이터가 어느 그룹에 속하는지 분류하기 위해, 그 데이터에 가장 가까이에 있는 학습된 데이터가 속한 그룹을 알아보는 것이다. 즉, 거리계산을 통해서, 유사도를 평가해서 새로운 변수를 평가한다는 것이다. 즉, 변수가 유사한 것 끼리 묶는다는 것인데, 이 변수들을 Feature space라고 한다. K는  알고리즘이 얼마나 많은 이웃을 검사해야하는지를 정하는데, 만일 K가 7이었다면, 7개의 가까운 점을 검사하는 것이다. 또한 7개가 모두 똑같은 가중 값을 갖는다. 또한, k가 짝수이면 안된다. k가 짝수이면, 안되고 홀수여야한다. 짝수를 지양한다. 


Common Distance Metrics:



유클리드 거리(Euclidean distance): 연속형 분포일 때 사용. 



해밍 거리(Hamming distance): overlap metric. 겹치는 것들이 있는 변수들일 때 활용한다. 

e.g) SNS와 MMS는 거리가 2이며, Hole과 Hale은 거리가 1이다.


Discrete Metric (Boolean metric): X=Y이면, 거리가 0, 다르면 1 이런식이다.






 - kNN regression: 종속변수가 자료의 특성중에 하나 일 때, 종속변수는 k개의 근접한 이웃들의 값의 평균값

 - kNN classificaion: 종속변수(output)이 class일 경우에는 분류분석





(Source:http://2.bp.blogspot.com/-EK4tA2525EM/U-c6Q4jJuwI/AAAAAAAADjw/hdqRXuunpnQ/s1600/ knn.png)



kNN은 인스턴스 기반의 러닝 또는 메모리 기반 러닝이라고도 한다. 왜냐하면, 학습을 미리 하지 않고 미뤄두고 있다가 새로운 데이터의 테스크 요청이 오면 그때  분류를 시작하기 때문이다. 즉, 학습에 필요한 데이터를 메모리에 기억만 하고, 인스턴스가 발생할 때, 일반화하는 일을 시작한다. 이렇게 KNN 모델을 만드려면 3가지가 필요한데, 1) Feature space(training data), 2) Distance metrics, 3) Value of K이다. 이는 KNN모델을 만들 때, 파마리터가 되기도 할 것이다. Feature space는 변수들을 고정된 개수의 백더로 만드는 것이고, Distance metric은 거리를 측정하는 방식들을 의미하며, K는 몇개를 뽑을 것인지를 정해야한다는 것이다.


K에 따른 Bias, Variance

분류분석인 경우, K가 3이면 가장 가까운 3점을 한 원안에 담는다. 이 원안에 같은 클레스인것이 많은 클레스로 New instance(문제)를 분류한다. 그러므로, 모델에서 K를 어떤 수로 정하느냐가 모델의 퍼포먼스를 결정한다. K가 너무 작으면 bias가 작을 수 있지만, variance는 클 수 있다. 왜냐하면, k가 작다는 것은, 노이즈에 민감하단 얘기고, 그렇게되면 너무 민감하게 모델이 적용되서 오버피팅이 될 수 있다. 따라서, 모든 개별 개별 하나의 인스턴스를 고려하기떄문에 Bias는 작고 Variance는 크다. 반대로, K가 너무 크면, Bias는 클 수 있지만, Variance는 작을 수 있다. 인접주변의 인스턴스를 모두 포함하기 때문에, 다른 클레스도 다 같은 군으로 분류할 수 있다. 이는 Bias가 크고, Variancer가 작다.



Notes

정규화: 퓨쳐들의 사이에 계산을 해야할 떄, distance의 scale을 정규화하여 사용하여야 한다.(Normalization) 만약 키와 소득이 피쳐라면, 키는 빼봤자 숫자가 100이하로 차이나서 별로 차이가 안나겠지만, 소득은 100만 1000만단위이기 떄문에 차이가 많이난다. 


Charateristics

1. 비교적 적용이 간편한 편이지만, 모델을 계산하는게 리소스를 너무 많이 잡아 먹을 수 있다. 왜나하면, 군집할 떄 모든 거리를 측정해야하기 때문에 컴퓨팅 파워가 필요할 수 있다. 

2. 트레이닝을 포함하지 않아, 비교적 유연한 방식의 분류기법이다.

3. 노이즈에 의해서 정확도가 급격히 낮아질 수 있다.

4. 고차원의 데이터인 경우(=피쳐수가 많을 경우) 계산량이 많아지고, 거리를 측정하기가 어려워서 퍼포먼스가 점점 안좋아 질 수 있다.

5. 큰 데이터세트(인스턴스가 많은) 경우에 사용할 경우, 계산량 많이 발생할 수 있다. 많은 데이터포인트(인스턴스)와 계산해야되기 때문에... (1번이랑 유사)

6. 범주형 변수에서 잘 작동하지 않을 수 있다. 범주형 변수의 거리를 측정하는게 애매모호 하다


K-Means clustering vs K-NN 비교

K라는 값이 같이 들어가서, 머신러닝에서 주로 혼동되는 개념이다. 비교는 아래와 같다


K-means 

KNN 

비지도학습(Unsupervised learning) 

지도학습(Supervised learning) 

Clustering method

Classification, Regression 

K: 원하는 클러스터링의 집합(군집 집합의 갯수)

K: 새롭게 문제가 주어졌을 때, 근접한 인스턴스들의 갯수

(이를 이용해서 분류, 예측문제를 해결한다)



Model evaluation metric


분류문제의 평가는 보통 Confusion matrix을 통한 계산값들을 평가한다

 

True  positive

True Negative 

Predictive Positive

TP 

FP

Predictive Negative

FN

TN








*Instance based learning: 명시적으로 일반화 하는 알고리즘이 아니라, 새로운 문제(인스턴스)가 들어왔을 때까지 다른 인스턴스들을메모리에 저장해놓는다. 

** Bias: 머신러닝 모델이 모든정보를 고려하지 않아서, 잘못된 학습을 하는 것. Traing set을 맞추지 못하는 것을 바이어스라고 부른다. (High bias: 너무 모델이 심플 .underfitted to training set)
*** Variance: 머신러닝 모델이 Test set을 맞추지 못하는 것이 variance라고 부른다. (High variance: 너무 모델이 복잡. overfitted to training set )
Feature space: 실제 데이터를 vector형태로 같은 고정된 길이의 벡터로 변환하여 만든 데이터


반응형

'Data science' 카테고리의 다른 글

Reshape and Pivot table  (0) 2019.03.08
SVM (Support Vector machine)  (0) 2019.02.23
Decision Tree (의사결정나무)  (2) 2019.02.15
Pandas Dataframe Manipulation  (0) 2019.02.14
Category data handling  (0) 2019.02.14

+ Recent posts