Unsupervised learning allows us to approach problems with little or no idea what our results should look like. We can derive structure from data where we don't necessarily know the effect of the variables.

We can derive this structure by clustering the data based on relationships among the variables in the data.

With unsupervised learning there is no feedback based on the prediction results.

Example:

Clustering: Take a collection of 1,000,000 different genes, and find a way to automatically group these genes into groups that are somehow similar or related by different variables, such as lifespan, location, roles, and so on.

Non-clustering: The "Cocktail Party Algorithm", allows you to find structure in a chaotic environment. (i.e. identifying individual voices and music from a mesh of sounds at a cocktail party).

Supervised Learning

In supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is a relationship between the input and the output.

Supervised learning problems are categorized into "regression" and "classification" problems. In a regression problem, we are trying to predict results within a continuous output, meaning that we are trying to map input variables to some continuous function. In a classification problem, we are instead trying to predict results in a discrete output. In other words, we are trying to map input variables into discrete categories.

Example 1:

Given data about the size of houses on the real estate market, try to predict their price. Price as a function of size is a continuous output, so this is a regression problem.

We could turn this example into a classification problem by instead making our output about whether the house "sells for more or less than the asking price." Here we are classifying the houses based on price into two discrete categories.

Example 2:

(a) Regression - Given a picture of a person, we have to predict their age on the basis of the given picture

(b) Classification - Given a patient with a tumor, we have to predict whether the tumor is malignant or benign.

Arthur Samuel의 머신러닝 정의

- 최초의 머신러닝 기반 체커게임을 만든 사람.

  • 컴퓨터가 명시적(explicit) 프로그램 없이도 스스로 학습할 수 있는 것.

 

Tom Michell의 머신러닝 정의

- Carnegi Mellon 대학교 교수

  • 학습과제(well-posed learning problem) 중심으로 정의
  • 프로그램이 일정 수준의 작업 성능(P)을 가지고 작업(T)을 수행한다고 했을 때 경험(E)이 증가함에 따라 작업(T)를 수행하는 성능(P)이 향상될 때 이 프로그램이 경험(E)으로부터 학습(learn)을 했다고 표현함.

 

객체지향 프로그래밍 언어로 기술된 프로그램의 기본 구성 요소는 객체(object)이다.

객체는 다시 데이터와 함수들로 구성되는데 이와 같은 환경에서 프로그램이 하는 일은 그 안에서 기술되어 있는 객체들 간의 관계로 설명된다.

 

객체지향 언어들은 모두 캡슐화(encapsulation), 다형성(polymorphism), 상속성(inheritance)의 세가지 특징을 공통으로 가지고 있다.

 

1.캡슐화란,

데이터와 그것을 다루는 코드를 연관시키는 구조를 말한다. 이렇게 연관된 데이터와 코드를 객체라고 부른다.

객체 안에 있는 데이터와 코드는 공개(public)될 수도 있고, 비공개(private)될 수도 있다.

비공개된 데이터와 코드는 해당 객체 안에서만 액세스가 가능하다.

공개된 데이터와 코드는 외부에서 액세스가 가능하다.

일반적으로, 객체의 공개 부분은 객체의 비공개 부분과 외부와의 인터페이스 역할을 수행한다.

 

2. 다형성이란,

다양한 형태라는 의미를 가지며 하나의 이름을 연관된 두가지 이상의 용도로 사용할 수 있게 하는 성질이다.

객체지향 프로그래밍에서 다형성은 하나의 이름으로 여러 동작들을 저장할 수 있게 해준다.

여러 동작 중에서 특정 동작을 선택하는 것은 주어진 데이터 타입에 의해 결정된다.

보다 일반적인 다형성의 개념은 "하나의 인터페이스에 여러 방법들"로 설명할 수 있다.

이 말은 비슷한 종류의 동작들을 같은 인터페이스로 설계함으로써 복잡성을 줄여주는 이점을 가진다.

 

3. 상속성이란,

하나의 객체가 다른 객체의 특성을 이어 받을 수 있게 해주는 것이다.

하나의 객체는 다른 객체로부터 일반적인 성질들을 상속받고, 이에 자신에게 필요한 특징들을 추가할 수 있다.

'소프트웨어 > C++' 카테고리의 다른 글

[C++] 객체지향의 개념  (0) 2021.12.01
[C++] 연산자  (0) 2020.04.29
[C++] 데이터 타입  (0) 2020.04.25

+ Recent posts